Skip to content

Commit 3315155

Browse files
committed
Fix __repr__ pretty printer for graph objs and add tests
1 parent 968567a commit 3315155

File tree

2 files changed

+115
-2
lines changed

2 files changed

+115
-2
lines changed

Diff for: plotly/tests/test_core/test_graph_objs/test_repr.py

+113
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
from __future__ import absolute_import
2+
from unittest import TestCase, SkipTest
3+
import plotly.graph_objs as go
4+
5+
6+
class TestGraphObjRepr(TestCase):
7+
8+
def test_trace_repr(self):
9+
N = 100
10+
scatt = go.Scatter(
11+
y=list(range(N)),
12+
marker={'color': 'green',
13+
'opacity': [e / N for e in range(N)]})
14+
15+
expected = """\
16+
Scatter(**{
17+
'marker': {'color': 'green',
18+
'opacity': [0.0, 0.01, 0.02, 0.03, 0.04, 0.05, 0.06, 0.07, 0.08,
19+
0.09, 0.1, 0.11, 0.12, 0.13, 0.14, 0.15, 0.16, 0.17,
20+
0.18, 0.19, 0.2, 0.21, 0.22, 0.23, 0.24, 0.25, 0.26,
21+
0.27, 0.28, 0.29, 0.3, 0.31, 0.32, 0.33, 0.34, 0.35,
22+
0.36, 0.37, 0.38, 0.39, 0.4, 0.41, 0.42, 0.43, 0.44,
23+
0.45, 0.46, 0.47, 0.48, 0.49, 0.5, 0.51, 0.52, 0.53,
24+
0.54, 0.55, 0.56, 0.57, 0.58, 0.59, 0.6, 0.61, 0.62,
25+
0.63, 0.64, 0.65, 0.66, 0.67, 0.68, 0.69, 0.7, 0.71,
26+
0.72, 0.73, 0.74, 0.75, 0.76, 0.77, 0.78, 0.79, 0.8,
27+
0.81, 0.82, 0.83, 0.84, 0.85, 0.86, 0.87, 0.88, 0.89,
28+
0.9, 0.91, 0.92, 0.93, 0.94, 0.95, 0.96, 0.97, 0.98,
29+
0.99]},
30+
'type': 'scatter',
31+
'y': [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
32+
20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
33+
38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
34+
56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
35+
74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
36+
92, 93, 94, 95, 96, 97, 98, 99]
37+
})"""
38+
assert scatt.__repr__() == expected
39+
40+
def test_trace_repr_elided(self):
41+
N = 1000
42+
scatt = go.Scatter(
43+
y=list(range(N)),
44+
marker={'color': 'green',
45+
'opacity': [e / N for e in range(N)]})
46+
47+
expected = """\
48+
Scatter(**{
49+
'marker': {'color': 'green',
50+
'opacity': [0.0, 0.001, 0.002, ..., 0.997, 0.998, 0.999]},
51+
'type': 'scatter',
52+
'y': [0, 1, 2, ..., 997, 998, 999]
53+
})"""
54+
assert scatt.__repr__() == expected
55+
56+
def test_trace_repr_numpy(self):
57+
try:
58+
import numpy as np
59+
except ImportError:
60+
raise SkipTest("Numpy not installed")
61+
62+
N = 100
63+
scatt = go.Scatter(
64+
y=np.arange(N),
65+
marker={'color': 'green',
66+
'opacity': np.arange(N) / N})
67+
68+
expected = """\
69+
Scatter(**{
70+
'marker': {'color': 'green',
71+
'opacity': array([0. , 0.01, 0.02, 0.03, 0.04, 0.05, 0.06, 0.07, 0.08, 0.09, 0.1 , 0.11,
72+
0.12, 0.13, 0.14, 0.15, 0.16, 0.17, 0.18, 0.19, 0.2 , 0.21, 0.22, 0.23,
73+
0.24, 0.25, 0.26, 0.27, 0.28, 0.29, 0.3 , 0.31, 0.32, 0.33, 0.34, 0.35,
74+
0.36, 0.37, 0.38, 0.39, 0.4 , 0.41, 0.42, 0.43, 0.44, 0.45, 0.46, 0.47,
75+
0.48, 0.49, 0.5 , 0.51, 0.52, 0.53, 0.54, 0.55, 0.56, 0.57, 0.58, 0.59,
76+
0.6 , 0.61, 0.62, 0.63, 0.64, 0.65, 0.66, 0.67, 0.68, 0.69, 0.7 , 0.71,
77+
0.72, 0.73, 0.74, 0.75, 0.76, 0.77, 0.78, 0.79, 0.8 , 0.81, 0.82, 0.83,
78+
0.84, 0.85, 0.86, 0.87, 0.88, 0.89, 0.9 , 0.91, 0.92, 0.93, 0.94, 0.95,
79+
0.96, 0.97, 0.98, 0.99])},
80+
'type': 'scatter',
81+
'y': array([ 0., 1., 2., 3., 4., 5., 6., 7., 8., 9., 10., 11., 12., 13.,
82+
14., 15., 16., 17., 18., 19., 20., 21., 22., 23., 24., 25., 26., 27.,
83+
28., 29., 30., 31., 32., 33., 34., 35., 36., 37., 38., 39., 40., 41.,
84+
42., 43., 44., 45., 46., 47., 48., 49., 50., 51., 52., 53., 54., 55.,
85+
56., 57., 58., 59., 60., 61., 62., 63., 64., 65., 66., 67., 68., 69.,
86+
70., 71., 72., 73., 74., 75., 76., 77., 78., 79., 80., 81., 82., 83.,
87+
84., 85., 86., 87., 88., 89., 90., 91., 92., 93., 94., 95., 96., 97.,
88+
98., 99.])
89+
})"""
90+
91+
assert scatt.__repr__() == expected
92+
93+
def test_trace_repr_numpy_elided(self):
94+
try:
95+
import numpy as np
96+
except ImportError:
97+
raise SkipTest("Numpy not installed")
98+
99+
N = 1000
100+
scatt = go.Scatter(
101+
y=np.arange(N),
102+
marker={'color': 'green',
103+
'opacity': np.arange(N) / N})
104+
105+
expected = """\
106+
Scatter(**{
107+
'marker': {'color': 'green',
108+
'opacity': array([0. , 0.001, 0.002, ..., 0.997, 0.998, 0.999])},
109+
'type': 'scatter',
110+
'y': array([ 0., 1., 2., ..., 997., 998., 999.])
111+
})"""
112+
113+
assert scatt.__repr__() == expected

Diff for: plotly/utils.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -645,7 +645,7 @@ class ElidedPrettyPrinter(PrettyPrinter):
645645
"""
646646
def __init__(self, *args, **kwargs):
647647
self.threshold = kwargs.pop('threshold', 200)
648-
PrettyPrinter().__init__(*args, **kwargs)
648+
super(ElidedPrettyPrinter, self).__init__(*args, **kwargs)
649649

650650
def _format(self, val, stream, indent, allowance, context, level):
651651
if ElidedWrapper.is_wrappable(val):
@@ -655,5 +655,5 @@ def _format(self, val, stream, indent, allowance, context, level):
655655
return self._format(
656656
elided_val, stream, indent, allowance, context, level)
657657
else:
658-
return PrettyPrinter()._format(
658+
return super(ElidedPrettyPrinter, self)._format(
659659
val, stream, indent, allowance, context, level)

0 commit comments

Comments
 (0)