Skip to content

Commit e64a202

Browse files
committed
Merge pull request #128 from xray/data-array-repr
Expose more information in DataArray.__repr__
2 parents b386872 + 238cb2a commit e64a202

File tree

2 files changed

+24
-1
lines changed

2 files changed

+24
-1
lines changed

test/test_data_array.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,17 @@ def setUp(self):
2020

2121
def test_repr(self):
2222
v = Variable(['time', 'x'], [[1, 2, 3], [4, 5, 6]], {'foo': 'bar'})
23-
data_array = Dataset({'my_variable': v})['my_variable']
23+
data_array = Dataset({'my_variable': v, 'other': ([], 0)}
24+
)['my_variable']
2425
expected = dedent("""
2526
<xray.DataArray 'my_variable' (time: 2, x: 3)>
2627
array([[1, 2, 3],
2728
[4, 5, 6]])
29+
Coordinates:
30+
time: Int64Index([0, 1], dtype='int64')
31+
x: Int64Index([0, 1, 2], dtype='int64')
32+
Linked dataset variables:
33+
other
2834
Attributes:
2935
foo: bar
3036
""").strip()

xray/common.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,13 @@ def _summarize_attributes(data):
123123
return attr_summary
124124

125125

126+
def _wrap_indent(text, start='', length=None):
127+
if length is None:
128+
length = len(start)
129+
indent = '\n' + ' ' * length
130+
return start + indent.join(x for x in text.splitlines())
131+
132+
126133
def array_repr(arr):
127134
name_str = ('%r ' % arr.name) if hasattr(arr, 'name') else ''
128135
dim_summary = ', '.join('%s: %s' % (k, v) for k, v
@@ -132,6 +139,16 @@ def array_repr(arr):
132139
summary.append(repr(arr.values))
133140
else:
134141
summary.append('[%s values with dtype=%s]' % (arr.size, arr.dtype))
142+
if hasattr(arr, 'name'):
143+
if arr.coordinates:
144+
summary.append('Coordinates:')
145+
for k, v in arr.coordinates.items():
146+
summary.append(_wrap_indent(repr(v.as_index), ' %s: ' % k))
147+
other_vars = [k for k in arr.dataset
148+
if k not in arr.coordinates and k != arr.name]
149+
if other_vars:
150+
summary.append('Linked dataset variables:')
151+
summary.append(' ' + ', '.join(other_vars))
135152
summary.append('Attributes:\n%s' % _summarize_attributes(arr))
136153
return '\n'.join(summary)
137154

0 commit comments

Comments
 (0)