pyglove 0.4.5.dev202411030808__py3-none-any.whl → 0.4.5.dev202411060809__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.
Potentially problematic release.
This version of pyglove might be problematic. Click here for more details.
- pyglove/core/__init__.py +8 -0
- pyglove/core/symbolic/base.py +2 -38
- pyglove/core/symbolic/diff.py +14 -13
- pyglove/core/symbolic/object_test.py +1 -0
- pyglove/core/symbolic/ref.py +7 -7
- pyglove/core/views/__init__.py +1 -0
- pyglove/core/views/base.py +14 -8
- pyglove/core/views/base_test.py +1 -1
- pyglove/core/views/html/__init__.py +1 -1
- pyglove/core/views/html/base.py +53 -79
- pyglove/core/views/html/base_test.py +17 -4
- pyglove/core/views/html/controls/__init__.py +35 -0
- pyglove/core/views/html/controls/base.py +238 -0
- pyglove/core/views/html/controls/label.py +190 -0
- pyglove/core/views/html/controls/label_test.py +138 -0
- pyglove/core/views/html/controls/progress_bar.py +185 -0
- pyglove/core/views/html/controls/progress_bar_test.py +97 -0
- pyglove/core/views/html/controls/tab.py +169 -0
- pyglove/core/views/html/controls/tab_test.py +54 -0
- pyglove/core/views/html/controls/tooltip.py +99 -0
- pyglove/core/views/html/controls/tooltip_test.py +99 -0
- pyglove/core/views/html/tree_view.py +24 -6
- pyglove/core/views/html/tree_view_test.py +7 -2
- {pyglove-0.4.5.dev202411030808.dist-info → pyglove-0.4.5.dev202411060809.dist-info}/METADATA +1 -1
- {pyglove-0.4.5.dev202411030808.dist-info → pyglove-0.4.5.dev202411060809.dist-info}/RECORD +28 -18
- {pyglove-0.4.5.dev202411030808.dist-info → pyglove-0.4.5.dev202411060809.dist-info}/LICENSE +0 -0
- {pyglove-0.4.5.dev202411030808.dist-info → pyglove-0.4.5.dev202411060809.dist-info}/WHEEL +0 -0
- {pyglove-0.4.5.dev202411030808.dist-info → pyglove-0.4.5.dev202411060809.dist-info}/top_level.txt +0 -0
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright 2024 The
|
1
|
+
# Copyright 2024 The PyGlove Authors
|
2
2
|
#
|
3
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
4
|
# you may not use this file except in compliance with the License.
|
@@ -17,6 +17,7 @@ import inspect
|
|
17
17
|
from typing import Any, Callable, Dict, Iterable, Literal, Optional, Sequence, Tuple, Union
|
18
18
|
|
19
19
|
from pyglove.core import object_utils
|
20
|
+
from pyglove.core.symbolic import base as pg_symbolic
|
20
21
|
from pyglove.core.views.html import base
|
21
22
|
|
22
23
|
|
@@ -192,7 +193,7 @@ class HtmlTreeView(HtmlView):
|
|
192
193
|
# NOTE(daiyip): update `get_kwargs()` and `get_passthrough_kwargs()` when new
|
193
194
|
# arguments are added.
|
194
195
|
@HtmlView.extension_method('_html_tree_view_render')
|
195
|
-
def
|
196
|
+
def _render(
|
196
197
|
self,
|
197
198
|
value: Any,
|
198
199
|
*,
|
@@ -855,8 +856,27 @@ class HtmlTreeView(HtmlView):
|
|
855
856
|
The rendered HTML as the main content of the value.
|
856
857
|
"""
|
857
858
|
root_path = root_path or KeyPath()
|
858
|
-
|
859
|
-
|
859
|
+
if isinstance(value, pg_symbolic.Symbolic):
|
860
|
+
extra_flags = extra_flags or {}
|
861
|
+
hide_frozen = extra_flags.get('hide_frozen', True)
|
862
|
+
hide_default_values = extra_flags.get('hide_default_values', False)
|
863
|
+
use_inferred = extra_flags.get('use_inferred', False)
|
864
|
+
items = {}
|
865
|
+
for k, v in value.sym_items():
|
866
|
+
# Apply frozen filter.
|
867
|
+
field = value.sym_attr_field(k)
|
868
|
+
if hide_frozen and field and field.frozen:
|
869
|
+
continue
|
870
|
+
|
871
|
+
# Apply inferred value.
|
872
|
+
if use_inferred and isinstance(v, pg_symbolic.Inferential):
|
873
|
+
v = value.sym_inferred(k, default=v)
|
874
|
+
|
875
|
+
# Apply default value filter.
|
876
|
+
if field and hide_default_values and v == field.default_value:
|
877
|
+
continue
|
878
|
+
items[k] = v
|
879
|
+
elif isinstance(value, (tuple, list)):
|
860
880
|
items = {i: v for i, v in enumerate(value)}
|
861
881
|
elif isinstance(value, dict):
|
862
882
|
items = value
|
@@ -1278,8 +1298,6 @@ class HtmlTreeView(HtmlView):
|
|
1278
1298
|
@staticmethod
|
1279
1299
|
def css_class_name(value: Any) -> Optional[str]:
|
1280
1300
|
"""Returns the CSS class name for the value."""
|
1281
|
-
# if isinstance(value, HtmlTreeView.Extension):
|
1282
|
-
# return Html.concate(value._html_element_class()) # pylint: disable=protected-access
|
1283
1301
|
if inspect.isclass(value):
|
1284
1302
|
class_name = f'{value.__name__}-class'
|
1285
1303
|
else:
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright 2024 The
|
1
|
+
# Copyright 2024 The PyGlove Authors
|
2
2
|
#
|
3
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
4
|
# you may not use this file except in compliance with the License.
|
@@ -11,7 +11,6 @@
|
|
11
11
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
12
|
# See the License for the specific language governing permissions and
|
13
13
|
# limitations under the License.
|
14
|
-
|
15
14
|
import inspect
|
16
15
|
from typing import Any
|
17
16
|
import unittest
|
@@ -852,6 +851,12 @@ class ContentTest(TestCase):
|
|
852
851
|
|
853
852
|
class RenderTest(TestCase):
|
854
853
|
|
854
|
+
def test_render_html_convertible(self):
|
855
|
+
class Foo(base.HtmlConvertible):
|
856
|
+
def to_html(self, **kwargs):
|
857
|
+
return base.Html('<span>foo</span>')
|
858
|
+
self.assert_content(base.to_html(Foo()), '<span>foo</span>')
|
859
|
+
|
855
860
|
def test_render(self):
|
856
861
|
class Foo:
|
857
862
|
def __str__(self):
|
@@ -1,5 +1,5 @@
|
|
1
1
|
pyglove/__init__.py,sha256=YPUWALRDu4QuI7N3TUmVaVr513hUt0qXrjY582I1q5c,1352
|
2
|
-
pyglove/core/__init__.py,sha256=
|
2
|
+
pyglove/core/__init__.py,sha256=FDGkzVlLR0FohA8_ZBFrxhEYxQWAGKe72mjUDjE_SDY,9293
|
3
3
|
pyglove/core/logging.py,sha256=Sr5nLyUQmc4CAEYAq8qbP3ghpjmpz2sOuhq2A0tgQ6I,2456
|
4
4
|
pyglove/core/logging_test.py,sha256=QM59tCAFOUKm4gM6ef_9eG1AvSGEYRDLrrprUQyslcA,1956
|
5
5
|
pyglove/core/detouring/__init__.py,sha256=ck_n2VSuU31HNVYQkbG4Zvnx90mNYtSVc2StN3rXbU8,1891
|
@@ -78,7 +78,7 @@ pyglove/core/patching/pattern_based_test.py,sha256=PW1EcVfsFPB6wtgwg3s4dzvigWn3b
|
|
78
78
|
pyglove/core/patching/rule_based.py,sha256=QJsDsYVpyfUoaTZeXZtAdFuxpvB1eniY0qYdZvVqzk0,17056
|
79
79
|
pyglove/core/patching/rule_based_test.py,sha256=qfy0ILmczV_LMHWEnwo2y079OrJsGYO0nKxSZdmIUcI,18782
|
80
80
|
pyglove/core/symbolic/__init__.py,sha256=jYq-LwR1Ql3iMChjz9lN-0heDKiocmxR0ZJFEJ8RHHQ,5787
|
81
|
-
pyglove/core/symbolic/base.py,sha256=
|
81
|
+
pyglove/core/symbolic/base.py,sha256=4xgxmMtmNe70Rhc7acC3mXO36WRxqG6YrDubb1f2TII,77473
|
82
82
|
pyglove/core/symbolic/base_test.py,sha256=YLMlQGF4TbxAB2PcN1-ckI70gRIVDxabv-goh43CV7A,7333
|
83
83
|
pyglove/core/symbolic/boilerplate.py,sha256=YO8ZTZJ3VfAqeHqJpIY_ORVDxc1XIzxdplNlpexWEyc,6000
|
84
84
|
pyglove/core/symbolic/boilerplate_test.py,sha256=1CZ1W6kq3l-3tpaknhGFa04V18bO7vPzis5qzWnxHEs,5252
|
@@ -88,7 +88,7 @@ pyglove/core/symbolic/compounding.py,sha256=zg6x09rtaSEb5v5pYJWWWpI5Cezy2Oy1iuWw
|
|
88
88
|
pyglove/core/symbolic/compounding_test.py,sha256=PSnk_ds0q6pRJrpN9teMwZtMrbUp5_P-D7ea7wRTK6k,8372
|
89
89
|
pyglove/core/symbolic/dict.py,sha256=gp2sn9nf7movorKWDQsbCQmj0PBdqFul0FYJLm5_kac,36839
|
90
90
|
pyglove/core/symbolic/dict_test.py,sha256=09kAEy_Kiwr8O59CIKK9a9KG-xxJJEIKbfEcZhs5KfU,70809
|
91
|
-
pyglove/core/symbolic/diff.py,sha256=
|
91
|
+
pyglove/core/symbolic/diff.py,sha256=UFjC6GnH_yzutuJHSao-di9qVeWL1amBYUJrEKmol3U,16351
|
92
92
|
pyglove/core/symbolic/diff_test.py,sha256=EDiGHqqKhi-NeMxr-bgjBEqlquee_4l_0IM6hgAb9Mg,29400
|
93
93
|
pyglove/core/symbolic/flags.py,sha256=GAF_QrthtDytO3DP61AgxWUgjBc89nnI4TJS4nZ_ng0,12097
|
94
94
|
pyglove/core/symbolic/flags_test.py,sha256=JDJcm6dYTlnktFsdNFjQszmHXf9bZnhrXMxi_jUiKUA,5483
|
@@ -99,11 +99,11 @@ pyglove/core/symbolic/inferred_test.py,sha256=G6uPykONcChvs6vZujXHSWaYfjewLTVBsc
|
|
99
99
|
pyglove/core/symbolic/list.py,sha256=63v4Ph0FdkoCDj1FjwcmjUHGZSJLBLxaTKcGg7PdghE,30345
|
100
100
|
pyglove/core/symbolic/list_test.py,sha256=yHYAJhe_EYwtU9p8eDztSXNBjnAGKe0UDN5U6S-xDr8,60627
|
101
101
|
pyglove/core/symbolic/object.py,sha256=1NdVMGoZiyuuxXIbQiW-n4NhUdHSuiedB-chx1n0BrQ,42349
|
102
|
-
pyglove/core/symbolic/object_test.py,sha256=
|
102
|
+
pyglove/core/symbolic/object_test.py,sha256=IRoeBr8j1SJVohDkEaat0KlW5YQfco6zARTh3qOW0Jc,93092
|
103
103
|
pyglove/core/symbolic/origin.py,sha256=5bH1jZvFHY5jwku32vDm8Bj2i-buv-YNuzOOsA5GlSA,6177
|
104
104
|
pyglove/core/symbolic/origin_test.py,sha256=dU_ZGrGDetM_lYVMn3wQO0d367_t_t8eESe3NrKPBNE,3159
|
105
105
|
pyglove/core/symbolic/pure_symbolic.py,sha256=FVq-5Cg5uZe3ybTIrTqTHIEJIpje0oxzV2kKL6UKlsU,3244
|
106
|
-
pyglove/core/symbolic/ref.py,sha256=
|
106
|
+
pyglove/core/symbolic/ref.py,sha256=6I2f_jbsmkXZzpGRk60Z0l_vlSdj7WJ39WmvsOyv5xg,8068
|
107
107
|
pyglove/core/symbolic/ref_test.py,sha256=AjzvXoBtR8lOp8BgQOejnSnLcvgM3Yxq9GIMaNb1i6Y,5786
|
108
108
|
pyglove/core/symbolic/symbolize.py,sha256=ohID9-V8QiFe7OMpPlRomiqUnKBVMpypd8ZuMuHaa4s,6582
|
109
109
|
pyglove/core/symbolic/symbolize_test.py,sha256=o7bRfMhGc6uw2FIH8arE99-bPb3i0YixcHYyiP-QqeQ,6487
|
@@ -139,14 +139,24 @@ pyglove/core/typing/typed_missing.py,sha256=5lzkrd-DqJDT8eoW1d8p6mxV3mvy5X78zFon
|
|
139
139
|
pyglove/core/typing/typed_missing_test.py,sha256=3k_s0JBYBJ_6xoOuPSMrQzqas6QHD0PHux0T9NlTBZc,2381
|
140
140
|
pyglove/core/typing/value_specs.py,sha256=V6m4RhCc4yi6H8X1LoptSk5gsa7ko8HgLYDSfVsMBtQ,99874
|
141
141
|
pyglove/core/typing/value_specs_test.py,sha256=kKwoEmGIXtM5JikhtbhcE4Ds-wSyYAsMTozHVa2Lpbc,122707
|
142
|
-
pyglove/core/views/__init__.py,sha256=
|
143
|
-
pyglove/core/views/base.py,sha256=
|
144
|
-
pyglove/core/views/base_test.py,sha256=
|
145
|
-
pyglove/core/views/html/__init__.py,sha256=
|
146
|
-
pyglove/core/views/html/base.py,sha256=
|
147
|
-
pyglove/core/views/html/base_test.py,sha256=
|
148
|
-
pyglove/core/views/html/tree_view.py,sha256=
|
149
|
-
pyglove/core/views/html/tree_view_test.py,sha256=
|
142
|
+
pyglove/core/views/__init__.py,sha256=gll9ZBRYz4p_-LWOdzSR2a6UTWcJ8nR430trrP0yLCU,967
|
143
|
+
pyglove/core/views/base.py,sha256=Eq94AM5lryQ1IKuQsTSb7ZzX-lp2nhuOnS4ztMnCPIM,26447
|
144
|
+
pyglove/core/views/base_test.py,sha256=UKbr_1TANOAnP7V5ICGF0UEkunfSaHiJ4nXZXhA0SaU,16642
|
145
|
+
pyglove/core/views/html/__init__.py,sha256=Ff51MK1AKdzLM0kczTqLR3fRlJSJLDaFUdVyCu_7-eY,1085
|
146
|
+
pyglove/core/views/html/base.py,sha256=PyS5B9N_Y2HS4q01X0uSUf3UbODn1UerfqPX1imLPac,15083
|
147
|
+
pyglove/core/views/html/base_test.py,sha256=5RVPNm4YTamTFu6yXA1p2lJg3JHQBKNNBoL977qBZvE,22782
|
148
|
+
pyglove/core/views/html/tree_view.py,sha256=3Db0aOke-A7Inp-vgqebsDMwJ0WvaznithkwcrfGbhg,52155
|
149
|
+
pyglove/core/views/html/tree_view_test.py,sha256=whUorrw0eiDaZsEzGB2B3EN3wx0vLFuNEe2RBU03GeU,74707
|
150
|
+
pyglove/core/views/html/controls/__init__.py,sha256=61qs5pnJPCTECCGBtkbNfIV3KcCu7cxfVNBEtIg1lMo,1318
|
151
|
+
pyglove/core/views/html/controls/base.py,sha256=eTUB2iJSBtD0sbkWE_LaVT1e4Sir6Q61HJ2j5OZxAsU,6615
|
152
|
+
pyglove/core/views/html/controls/label.py,sha256=p3coEqjTtilwXTREqpBIqWQyziGydBwmqFN6EMBufcI,5063
|
153
|
+
pyglove/core/views/html/controls/label_test.py,sha256=3ekn3aBO1O8iG_wHpZ7487wY2YRA6wyKeDN7275iR4U,4544
|
154
|
+
pyglove/core/views/html/controls/progress_bar.py,sha256=kLdY3JQLCOv00ShldnQg3Qs8l1j_pDk148FoKfrZB64,5275
|
155
|
+
pyglove/core/views/html/controls/progress_bar_test.py,sha256=6u1A6kAV8GY_vUMD6PSl7HuuOkVMELYqU32YEVx6qz8,3500
|
156
|
+
pyglove/core/views/html/controls/tab.py,sha256=9GFYQM5Cujya0d1txgDtmbTrwLQwALfYFDKwxAMAao0,4860
|
157
|
+
pyglove/core/views/html/controls/tab_test.py,sha256=yO_4U_7fBLM7Om3jACgApYbkHxesKNNrr4OVOkz6PNY,2012
|
158
|
+
pyglove/core/views/html/controls/tooltip.py,sha256=01BbpuM1twf3FYMUT09_Ck5JSSONe8QE9RmyA9nhCnU,3092
|
159
|
+
pyglove/core/views/html/controls/tooltip_test.py,sha256=17BY-WmZKpz9tCbySPcwG6KJyfeE_MeMyKxtfxorBQ0,3194
|
150
160
|
pyglove/ext/__init__.py,sha256=3jp8cJvKW6PENOZlmVAbT0w-GBRn_kjhc0wDX3XjpOE,755
|
151
161
|
pyglove/ext/early_stopping/__init__.py,sha256=_xkT3K_MycFuF3k2N74sfr9FPFcXMD3pfv5vuc4Tx5M,1116
|
152
162
|
pyglove/ext/early_stopping/base.py,sha256=KolexwKDAXhI9iY7hoaDO1mbc3TA4gDn0UifxURwbk0,2358
|
@@ -186,8 +196,8 @@ pyglove/ext/scalars/randoms.py,sha256=LkMIIx7lOq_lvJvVS3BrgWGuWl7Pi91-lA-O8x_gZs
|
|
186
196
|
pyglove/ext/scalars/randoms_test.py,sha256=nEhiqarg8l_5EOucp59CYrpO2uKxS1pe0hmBdZUzRNM,2000
|
187
197
|
pyglove/ext/scalars/step_wise.py,sha256=IDw3tuTpv0KVh7AN44W43zqm1-E0HWPUlytWOQC9w3Y,3789
|
188
198
|
pyglove/ext/scalars/step_wise_test.py,sha256=TL1vJ19xVx2t5HKuyIzGoogF7N3Rm8YhLE6JF7i0iy8,2540
|
189
|
-
pyglove-0.4.5.
|
190
|
-
pyglove-0.4.5.
|
191
|
-
pyglove-0.4.5.
|
192
|
-
pyglove-0.4.5.
|
193
|
-
pyglove-0.4.5.
|
199
|
+
pyglove-0.4.5.dev202411060809.dist-info/LICENSE,sha256=WNHhf_5RCaeuKWyq_K39vmp9F28LxKsB4SpomwSZ2L0,11357
|
200
|
+
pyglove-0.4.5.dev202411060809.dist-info/METADATA,sha256=34Kmg1uyduP4Q2zU5gZUvjo-3Xadt6QxI_v7wfsf548,6666
|
201
|
+
pyglove-0.4.5.dev202411060809.dist-info/WHEEL,sha256=P9jw-gEje8ByB7_hXoICnHtVCrEwMQh-630tKvQWehc,91
|
202
|
+
pyglove-0.4.5.dev202411060809.dist-info/top_level.txt,sha256=wITzJSKcj8GZUkbq-MvUQnFadkiuAv_qv5qQMw0fIow,8
|
203
|
+
pyglove-0.4.5.dev202411060809.dist-info/RECORD,,
|
File without changes
|
File without changes
|
{pyglove-0.4.5.dev202411030808.dist-info → pyglove-0.4.5.dev202411060809.dist-info}/top_level.txt
RENAMED
File without changes
|