formatArray is designed for two modes of operation: 1. Full output 2. Summarized output
(a, format_function, line_width, next_line_prefix,
separator, edge_items, summary_insert, legacy)
| 778 | return s, line |
| 779 | |
| 780 | def _formatArray(a, format_function, line_width, next_line_prefix, |
| 781 | separator, edge_items, summary_insert, legacy): |
| 782 | """formatArray is designed for two modes of operation: |
| 783 | |
| 784 | 1. Full output |
| 785 | |
| 786 | 2. Summarized output |
| 787 | |
| 788 | """ |
| 789 | def recurser(index, hanging_indent, curr_width): |
| 790 | """ |
| 791 | By using this local function, we don't need to recurse with all the |
| 792 | arguments. Since this function is not created recursively, the cost is |
| 793 | not significant |
| 794 | """ |
| 795 | axis = len(index) |
| 796 | axes_left = a.ndim - axis |
| 797 | |
| 798 | if axes_left == 0: |
| 799 | return format_function(a[index]) |
| 800 | |
| 801 | # when recursing, add a space to align with the [ added, and reduce the |
| 802 | # length of the line by 1 |
| 803 | next_hanging_indent = hanging_indent + ' ' |
| 804 | if legacy <= 113: |
| 805 | next_width = curr_width |
| 806 | else: |
| 807 | next_width = curr_width - len(']') |
| 808 | |
| 809 | a_len = a.shape[axis] |
| 810 | show_summary = summary_insert and 2*edge_items < a_len |
| 811 | if show_summary: |
| 812 | leading_items = edge_items |
| 813 | trailing_items = edge_items |
| 814 | else: |
| 815 | leading_items = 0 |
| 816 | trailing_items = a_len |
| 817 | |
| 818 | # stringify the array with the hanging indent on the first line too |
| 819 | s = '' |
| 820 | |
| 821 | # last axis (rows) - wrap elements if they would not fit on one line |
| 822 | if axes_left == 1: |
| 823 | # the length up until the beginning of the separator / bracket |
| 824 | if legacy <= 113: |
| 825 | elem_width = curr_width - len(separator.rstrip()) |
| 826 | else: |
| 827 | elem_width = curr_width - max(len(separator.rstrip()), len(']')) |
| 828 | |
| 829 | line = hanging_indent |
| 830 | for i in range(leading_items): |
| 831 | word = recurser(index + (i,), next_hanging_indent, next_width) |
| 832 | s, line = _extendLine_pretty( |
| 833 | s, line, word, elem_width, hanging_indent, legacy) |
| 834 | line += separator |
| 835 | |
| 836 | if show_summary: |
| 837 | s, line = _extendLine( |
no test coverage detected