|
59 | 59 | 'formatter': None,
|
60 | 60 | # Internally stored as an int to simplify comparisons; converted from/to
|
61 | 61 | # str/False on the way in/out.
|
62 |
| - 'legacy': sys.maxsize} |
| 62 | + 'legacy': sys.maxsize, |
| 63 | + 'override_repr': None, |
| 64 | +} |
63 | 65 |
|
64 | 66 | def _make_options_dict(precision=None, threshold=None, edgeitems=None,
|
65 | 67 | linewidth=None, suppress=None, nanstr=None, infstr=None,
|
66 |
| - sign=None, formatter=None, floatmode=None, legacy=None): |
| 68 | + sign=None, formatter=None, floatmode=None, legacy=None, |
| 69 | + override_repr=None): |
67 | 70 | """
|
68 | 71 | Make a dictionary out of the non-None arguments, plus conversion of
|
69 | 72 | *legacy* and sanity checks.
|
@@ -119,7 +122,7 @@ def _make_options_dict(precision=None, threshold=None, edgeitems=None,
|
119 | 122 | def set_printoptions(precision=None, threshold=None, edgeitems=None,
|
120 | 123 | linewidth=None, suppress=None, nanstr=None,
|
121 | 124 | infstr=None, formatter=None, sign=None, floatmode=None,
|
122 |
| - *, legacy=None): |
| 125 | + *, legacy=None, override_repr=None): |
123 | 126 | """
|
124 | 127 | Set printing options.
|
125 | 128 |
|
@@ -224,6 +227,9 @@ def set_printoptions(precision=None, threshold=None, edgeitems=None,
|
224 | 227 |
|
225 | 228 | .. versionadded:: 1.14.0
|
226 | 229 | .. versionchanged:: 1.22.0
|
| 230 | + override_repr: callable, optional |
| 231 | + If set a passed function will be used for generating arrays' repr. |
| 232 | + Other options will be ignored. |
227 | 233 |
|
228 | 234 | See Also
|
229 | 235 | --------
|
@@ -285,9 +291,10 @@ def set_printoptions(precision=None, threshold=None, edgeitems=None,
|
285 | 291 | """
|
286 | 292 | opt = _make_options_dict(precision, threshold, edgeitems, linewidth,
|
287 | 293 | suppress, nanstr, infstr, sign, formatter,
|
288 |
| - floatmode, legacy) |
289 |
| - # formatter is always reset |
| 294 | + floatmode, legacy, override_repr) |
| 295 | + # formatter and override_repr are always reset |
290 | 296 | opt['formatter'] = formatter
|
| 297 | + opt['override_repr'] = override_repr |
291 | 298 | _format_options.update(opt)
|
292 | 299 |
|
293 | 300 | # set the C variable for legacy mode
|
@@ -1552,6 +1559,10 @@ def _array_repr_implementation(
|
1552 | 1559 | arr, max_line_width=None, precision=None, suppress_small=None,
|
1553 | 1560 | array2string=array2string):
|
1554 | 1561 | """Internal version of array_repr() that allows overriding array2string."""
|
| 1562 | + override_repr = _format_options["override_repr"] |
| 1563 | + if override_repr is not None: |
| 1564 | + return override_repr(arr) |
| 1565 | + |
1555 | 1566 | if max_line_width is None:
|
1556 | 1567 | max_line_width = _format_options['linewidth']
|
1557 | 1568 |
|
|
0 commit comments