1212"""
1313
1414import inspect
15+ import os
1516from .library import *
1617from .util import *
1718from .util import _is_number
2021from .index import *
2122from .index import _Index4
2223
24+ _is_running_in_py_charm = "PYCHARM_HOSTED" in os.environ
25+
26+ _display_dims_limit = None
27+
28+ def set_display_dims_limit(*dims):
29+ """
30+ Sets the dimension limit after which array's data won't get
31+ presented to the result of str(arr).
32+
33+ Default is None, which means there is no limit.
34+
35+ Parameters
36+ ----------
37+ *dims : dimension limit args
38+
39+ Example
40+ -------
41+ set_display_dims_limit(10, 10, 10, 10)
42+
43+ """
44+ global _display_dims_limit
45+ _display_dims_limit = dims
46+
47+ def get_display_dims_limit():
48+ """
49+ Gets the dimension limit after which array's data won't get
50+ presented to the result of str(arr).
51+
52+ Default is None, which means there is no limit.
53+
54+ Returns
55+ -----------
56+ - tuple of the current limit
57+ - None is there is no limit
58+
59+ Example
60+ -------
61+ get_display_dims_limit()
62+ # None
63+ set_display_dims_limit(10, 10, 10, 10)
64+ get_display_dims_limit()
65+ # (10, 10, 10, 10)
66+
67+ """
68+ return _display_dims_limit
69+
70+ def _in_display_dims_limit(dims):
71+ if _is_running_in_py_charm:
72+ return False
73+ print(_display_dims_limit)
74+ if _display_dims_limit is not None:
75+ min_dim_len = min(len(_display_dims_limit), len(dims))
76+ for i in range(min_dim_len):
77+ if dims[i] > _display_dims_limit[i]:
78+ return False
79+ return True
80+
2381def _create_array(buf, numdims, idims, dtype, is_device):
2482 out_arr = c_void_ptr_t(0)
2583 c_dims = dim4(idims[0], idims[1], idims[2], idims[3])
@@ -1185,7 +1243,7 @@ def to_list(self, row_major=False):
11851243 ct_array, shape = self.to_ctype(row_major, True)
11861244 return _ctype_to_lists(ct_array, len(shape) - 1, shape)
11871245
1188- def to_string (self):
1246+ def __str__ (self):
11891247 """
11901248 Converts the arrayfire array to string showing its meta data and contents.
11911249
@@ -1194,6 +1252,9 @@ def to_string(self):
11941252 You can also use af.display(a, pres) to display the contents of the array with better precision.
11951253 """
11961254
1255+ if not _in_display_dims_limit(self.dims()):
1256+ return self.__repr__();
1257+
11971258 arr_str = c_char_ptr_t(0)
11981259 be = backend.get()
11991260 safe_call(be.af_array_to_string(c_pointer(arr_str), "", self.arr, 4, True))
0 commit comments