pyglove 0.4.5.dev202410100808__py3-none-any.whl → 0.4.5.dev202410110808__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- pyglove/core/__init__.py +1 -0
- pyglove/core/object_utils/__init__.py +2 -0
- pyglove/core/object_utils/formatting.py +16 -0
- pyglove/core/object_utils/formatting_test.py +9 -0
- pyglove/core/object_utils/value_location.py +246 -3
- pyglove/core/object_utils/value_location_test.py +363 -74
- pyglove/core/symbolic/base_test.py +5 -5
- pyglove/core/symbolic/diff.py +18 -13
- pyglove/core/symbolic/diff_test.py +30 -29
- pyglove/core/symbolic/ref_test.py +9 -9
- pyglove/core/views/base.py +2 -0
- pyglove/core/views/base_test.py +1 -1
- pyglove/core/views/html/base.py +43 -14
- pyglove/core/views/html/base_test.py +9 -0
- pyglove/core/views/html/tree_view.py +226 -164
- pyglove/core/views/html/tree_view_test.py +138 -42
- {pyglove-0.4.5.dev202410100808.dist-info → pyglove-0.4.5.dev202410110808.dist-info}/METADATA +1 -1
- {pyglove-0.4.5.dev202410100808.dist-info → pyglove-0.4.5.dev202410110808.dist-info}/RECORD +21 -21
- {pyglove-0.4.5.dev202410100808.dist-info → pyglove-0.4.5.dev202410110808.dist-info}/LICENSE +0 -0
- {pyglove-0.4.5.dev202410100808.dist-info → pyglove-0.4.5.dev202410110808.dist-info}/WHEEL +0 -0
- {pyglove-0.4.5.dev202410100808.dist-info → pyglove-0.4.5.dev202410110808.dist-info}/top_level.txt +0 -0
@@ -13,12 +13,15 @@
|
|
13
13
|
# limitations under the License.
|
14
14
|
|
15
15
|
import inspect
|
16
|
+
from typing import Any, List, Sequence
|
16
17
|
import unittest
|
17
18
|
|
18
19
|
from pyglove.core.views.html import base
|
19
20
|
from pyglove.core.views.html import tree_view
|
20
21
|
|
21
22
|
Html = base.Html
|
23
|
+
KeyPath = tree_view.KeyPath
|
24
|
+
KeyPathSet = tree_view.KeyPathSet
|
22
25
|
|
23
26
|
|
24
27
|
class TestCase(unittest.TestCase):
|
@@ -82,7 +85,7 @@ class TooltipTest(TestCase):
|
|
82
85
|
name='name',
|
83
86
|
),
|
84
87
|
"""
|
85
|
-
<span class="tooltip">'This <hello><world></world></hello>.'</span>
|
88
|
+
<span class="tooltip str">'This <hello><world></world></hello>.'</span>
|
86
89
|
"""
|
87
90
|
)
|
88
91
|
self.assert_content(
|
@@ -92,7 +95,7 @@ class TooltipTest(TestCase):
|
|
92
95
|
name='name',
|
93
96
|
),
|
94
97
|
"""
|
95
|
-
<span class="tooltip"><div>hello</div></span>
|
98
|
+
<span class="tooltip int"><div>hello</div></span>
|
96
99
|
"""
|
97
100
|
)
|
98
101
|
|
@@ -158,7 +161,7 @@ class SummaryTest(TestCase):
|
|
158
161
|
self.assert_content(
|
159
162
|
self._view.summary('foo', enable_summary=True),
|
160
163
|
"""
|
161
|
-
<summary><div class="summary_title">'foo'</div><span class="tooltip">'foo'</span></summary>
|
164
|
+
<summary><div class="summary_title">'foo'</div><span class="tooltip str">'foo'</span></summary>
|
162
165
|
"""
|
163
166
|
)
|
164
167
|
self.assert_content(
|
@@ -166,7 +169,7 @@ class SummaryTest(TestCase):
|
|
166
169
|
'foo', enable_summary=None, max_summary_len_for_str=1
|
167
170
|
),
|
168
171
|
"""
|
169
|
-
<summary><div class="summary_title">'f...'</div><span class="tooltip">'foo'</span></summary>
|
172
|
+
<summary><div class="summary_title">'f...'</div><span class="tooltip str">'foo'</span></summary>
|
170
173
|
"""
|
171
174
|
)
|
172
175
|
|
@@ -177,7 +180,7 @@ class SummaryTest(TestCase):
|
|
177
180
|
max_summary_len_for_str=5
|
178
181
|
),
|
179
182
|
"""
|
180
|
-
<summary><div class="summary_title">'abcde...'</div><span class="tooltip">'abcdefg'</span></summary>
|
183
|
+
<summary><div class="summary_title">'abcde...'</div><span class="tooltip str">'abcdefg'</span></summary>
|
181
184
|
"""
|
182
185
|
)
|
183
186
|
|
@@ -185,7 +188,7 @@ class SummaryTest(TestCase):
|
|
185
188
|
self.assert_content(
|
186
189
|
self._view.summary('foo', name='x'),
|
187
190
|
"""
|
188
|
-
<summary><div class="summary_name">x</div><div class="summary_title">'foo'</div><span class="tooltip">'foo'</span></summary>
|
191
|
+
<summary><div class="summary_name">x</div><div class="summary_title">'foo'</div><span class="tooltip str">'foo'</span></summary>
|
189
192
|
"""
|
190
193
|
)
|
191
194
|
|
@@ -195,7 +198,7 @@ class SummaryTest(TestCase):
|
|
195
198
|
'foo', enable_summary=True, enable_summary_tooltip=True
|
196
199
|
),
|
197
200
|
"""
|
198
|
-
<summary><div class="summary_title">'foo'</div><span class="tooltip">'foo'</span></summary>
|
201
|
+
<summary><div class="summary_title">'foo'</div><span class="tooltip str">'foo'</span></summary>
|
199
202
|
"""
|
200
203
|
)
|
201
204
|
self.assert_content(
|
@@ -235,26 +238,26 @@ class ContentTest(TestCase):
|
|
235
238
|
visibility: visible;
|
236
239
|
background-color: darkblue;
|
237
240
|
}
|
238
|
-
.
|
241
|
+
.object_key.str {
|
239
242
|
color: gray;
|
240
243
|
border: 1px solid lightgray;
|
241
244
|
background-color: ButtonFace;
|
242
245
|
border-radius: 0.2em;
|
243
246
|
padding: 0.3em;
|
244
247
|
}
|
245
|
-
.
|
248
|
+
.object_key.int::before{
|
249
|
+
content: '[';
|
250
|
+
}
|
251
|
+
.object_key.int::after{
|
252
|
+
content: ']';
|
253
|
+
}
|
254
|
+
.object_key.int{
|
246
255
|
border: 0;
|
247
256
|
color: lightgray;
|
248
257
|
background-color: transparent;
|
249
258
|
border-radius: 0;
|
250
259
|
padding: 0;
|
251
260
|
}
|
252
|
-
.complex_value.list .object_key::before{
|
253
|
-
content: '[';
|
254
|
-
}
|
255
|
-
.complex_value.list .object_key::after{
|
256
|
-
content: ']';
|
257
|
-
}
|
258
261
|
/* Simple value styles. */
|
259
262
|
.simple_value {
|
260
263
|
color: blue;
|
@@ -308,7 +311,7 @@ class ContentTest(TestCase):
|
|
308
311
|
)
|
309
312
|
self.assert_content(
|
310
313
|
self._view.content('<foo>'),
|
311
|
-
"""
|
314
|
+
"""
|
312
315
|
<span class="simple_value str">'<foo>'</span>
|
313
316
|
"""
|
314
317
|
)
|
@@ -316,7 +319,7 @@ class ContentTest(TestCase):
|
|
316
319
|
self._view.content(
|
317
320
|
'<hello><world> \nto everyone.', max_summary_len_for_str=10
|
318
321
|
),
|
319
|
-
"""
|
322
|
+
"""
|
320
323
|
<span class="simple_value str"><hello><world>
|
321
324
|
to everyone.</span>
|
322
325
|
"""
|
@@ -326,7 +329,7 @@ class ContentTest(TestCase):
|
|
326
329
|
self.assert_content(
|
327
330
|
self._view.content([1, 2, 'abc']),
|
328
331
|
"""
|
329
|
-
<div class="complex_value list"><table><tr><td><span class="object_key">0</span><span class="tooltip">[0]</span></td><td><span class="simple_value int">1</span></td></tr><tr><td><span class="object_key">1</span><span class="tooltip">[1]</span></td><td><span class="simple_value int">2</span></td></tr><tr><td><span class="object_key">2</span><span class="tooltip">[2]</span></td><td><span class="simple_value str">'abc'</span></td></tr></table></div>
|
332
|
+
<div class="complex_value list"><table><tr><td><span class="object_key int">0</span><span class="tooltip key-path">[0]</span></td><td><div><span class="simple_value int">1</span></div></td></tr><tr><td><span class="object_key int">1</span><span class="tooltip key-path">[1]</span></td><td><div><span class="simple_value int">2</span></div></td></tr><tr><td><span class="object_key int">2</span><span class="tooltip key-path">[2]</span></td><td><div><span class="simple_value str">'abc'</span></div></td></tr></table></div>
|
330
333
|
"""
|
331
334
|
)
|
332
335
|
self.assert_content(
|
@@ -340,7 +343,7 @@ class ContentTest(TestCase):
|
|
340
343
|
self.assert_content(
|
341
344
|
self._view.content((1, True)),
|
342
345
|
"""
|
343
|
-
<div class="complex_value tuple"><table><tr><td><span class="object_key">0</span><span class="tooltip">[0]</span></td><td><span class="simple_value int">1</span></td></tr><tr><td><span class="object_key">1</span><span class="tooltip">[1]</span></td><td><span class="simple_value bool">True</span></td></tr></table></div>
|
346
|
+
<div class="complex_value tuple"><table><tr><td><span class="object_key int">0</span><span class="tooltip key-path">[0]</span></td><td><div><span class="simple_value int">1</span></div></td></tr><tr><td><span class="object_key int">1</span><span class="tooltip key-path">[1]</span></td><td><div><span class="simple_value bool">True</span></div></td></tr></table></div>
|
344
347
|
"""
|
345
348
|
)
|
346
349
|
self.assert_content(
|
@@ -354,7 +357,7 @@ class ContentTest(TestCase):
|
|
354
357
|
self.assert_content(
|
355
358
|
self._view.content(dict(x=1, y='foo')),
|
356
359
|
"""
|
357
|
-
<div class="complex_value dict"><table><tr><td><span class="object_key">x</span><span class="tooltip">x</span></td><td><span class="simple_value int">1</span></td></tr><tr><td><span class="object_key">y</span><span class="tooltip">y</span></td><td><span class="simple_value str">'foo'</span></td></tr></table></div>
|
360
|
+
<div class="complex_value dict"><table><tr><td><span class="object_key str">x</span><span class="tooltip key-path">x</span></td><td><div><span class="simple_value int">1</span></div></td></tr><tr><td><span class="object_key str">y</span><span class="tooltip key-path">y</span></td><td><div><span class="simple_value str">'foo'</span></div></td></tr></table></div>
|
358
361
|
"""
|
359
362
|
)
|
360
363
|
self.assert_content(
|
@@ -377,6 +380,28 @@ class ContentTest(TestCase):
|
|
377
380
|
"""
|
378
381
|
)
|
379
382
|
|
383
|
+
def test_custom_key_value_render(self):
|
384
|
+
def render_key(key, **kwargs):
|
385
|
+
del kwargs
|
386
|
+
return Html.element('span', [f'custom {key}'])
|
387
|
+
|
388
|
+
def render_value(value, **kwargs):
|
389
|
+
del kwargs
|
390
|
+
return Html.element('span', [f'custom {value}'])
|
391
|
+
|
392
|
+
self.assert_content(
|
393
|
+
self._view.complex_value(
|
394
|
+
dict(x=1, y='foo'),
|
395
|
+
parent=None,
|
396
|
+
root_path=KeyPath(),
|
397
|
+
render_key_fn=render_key,
|
398
|
+
render_value_fn=render_value,
|
399
|
+
),
|
400
|
+
"""
|
401
|
+
<div class="complex_value none-type"><table><tr><td><span>custom x</span></td><td><div><span>custom 1</span></div></td></tr><tr><td><span>custom y</span></td><td><div><span>custom foo</span></div></td></tr></table></div>
|
402
|
+
"""
|
403
|
+
)
|
404
|
+
|
380
405
|
def test_nesting(self):
|
381
406
|
|
382
407
|
class Foo:
|
@@ -395,16 +420,16 @@ class ContentTest(TestCase):
|
|
395
420
|
]
|
396
421
|
),
|
397
422
|
"""
|
398
|
-
<div class="complex_value list"><table><tr><td><span class="object_key">0</span><span class="tooltip">[0]</span></td><td><details class="pyglove dict"><summary><div class="summary_title">dict(...)</div><span class="tooltip">{
|
423
|
+
<div class="complex_value list"><table><tr><td><span class="object_key int">0</span><span class="tooltip key-path">[0]</span></td><td><div><details class="pyglove dict"><summary><div class="summary_title">dict(...)</div><span class="tooltip dict">{
|
399
424
|
'x': [(1, 2)],
|
400
425
|
'y': ['b', <Foo></Foo>]
|
401
|
-
}</span></summary><div class="complex_value dict"><table><tr><td><span class="object_key">x</span><span class="tooltip">[0].x</span></td><td><details class="pyglove list"><summary><div class="summary_title">list(...)</div><span class="tooltip">[(1, 2)]</span></summary><div class="complex_value list"><table><tr><td><span class="object_key">0</span><span class="tooltip">[0].x[0]</span></td><td><details class="pyglove tuple"><summary><div class="summary_title">tuple(...)</div><span class="tooltip">(1, 2)</span></summary><div class="complex_value tuple"><table><tr><td><span class="object_key">0</span><span class="tooltip">[0].x[0][0]</span></td><td><span class="simple_value int">1</span></td></tr><tr><td><span class="object_key">1</span><span class="tooltip">[0].x[0][1]</span></td><td><span class="simple_value int">2</span></td></tr></table></div></details></td></tr></table></div></details></td></tr><tr><td><span class="object_key">y</span><span class="tooltip">[0].y</span></td><td><details class="pyglove list"><summary><div class="summary_title">list(...)</div><span class="tooltip">['b', <Foo></Foo>]</span></summary><div class="complex_value list"><table><tr><td><span class="object_key">0</span><span class="tooltip">[0].y[0]</span></td><td><span class="simple_value str">'b'</span></td></tr><tr><td><span class="object_key">1</span><span class="tooltip">[0].y[1]</span></td><td><details class="pyglove foo"><summary><div class="summary_title">Foo(...)</div><span class="tooltip"><Foo></Foo></span></summary><span class="simple_value foo"><Foo></Foo></span></details></td></tr></table></div></details></td></tr></table></div></details></td></tr><tr><td><span class="object_key">1</span><span class="tooltip">[1]</span></td><td><span class="simple_value int">1</span></td></tr><tr><td><span class="object_key">2</span><span class="tooltip">[2]</span></td><td><details class="pyglove list"><summary><div class="summary_title">list(...)</div><span class="tooltip">[1, {
|
426
|
+
}</span></summary><div class="complex_value dict"><table><tr><td><span class="object_key str">x</span><span class="tooltip key-path">[0].x</span></td><td><div><details class="pyglove list"><summary><div class="summary_title">list(...)</div><span class="tooltip list">[(1, 2)]</span></summary><div class="complex_value list"><table><tr><td><span class="object_key int">0</span><span class="tooltip key-path">[0].x[0]</span></td><td><div><details class="pyglove tuple"><summary><div class="summary_title">tuple(...)</div><span class="tooltip tuple">(1, 2)</span></summary><div class="complex_value tuple"><table><tr><td><span class="object_key int">0</span><span class="tooltip key-path">[0].x[0][0]</span></td><td><div><span class="simple_value int">1</span></div></td></tr><tr><td><span class="object_key int">1</span><span class="tooltip key-path">[0].x[0][1]</span></td><td><div><span class="simple_value int">2</span></div></td></tr></table></div></details></div></td></tr></table></div></details></div></td></tr><tr><td><span class="object_key str">y</span><span class="tooltip key-path">[0].y</span></td><td><div><details class="pyglove list"><summary><div class="summary_title">list(...)</div><span class="tooltip list">['b', <Foo></Foo>]</span></summary><div class="complex_value list"><table><tr><td><span class="object_key int">0</span><span class="tooltip key-path">[0].y[0]</span></td><td><div><span class="simple_value str">'b'</span></div></td></tr><tr><td><span class="object_key int">1</span><span class="tooltip key-path">[0].y[1]</span></td><td><div><details class="pyglove foo"><summary><div class="summary_title">Foo(...)</div><span class="tooltip foo"><Foo></Foo></span></summary><span class="simple_value foo"><Foo></Foo></span></details></div></td></tr></table></div></details></div></td></tr></table></div></details></div></td></tr><tr><td><span class="object_key int">1</span><span class="tooltip key-path">[1]</span></td><td><div><span class="simple_value int">1</span></div></td></tr><tr><td><span class="object_key int">2</span><span class="tooltip key-path">[2]</span></td><td><div><details class="pyglove list"><summary><div class="summary_title">list(...)</div><span class="tooltip list">[1, {
|
402
427
|
'xx': 1,
|
403
428
|
'yy': 'a'
|
404
|
-
}]</span></summary><div class="complex_value list"><table><tr><td><span class="object_key">0</span><span class="tooltip">[2][0]</span></td><td><span class="simple_value int">1</span></td></tr><tr><td><span class="object_key">1</span><span class="tooltip">[2][1]</span></td><td><details class="pyglove dict"><summary><div class="summary_title">dict(...)</div><span class="tooltip">{
|
429
|
+
}]</span></summary><div class="complex_value list"><table><tr><td><span class="object_key int">0</span><span class="tooltip key-path">[2][0]</span></td><td><div><span class="simple_value int">1</span></div></td></tr><tr><td><span class="object_key int">1</span><span class="tooltip key-path">[2][1]</span></td><td><div><details class="pyglove dict"><summary><div class="summary_title">dict(...)</div><span class="tooltip dict">{
|
405
430
|
'xx': 1,
|
406
431
|
'yy': 'a'
|
407
|
-
}</span></summary><div class="complex_value dict"><table><tr><td><span class="object_key">xx</span><span class="tooltip">[2][1].xx</span></td><td><span class="simple_value int">1</span></td></tr><tr><td><span class="object_key">yy</span><span class="tooltip">[2][1].yy</span></td><td><span class="simple_value str">'a'</span></td></tr></table></div></details></td></tr></table></div></details></td></tr></table></div>
|
432
|
+
}</span></summary><div class="complex_value dict"><table><tr><td><span class="object_key str">xx</span><span class="tooltip key-path">[2][1].xx</span></td><td><div><span class="simple_value int">1</span></div></td></tr><tr><td><span class="object_key str">yy</span><span class="tooltip key-path">[2][1].yy</span></td><td><div><span class="simple_value str">'a'</span></div></td></tr></table></div></details></div></td></tr></table></div></details></div></td></tr></table></div>
|
408
433
|
"""
|
409
434
|
)
|
410
435
|
|
@@ -425,22 +450,22 @@ class ContentTest(TestCase):
|
|
425
450
|
self.assert_content(
|
426
451
|
self._view.content(value, enable_summary_tooltip=False),
|
427
452
|
"""
|
428
|
-
<div class="complex_value list"><table><tr><td><span class="object_key">0</span><span class="tooltip">[0]</span></td><td><details class="pyglove dict"><summary><div class="summary_title">dict(...)</div></summary><div class="complex_value dict"><table><tr><td><span class="object_key">x</span><span class="tooltip">[0].x</span></td><td><details class="pyglove list"><summary><div class="summary_title">list(...)</div></summary><div class="complex_value list"><table><tr><td><span class="object_key">0</span><span class="tooltip">[0].x[0]</span></td><td><details class="pyglove tuple"><summary><div class="summary_title">tuple(...)</div></summary><div class="complex_value tuple"><table><tr><td><span class="object_key">0</span><span class="tooltip">[0].x[0][0]</span></td><td><span class="simple_value int">1</span></td></tr><tr><td><span class="object_key">1</span><span class="tooltip">[0].x[0][1]</span></td><td><span class="simple_value int">2</span></td></tr></table></div></details></td></tr></table></div></details></td></tr><tr><td><span class="object_key">y</span><span class="tooltip">[0].y</span></td><td><details class="pyglove list"><summary><div class="summary_title">list(...)</div></summary><div class="complex_value list"><table><tr><td><span class="object_key">0</span><span class="tooltip">[0].y[0]</span></td><td><span class="simple_value str">'b'</span></td></tr><tr><td><span class="object_key">1</span><span class="tooltip">[0].y[1]</span></td><td><details class="pyglove foo"><summary><div class="summary_title">Foo(...)</div></summary><span class="simple_value foo"><Foo></Foo></span></details></td></tr></table></div></details></td></tr></table></div></details></td></tr><tr><td><span class="object_key">1</span><span class="tooltip">[1]</span></td><td><span class="simple_value int">1</span></td></tr><tr><td><span class="object_key">2</span><span class="tooltip">[2]</span></td><td><details class="pyglove list"><summary><div class="summary_title">list(...)</div></summary><div class="complex_value list"><table><tr><td><span class="object_key">0</span><span class="tooltip">[2][0]</span></td><td><span class="simple_value int">1</span></td></tr><tr><td><span class="object_key">1</span><span class="tooltip">[2][1]</span></td><td><details class="pyglove dict"><summary><div class="summary_title">dict(...)</div></summary><div class="complex_value dict"><table><tr><td><span class="object_key">xx</span><span class="tooltip">[2][1].xx</span></td><td><span class="simple_value int">1</span></td></tr><tr><td><span class="object_key">yy</span><span class="tooltip">[2][1].yy</span></td><td><span class="simple_value str">'a'</span></td></tr></table></div></details></td></tr></table></div></details></td></tr></table></div>
|
453
|
+
<div class="complex_value list"><table><tr><td><span class="object_key int">0</span><span class="tooltip key-path">[0]</span></td><td><div><details class="pyglove dict"><summary><div class="summary_title">dict(...)</div></summary><div class="complex_value dict"><table><tr><td><span class="object_key str">x</span><span class="tooltip key-path">[0].x</span></td><td><div><details class="pyglove list"><summary><div class="summary_title">list(...)</div></summary><div class="complex_value list"><table><tr><td><span class="object_key int">0</span><span class="tooltip key-path">[0].x[0]</span></td><td><div><details class="pyglove tuple"><summary><div class="summary_title">tuple(...)</div></summary><div class="complex_value tuple"><table><tr><td><span class="object_key int">0</span><span class="tooltip key-path">[0].x[0][0]</span></td><td><div><span class="simple_value int">1</span></div></td></tr><tr><td><span class="object_key int">1</span><span class="tooltip key-path">[0].x[0][1]</span></td><td><div><span class="simple_value int">2</span></div></td></tr></table></div></details></div></td></tr></table></div></details></div></td></tr><tr><td><span class="object_key str">y</span><span class="tooltip key-path">[0].y</span></td><td><div><details class="pyglove list"><summary><div class="summary_title">list(...)</div></summary><div class="complex_value list"><table><tr><td><span class="object_key int">0</span><span class="tooltip key-path">[0].y[0]</span></td><td><div><span class="simple_value str">'b'</span></div></td></tr><tr><td><span class="object_key int">1</span><span class="tooltip key-path">[0].y[1]</span></td><td><div><details class="pyglove foo"><summary><div class="summary_title">Foo(...)</div></summary><span class="simple_value foo"><Foo></Foo></span></details></div></td></tr></table></div></details></div></td></tr></table></div></details></div></td></tr><tr><td><span class="object_key int">1</span><span class="tooltip key-path">[1]</span></td><td><div><span class="simple_value int">1</span></div></td></tr><tr><td><span class="object_key int">2</span><span class="tooltip key-path">[2]</span></td><td><div><details class="pyglove list"><summary><div class="summary_title">list(...)</div></summary><div class="complex_value list"><table><tr><td><span class="object_key int">0</span><span class="tooltip key-path">[2][0]</span></td><td><div><span class="simple_value int">1</span></div></td></tr><tr><td><span class="object_key int">1</span><span class="tooltip key-path">[2][1]</span></td><td><div><details class="pyglove dict"><summary><div class="summary_title">dict(...)</div></summary><div class="complex_value dict"><table><tr><td><span class="object_key str">xx</span><span class="tooltip key-path">[2][1].xx</span></td><td><div><span class="simple_value int">1</span></div></td></tr><tr><td><span class="object_key str">yy</span><span class="tooltip key-path">[2][1].yy</span></td><td><div><span class="simple_value str">'a'</span></div></td></tr></table></div></details></div></td></tr></table></div></details></div></td></tr></table></div>
|
429
454
|
"""
|
430
455
|
)
|
431
456
|
self.assert_content(
|
432
457
|
self._view.content(value, enable_key_tooltip=False),
|
433
458
|
"""
|
434
|
-
<div class="complex_value list"><table><tr><td><span class="object_key">0</span></td><td><details class="pyglove dict"><summary><div class="summary_title">dict(...)</div><span class="tooltip">{
|
459
|
+
<div class="complex_value list"><table><tr><td><span class="object_key int">0</span></td><td><div><details class="pyglove dict"><summary><div class="summary_title">dict(...)</div><span class="tooltip dict">{
|
435
460
|
'x': [(1, 2)],
|
436
461
|
'y': ['b', <Foo></Foo>]
|
437
|
-
}</span></summary><div class="complex_value dict"><table><tr><td><span class="object_key">x</span></td><td><details class="pyglove list"><summary><div class="summary_title">list(...)</div><span class="tooltip">[(1, 2)]</span></summary><div class="complex_value list"><table><tr><td><span class="object_key">0</span></td><td><details class="pyglove tuple"><summary><div class="summary_title">tuple(...)</div><span class="tooltip">(1, 2)</span></summary><div class="complex_value tuple"><table><tr><td><span class="object_key">0</span></td><td><span class="simple_value int">1</span></td></tr><tr><td><span class="object_key">1</span></td><td><span class="simple_value int">2</span></td></tr></table></div></details></td></tr></table></div></details></td></tr><tr><td><span class="object_key">y</span></td><td><details class="pyglove list"><summary><div class="summary_title">list(...)</div><span class="tooltip">['b', <Foo></Foo>]</span></summary><div class="complex_value list"><table><tr><td><span class="object_key">0</span></td><td><span class="simple_value str">'b'</span></td></tr><tr><td><span class="object_key">1</span></td><td><details class="pyglove foo"><summary><div class="summary_title">Foo(...)</div><span class="tooltip"><Foo></Foo></span></summary><span class="simple_value foo"><Foo></Foo></span></details></td></tr></table></div></details></td></tr></table></div></details></td></tr><tr><td><span class="object_key">1</span></td><td><span class="simple_value int">1</span></td></tr><tr><td><span class="object_key">2</span></td><td><details class="pyglove list"><summary><div class="summary_title">list(...)</div><span class="tooltip">[1, {
|
462
|
+
}</span></summary><div class="complex_value dict"><table><tr><td><span class="object_key str">x</span></td><td><div><details class="pyglove list"><summary><div class="summary_title">list(...)</div><span class="tooltip list">[(1, 2)]</span></summary><div class="complex_value list"><table><tr><td><span class="object_key int">0</span></td><td><div><details class="pyglove tuple"><summary><div class="summary_title">tuple(...)</div><span class="tooltip tuple">(1, 2)</span></summary><div class="complex_value tuple"><table><tr><td><span class="object_key int">0</span></td><td><div><span class="simple_value int">1</span></div></td></tr><tr><td><span class="object_key int">1</span></td><td><div><span class="simple_value int">2</span></div></td></tr></table></div></details></div></td></tr></table></div></details></div></td></tr><tr><td><span class="object_key str">y</span></td><td><div><details class="pyglove list"><summary><div class="summary_title">list(...)</div><span class="tooltip list">['b', <Foo></Foo>]</span></summary><div class="complex_value list"><table><tr><td><span class="object_key int">0</span></td><td><div><span class="simple_value str">'b'</span></div></td></tr><tr><td><span class="object_key int">1</span></td><td><div><details class="pyglove foo"><summary><div class="summary_title">Foo(...)</div><span class="tooltip foo"><Foo></Foo></span></summary><span class="simple_value foo"><Foo></Foo></span></details></div></td></tr></table></div></details></div></td></tr></table></div></details></div></td></tr><tr><td><span class="object_key int">1</span></td><td><div><span class="simple_value int">1</span></div></td></tr><tr><td><span class="object_key int">2</span></td><td><div><details class="pyglove list"><summary><div class="summary_title">list(...)</div><span class="tooltip list">[1, {
|
438
463
|
'xx': 1,
|
439
464
|
'yy': 'a'
|
440
|
-
}]</span></summary><div class="complex_value list"><table><tr><td><span class="object_key">0</span></td><td><span class="simple_value int">1</span></td></tr><tr><td><span class="object_key">1</span></td><td><details class="pyglove dict"><summary><div class="summary_title">dict(...)</div><span class="tooltip">{
|
465
|
+
}]</span></summary><div class="complex_value list"><table><tr><td><span class="object_key int">0</span></td><td><div><span class="simple_value int">1</span></div></td></tr><tr><td><span class="object_key int">1</span></td><td><div><details class="pyglove dict"><summary><div class="summary_title">dict(...)</div><span class="tooltip dict">{
|
441
466
|
'xx': 1,
|
442
467
|
'yy': 'a'
|
443
|
-
}</span></summary><div class="complex_value dict"><table><tr><td><span class="object_key">xx</span></td><td><span class="simple_value int">1</span></td></tr><tr><td><span class="object_key">yy</span></td><td><span class="simple_value str">'a'</span></td></tr></table></div></details></td></tr></table></div></details></td></tr></table></div>
|
468
|
+
}</span></summary><div class="complex_value dict"><table><tr><td><span class="object_key str">xx</span></td><td><div><span class="simple_value int">1</span></div></td></tr><tr><td><span class="object_key str">yy</span></td><td><div><span class="simple_value str">'a'</span></div></td></tr></table></div></details></div></td></tr></table></div></details></div></td></tr></table></div>
|
444
469
|
"""
|
445
470
|
)
|
446
471
|
self.assert_content(
|
@@ -448,7 +473,7 @@ class ContentTest(TestCase):
|
|
448
473
|
value, enable_summary_tooltip=False, enable_key_tooltip=False
|
449
474
|
),
|
450
475
|
"""
|
451
|
-
<div class="complex_value list"><table><tr><td><span class="object_key">0</span></td><td><details class="pyglove dict"><summary><div class="summary_title">dict(...)</div></summary><div class="complex_value dict"><table><tr><td><span class="object_key">x</span></td><td><details class="pyglove list"><summary><div class="summary_title">list(...)</div></summary><div class="complex_value list"><table><tr><td><span class="object_key">0</span></td><td><details class="pyglove tuple"><summary><div class="summary_title">tuple(...)</div></summary><div class="complex_value tuple"><table><tr><td><span class="object_key">0</span></td><td><span class="simple_value int">1</span></td></tr><tr><td><span class="object_key">1</span></td><td><span class="simple_value int">2</span></td></tr></table></div></details></td></tr></table></div></details></td></tr><tr><td><span class="object_key">y</span></td><td><details class="pyglove list"><summary><div class="summary_title">list(...)</div></summary><div class="complex_value list"><table><tr><td><span class="object_key">0</span></td><td><span class="simple_value str">'b'</span></td></tr><tr><td><span class="object_key">1</span></td><td><details class="pyglove foo"><summary><div class="summary_title">Foo(...)</div></summary><span class="simple_value foo"><Foo></Foo></span></details></td></tr></table></div></details></td></tr></table></div></details></td></tr><tr><td><span class="object_key">1</span></td><td><span class="simple_value int">1</span></td></tr><tr><td><span class="object_key">2</span></td><td><details class="pyglove list"><summary><div class="summary_title">list(...)</div></summary><div class="complex_value list"><table><tr><td><span class="object_key">0</span></td><td><span class="simple_value int">1</span></td></tr><tr><td><span class="object_key">1</span></td><td><details class="pyglove dict"><summary><div class="summary_title">dict(...)</div></summary><div class="complex_value dict"><table><tr><td><span class="object_key">xx</span></td><td><span class="simple_value int">1</span></td></tr><tr><td><span class="object_key">yy</span></td><td><span class="simple_value str">'a'</span></td></tr></table></div></details></td></tr></table></div></details></td></tr></table></div>
|
476
|
+
<div class="complex_value list"><table><tr><td><span class="object_key int">0</span></td><td><div><details class="pyglove dict"><summary><div class="summary_title">dict(...)</div></summary><div class="complex_value dict"><table><tr><td><span class="object_key str">x</span></td><td><div><details class="pyglove list"><summary><div class="summary_title">list(...)</div></summary><div class="complex_value list"><table><tr><td><span class="object_key int">0</span></td><td><div><details class="pyglove tuple"><summary><div class="summary_title">tuple(...)</div></summary><div class="complex_value tuple"><table><tr><td><span class="object_key int">0</span></td><td><div><span class="simple_value int">1</span></div></td></tr><tr><td><span class="object_key int">1</span></td><td><div><span class="simple_value int">2</span></div></td></tr></table></div></details></div></td></tr></table></div></details></div></td></tr><tr><td><span class="object_key str">y</span></td><td><div><details class="pyglove list"><summary><div class="summary_title">list(...)</div></summary><div class="complex_value list"><table><tr><td><span class="object_key int">0</span></td><td><div><span class="simple_value str">'b'</span></div></td></tr><tr><td><span class="object_key int">1</span></td><td><div><details class="pyglove foo"><summary><div class="summary_title">Foo(...)</div></summary><span class="simple_value foo"><Foo></Foo></span></details></div></td></tr></table></div></details></div></td></tr></table></div></details></div></td></tr><tr><td><span class="object_key int">1</span></td><td><div><span class="simple_value int">1</span></div></td></tr><tr><td><span class="object_key int">2</span></td><td><div><details class="pyglove list"><summary><div class="summary_title">list(...)</div></summary><div class="complex_value list"><table><tr><td><span class="object_key int">0</span></td><td><div><span class="simple_value int">1</span></div></td></tr><tr><td><span class="object_key int">1</span></td><td><div><details class="pyglove dict"><summary><div class="summary_title">dict(...)</div></summary><div class="complex_value dict"><table><tr><td><span class="object_key str">xx</span></td><td><div><span class="simple_value int">1</span></div></td></tr><tr><td><span class="object_key str">yy</span></td><td><div><span class="simple_value str">'a'</span></div></td></tr></table></div></details></div></td></tr></table></div></details></div></td></tr></table></div>
|
452
477
|
"""
|
453
478
|
)
|
454
479
|
|
@@ -474,7 +499,7 @@ class ContentTest(TestCase):
|
|
474
499
|
enable_key_tooltip=False,
|
475
500
|
),
|
476
501
|
"""
|
477
|
-
<div class="complex_value dict"><details class="pyglove str
|
502
|
+
<div class="complex_value dict"><div class="special_value"><details class="pyglove str"><summary><div class="summary_name">c</div><div class="summary_title">'z'</div></summary><span class="simple_value str">'z'</span></details></div><div class="special_value"><details class="pyglove dict"><summary><div class="summary_name">b</div><div class="summary_title">dict(...)</div></summary><div class="complex_value dict"><table><tr><td><span class="object_key str">e</span></td><td><div><span class="simple_value str">'y'</span></div></td></tr></table></div></details></div><table><tr><td><span class="object_key str">a</span></td><td><div><span class="simple_value str">'x'</span></div></td></tr><tr><td><span class="object_key str">d</span></td><td><div><span class="simple_value str">'w'</span></div></td></tr><tr><td><span class="object_key str">e</span></td><td><div><span class="simple_value str">'v'</span></div></td></tr><tr><td><span class="object_key str">f</span></td><td><div><span class="simple_value str">'u'</span></div></td></tr></table></div>
|
478
503
|
"""
|
479
504
|
)
|
480
505
|
self.assert_count(
|
@@ -497,7 +522,7 @@ class ContentTest(TestCase):
|
|
497
522
|
filter=(lambda k, v, p: len(k) > 1 or isinstance(v, dict))
|
498
523
|
),
|
499
524
|
"""
|
500
|
-
<div class="complex_value dict"><table><tr><td><span class="object_key">b</span></td><td><details class="pyglove dict"><summary><div class="summary_title">dict(...)</div></summary><div class="complex_value dict"><table><tr><td><span class="object_key">e</span></td><td><span class="simple_value str">'y'</span></td></tr></table></div></details></td></tr></table></div>
|
525
|
+
<div class="complex_value dict"><table><tr><td><span class="object_key str">b</span></td><td><div><details class="pyglove dict"><summary><div class="summary_title">dict(...)</div></summary><div class="complex_value dict"><table><tr><td><span class="object_key str">e</span></td><td><div><span class="simple_value str">'y'</span></div></td></tr></table></div></details></div></td></tr></table></div>
|
501
526
|
"""
|
502
527
|
)
|
503
528
|
|
@@ -511,7 +536,7 @@ class ContentTest(TestCase):
|
|
511
536
|
lowlight_keys=(lambda k, v, p: isinstance(v, str)),
|
512
537
|
),
|
513
538
|
"""
|
514
|
-
<div class="complex_value dict"><table><tr><td><span class="object_key">a</span></td><td><span class="simple_value int">1</span></td></tr><tr><td><span class="object_key">b</span></td><td><details class="pyglove dict"><summary><div class="summary_title">dict(...)</div></summary><div class="complex_value dict"><table><tr><td><span class="object_key">e</span></td><td><span class="simple_value str">'y'</span></td></tr></table></div></details></td></tr><tr><td><span class="object_key">c</span></td><td><span class="simple_value int">2</span></td></tr><tr><td><span class="object_key">d</span></td><td><span class="simple_value str">'w'</span></td></tr><tr><td><span class="object_key">e</span></td><td><span class="simple_value int">3</span></td></tr><tr><td><span class="object_key">f</span></td><td><span class="simple_value str">'u'</span></td></tr></table></div>
|
539
|
+
<div class="complex_value dict"><table><tr><td><span class="object_key str">a</span></td><td><div><span class="simple_value int">1</span></div></td></tr><tr><td><span class="object_key str">b</span></td><td><div><details class="pyglove dict"><summary><div class="summary_title">dict(...)</div></summary><div class="complex_value dict"><table><tr><td><span class="object_key str">e</span></td><td><div><span class="simple_value str">'y'</span></div></td></tr></table></div></details></div></td></tr><tr><td><span class="object_key str">c</span></td><td><div><span class="simple_value int">2</span></div></td></tr><tr><td><span class="object_key str">d</span></td><td><div><span class="simple_value str">'w'</span></div></td></tr><tr><td><span class="object_key str">e</span></td><td><div><span class="simple_value int">3</span></div></td></tr><tr><td><span class="object_key str">f</span></td><td><div><span class="simple_value str">'u'</span></div></td></tr></table></div>
|
515
540
|
"""
|
516
541
|
)
|
517
542
|
|
@@ -625,7 +650,7 @@ class RenderTest(TestCase):
|
|
625
650
|
],
|
626
651
|
),
|
627
652
|
"""
|
628
|
-
<details open class="pyglove list"><summary><div class="summary_title">list(...)</div><span class="tooltip">[
|
653
|
+
<details open class="pyglove list"><summary><div class="summary_title">list(...)</div><span class="tooltip list">[
|
629
654
|
{
|
630
655
|
'x': [(1, 2)],
|
631
656
|
'y': ['b', <Foo></Foo>]
|
@@ -635,16 +660,16 @@ class RenderTest(TestCase):
|
|
635
660
|
'xx': 1,
|
636
661
|
'yy': 'a'
|
637
662
|
}]
|
638
|
-
]</span></summary><div class="complex_value list"><table><tr><td><span class="object_key">0</span><span class="tooltip">[0]</span></td><td><details class="pyglove dict"><summary><div class="summary_title">dict(...)</div><span class="tooltip">{
|
663
|
+
]</span></summary><div class="complex_value list"><table><tr><td><span class="object_key int">0</span><span class="tooltip key-path">[0]</span></td><td><div><details class="pyglove dict"><summary><div class="summary_title">dict(...)</div><span class="tooltip dict">{
|
639
664
|
'x': [(1, 2)],
|
640
665
|
'y': ['b', <Foo></Foo>]
|
641
|
-
}</span></summary><div class="complex_value dict"><table><tr><td><span class="object_key">x</span><span class="tooltip">[0].x</span></td><td><details class="pyglove list"><summary><div class="summary_title">list(...)</div><span class="tooltip">[(1, 2)]</span></summary><div class="complex_value list"><table><tr><td><span class="object_key">0</span><span class="tooltip">[0].x[0]</span></td><td><details class="pyglove tuple"><summary><div class="summary_title">tuple(...)</div><span class="tooltip">(1, 2)</span></summary><div class="complex_value tuple"><table><tr><td><span class="object_key">0</span><span class="tooltip">[0].x[0][0]</span></td><td><span class="simple_value int">1</span></td></tr><tr><td><span class="object_key">1</span><span class="tooltip">[0].x[0][1]</span></td><td><span class="simple_value int">2</span></td></tr></table></div></details></td></tr></table></div></details></td></tr><tr><td><span class="object_key">y</span><span class="tooltip">[0].y</span></td><td><details class="pyglove list"><summary><div class="summary_title">list(...)</div><span class="tooltip">['b', <Foo></Foo>]</span></summary><div class="complex_value list"><table><tr><td><span class="object_key">0</span><span class="tooltip">[0].y[0]</span></td><td><span class="simple_value str">'b'</span></td></tr><tr><td><span class="object_key">1</span><span class="tooltip">[0].y[1]</span></td><td><details class="pyglove foo"><summary><div class="summary_title">Foo(...)</div><span class="tooltip"><Foo></Foo></span></summary><span class="simple_value foo"><Foo></Foo></span></details></td></tr></table></div></details></td></tr></table></div></details></td></tr><tr><td><span class="object_key">1</span><span class="tooltip">[1]</span></td><td><span class="simple_value int">1</span></td></tr><tr><td><span class="object_key">2</span><span class="tooltip">[2]</span></td><td><details class="pyglove list"><summary><div class="summary_title">list(...)</div><span class="tooltip">[1, {
|
666
|
+
}</span></summary><div class="complex_value dict"><table><tr><td><span class="object_key str">x</span><span class="tooltip key-path">[0].x</span></td><td><div><details class="pyglove list"><summary><div class="summary_title">list(...)</div><span class="tooltip list">[(1, 2)]</span></summary><div class="complex_value list"><table><tr><td><span class="object_key int">0</span><span class="tooltip key-path">[0].x[0]</span></td><td><div><details class="pyglove tuple"><summary><div class="summary_title">tuple(...)</div><span class="tooltip tuple">(1, 2)</span></summary><div class="complex_value tuple"><table><tr><td><span class="object_key int">0</span><span class="tooltip key-path">[0].x[0][0]</span></td><td><div><span class="simple_value int">1</span></div></td></tr><tr><td><span class="object_key int">1</span><span class="tooltip key-path">[0].x[0][1]</span></td><td><div><span class="simple_value int">2</span></div></td></tr></table></div></details></div></td></tr></table></div></details></div></td></tr><tr><td><span class="object_key str">y</span><span class="tooltip key-path">[0].y</span></td><td><div><details class="pyglove list"><summary><div class="summary_title">list(...)</div><span class="tooltip list">['b', <Foo></Foo>]</span></summary><div class="complex_value list"><table><tr><td><span class="object_key int">0</span><span class="tooltip key-path">[0].y[0]</span></td><td><div><span class="simple_value str">'b'</span></div></td></tr><tr><td><span class="object_key int">1</span><span class="tooltip key-path">[0].y[1]</span></td><td><div><details class="pyglove foo"><summary><div class="summary_title">Foo(...)</div><span class="tooltip foo"><Foo></Foo></span></summary><span class="simple_value foo"><Foo></Foo></span></details></div></td></tr></table></div></details></div></td></tr></table></div></details></div></td></tr><tr><td><span class="object_key int">1</span><span class="tooltip key-path">[1]</span></td><td><div><span class="simple_value int">1</span></div></td></tr><tr><td><span class="object_key int">2</span><span class="tooltip key-path">[2]</span></td><td><div><details class="pyglove list"><summary><div class="summary_title">list(...)</div><span class="tooltip list">[1, {
|
642
667
|
'xx': 1,
|
643
668
|
'yy': 'a'
|
644
|
-
}]</span></summary><div class="complex_value list"><table><tr><td><span class="object_key">0</span><span class="tooltip">[2][0]</span></td><td><span class="simple_value int">1</span></td></tr><tr><td><span class="object_key">1</span><span class="tooltip">[2][1]</span></td><td><details class="pyglove dict"><summary><div class="summary_title">dict(...)</div><span class="tooltip">{
|
669
|
+
}]</span></summary><div class="complex_value list"><table><tr><td><span class="object_key int">0</span><span class="tooltip key-path">[2][0]</span></td><td><div><span class="simple_value int">1</span></div></td></tr><tr><td><span class="object_key int">1</span><span class="tooltip key-path">[2][1]</span></td><td><div><details class="pyglove dict"><summary><div class="summary_title">dict(...)</div><span class="tooltip dict">{
|
645
670
|
'xx': 1,
|
646
671
|
'yy': 'a'
|
647
|
-
}</span></summary><div class="complex_value dict"><table><tr><td><span class="object_key">xx</span><span class="tooltip">[2][1].xx</span></td><td><span class="simple_value int">1</span></td></tr><tr><td><span class="object_key">yy</span><span class="tooltip">[2][1].yy</span></td><td><span class="simple_value str">'a'</span></td></tr></table></div></details></td></tr></table></div></details></td></tr></table></div></details>
|
672
|
+
}</span></summary><div class="complex_value dict"><table><tr><td><span class="object_key str">xx</span><span class="tooltip key-path">[2][1].xx</span></td><td><div><span class="simple_value int">1</span></div></td></tr><tr><td><span class="object_key str">yy</span><span class="tooltip key-path">[2][1].yy</span></td><td><div><span class="simple_value str">'a'</span></div></td></tr></table></div></details></div></td></tr></table></div></details></div></td></tr></table></div></details>
|
648
673
|
"""
|
649
674
|
)
|
650
675
|
|
@@ -666,7 +691,7 @@ class ExtensionTest(TestCase):
|
|
666
691
|
enable_tooltip=True,
|
667
692
|
),
|
668
693
|
"""
|
669
|
-
<summary><div class="summary_title">Foo(...)</div><span class="tooltip">Foo()</span></summary>
|
694
|
+
<summary><div class="summary_title">Foo(...)</div><span class="tooltip foo">Foo()</span></summary>
|
670
695
|
"""
|
671
696
|
)
|
672
697
|
self.assert_content(
|
@@ -678,7 +703,79 @@ class ExtensionTest(TestCase):
|
|
678
703
|
"""
|
679
704
|
)
|
680
705
|
|
681
|
-
def
|
706
|
+
def test_options_overrides(self):
|
707
|
+
|
708
|
+
class Foo(tree_view.HtmlTreeView.Extension):
|
709
|
+
|
710
|
+
def __str__(self):
|
711
|
+
return 'Foo()'
|
712
|
+
|
713
|
+
def _html_style(self) -> List[str]:
|
714
|
+
return [
|
715
|
+
"""
|
716
|
+
/* Foo style */
|
717
|
+
"""
|
718
|
+
]
|
719
|
+
|
720
|
+
def _html_element_class(self) -> List[str]:
|
721
|
+
return ['foo', 'bar']
|
722
|
+
|
723
|
+
def _html_tree_view_special_keys(self) -> Sequence[str]:
|
724
|
+
return ['x']
|
725
|
+
|
726
|
+
def _html_tree_view_include_keys(self) -> Sequence[str]:
|
727
|
+
return ['x', 'y', 'z', 'w']
|
728
|
+
|
729
|
+
def _html_tree_view_exclude_keys(self) -> Sequence[str]:
|
730
|
+
return ['z']
|
731
|
+
|
732
|
+
def _html_tree_view_collapse_level(self) -> int:
|
733
|
+
return 1
|
734
|
+
|
735
|
+
def _html_tree_view_uncollapse(self) -> KeyPathSet:
|
736
|
+
return KeyPathSet(['x.a', 'y.b'], include_intermediate=True)
|
737
|
+
|
738
|
+
def _html_tree_view_content(
|
739
|
+
self,
|
740
|
+
*,
|
741
|
+
view: tree_view.HtmlTreeView,
|
742
|
+
parent: Any,
|
743
|
+
root_path: KeyPath,
|
744
|
+
**kwargs) -> base.Html:
|
745
|
+
return view.complex_value(
|
746
|
+
kv=dict(
|
747
|
+
x=dict(a=dict(foo=2)),
|
748
|
+
y=dict(b=dict(bar=3)),
|
749
|
+
z=dict(c=dict(baz=4)),
|
750
|
+
w=dict(d=dict(qux=5)),
|
751
|
+
),
|
752
|
+
parent=self,
|
753
|
+
root_path=root_path,
|
754
|
+
**kwargs
|
755
|
+
)
|
756
|
+
|
757
|
+
self.assertIn(
|
758
|
+
'/* Foo style */',
|
759
|
+
self._view.render(
|
760
|
+
Foo(),
|
761
|
+
enable_summary_tooltip=False,
|
762
|
+
enable_key_tooltip=False,
|
763
|
+
collapse_level=0,
|
764
|
+
).styles.content,
|
765
|
+
)
|
766
|
+
self.assert_content(
|
767
|
+
self._view.render(
|
768
|
+
[Foo()],
|
769
|
+
enable_summary_tooltip=False,
|
770
|
+
enable_key_tooltip=False,
|
771
|
+
collapse_level=0,
|
772
|
+
),
|
773
|
+
"""
|
774
|
+
<details class="pyglove list"><summary><div class="summary_title">list(...)</div></summary><div class="complex_value list"><table><tr><td><span class="object_key int">0</span></td><td><div><details open class="pyglove foo bar"><summary><div class="summary_title">Foo(...)</div></summary><div class="complex_value foo bar"><div class="special_value"><details open class="pyglove dict"><summary><div class="summary_name">x</div><div class="summary_title">dict(...)</div></summary><div class="complex_value dict"><table><tr><td><span class="object_key str">a</span></td><td><div><details open class="pyglove dict"><summary><div class="summary_title">dict(...)</div></summary><div class="complex_value dict"><table><tr><td><span class="object_key str">foo</span></td><td><div><span class="simple_value int">2</span></div></td></tr></table></div></details></div></td></tr></table></div></details></div><table><tr><td><span class="object_key str">y</span></td><td><div><details open class="pyglove dict"><summary><div class="summary_title">dict(...)</div></summary><div class="complex_value dict"><table><tr><td><span class="object_key str">b</span></td><td><div><details open class="pyglove dict"><summary><div class="summary_title">dict(...)</div></summary><div class="complex_value dict"><table><tr><td><span class="object_key str">bar</span></td><td><div><span class="simple_value int">3</span></div></td></tr></table></div></details></div></td></tr></table></div></details></div></td></tr><tr><td><span class="object_key str">w</span></td><td><div><details class="pyglove dict"><summary><div class="summary_title">dict(...)</div></summary><div class="complex_value dict"><table><tr><td><span class="object_key str">d</span></td><td><div><details class="pyglove dict"><summary><div class="summary_title">dict(...)</div></summary><div class="complex_value dict"><table><tr><td><span class="object_key str">qux</span></td><td><div><span class="simple_value int">5</span></div></td></tr></table></div></details></div></td></tr></table></div></details></div></td></tr></table></div></details></div></td></tr></table></div></details>
|
775
|
+
"""
|
776
|
+
)
|
777
|
+
|
778
|
+
def test_behavior_overrides(self):
|
682
779
|
|
683
780
|
class Foo(tree_view.HtmlTreeView.Extension):
|
684
781
|
|
@@ -692,7 +789,6 @@ class ExtensionTest(TestCase):
|
|
692
789
|
return view.summary(
|
693
790
|
self,
|
694
791
|
title='MyFoo',
|
695
|
-
title_class='t_MyFoo',
|
696
792
|
**kwargs
|
697
793
|
)
|
698
794
|
|
@@ -720,7 +816,7 @@ class ExtensionTest(TestCase):
|
|
720
816
|
Foo(),
|
721
817
|
),
|
722
818
|
"""
|
723
|
-
<details open class="pyglove foo"><summary><div class="summary_title">MyFoo</div><span class="tooltip">Tooltip <MyFoo></span></summary>Content of MyFoo</details>
|
819
|
+
<details open class="pyglove foo"><summary><div class="summary_title">MyFoo</div><span class="tooltip foo">Tooltip <MyFoo></span></summary>Content of MyFoo</details>
|
724
820
|
"""
|
725
821
|
)
|
726
822
|
self.assert_content(
|