pyglove 0.4.5.dev202410110105__py3-none-any.whl → 0.4.5.dev202410170809__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.
@@ -14,7 +14,7 @@
14
14
  """Symbolic reference."""
15
15
 
16
16
  import numbers
17
- from typing import Any, Callable, Optional, Tuple
17
+ from typing import Any, Callable, List, Optional, Tuple
18
18
  from pyglove.core import object_utils
19
19
  from pyglove.core import typing as pg_typing
20
20
  from pyglove.core.symbolic import base
@@ -182,14 +182,17 @@ class Ref(Object, base.Inferential):
182
182
  self,
183
183
  title=title or f'{type(self._value).__name__}(...)',
184
184
  **kwargs
185
- ).add_style(
185
+ )
186
+
187
+ def _html_style(self) -> List[str]:
188
+ return [
186
189
  """
187
190
  details.ref .summary_title::before {
188
191
  content: 'ref: ';
189
192
  color: #aaa;
190
193
  }
191
194
  """
192
- )
195
+ ]
193
196
 
194
197
 
195
198
  def maybe_ref(value: Any) -> Optional[Ref]:
@@ -54,9 +54,15 @@ class HtmlTreeView(HtmlView):
54
54
  """Returns the keys to include (at the immediate child level)."""
55
55
  return []
56
56
 
57
- def _html_tree_view_collapse_level(self) -> int:
58
- """Returns the level to collapse the tree (relative to this node)."""
59
- return 0
57
+ def _html_tree_view_uncollapse_level(self) -> Optional[int]:
58
+ """Returns the level of the subtree to uncollapse.
59
+
60
+ Returns:
61
+ The level of subtree to uncollapse. If None, the subtree will be fully
62
+ expanded. Please note that the uncollapsed subtree will show only when
63
+ current node is uncollapsed.
64
+ """
65
+ return 1
60
66
 
61
67
  def _html_tree_view_uncollapse(self) -> KeyPathSet:
62
68
  """Returns the node paths (relative to current node) to uncollapse."""
@@ -77,8 +83,10 @@ class HtmlTreeView(HtmlView):
77
83
  special_keys: Optional[Sequence[Union[int, str]]] = None,
78
84
  include_keys: Optional[Iterable[Union[int, str]]] = None,
79
85
  exclude_keys: Optional[Iterable[Union[int, str]]] = None,
80
- collapse_level: Optional[int] = 1,
81
- uncollapse: Union[KeyPathSet, base.NodeFilter, None] = None,
86
+ collapse_level: Optional[int] = HtmlView.PresetArgValue(1),
87
+ uncollapse: Union[
88
+ KeyPathSet, base.NodeFilter, None
89
+ ] = HtmlView.PresetArgValue(None),
82
90
  filter: Optional[base.NodeFilter] = HtmlView.PresetArgValue(None), # pylint: disable=redefined-builtin
83
91
  highlight: Optional[base.NodeFilter] = HtmlView.PresetArgValue(None),
84
92
  lowlight: Optional[base.NodeFilter] = HtmlView.PresetArgValue(None),
@@ -198,8 +206,10 @@ class HtmlTreeView(HtmlView):
198
206
  special_keys: Optional[Sequence[Union[int, str]]] = None,
199
207
  include_keys: Optional[Iterable[Union[int, str]]] = None,
200
208
  exclude_keys: Optional[Iterable[Union[int, str]]] = None,
201
- collapse_level: Optional[int] = 1,
202
- uncollapse: Union[KeyPathSet, base.NodeFilter, None] = None,
209
+ collapse_level: Optional[int] = HtmlView.PresetArgValue(1),
210
+ uncollapse: Union[
211
+ KeyPathSet, base.NodeFilter, None
212
+ ] = HtmlView.PresetArgValue(None),
203
213
  filter: Optional[base.NodeFilter] = HtmlView.PresetArgValue(None), # pylint: disable=redefined-builtin
204
214
  highlight: Optional[base.NodeFilter] = HtmlView.PresetArgValue(None),
205
215
  lowlight: Optional[base.NodeFilter] = HtmlView.PresetArgValue(None),
@@ -301,8 +311,10 @@ class HtmlTreeView(HtmlView):
301
311
  special_keys: Optional[Sequence[Union[int, str]]] = None,
302
312
  include_keys: Optional[Iterable[Union[int, str]]] = None,
303
313
  exclude_keys: Optional[Iterable[Union[int, str]]] = None,
304
- collapse_level: Optional[int] = 1,
305
- uncollapse: Union[KeyPathSet, base.NodeFilter, None] = None,
314
+ collapse_level: Optional[int] = HtmlView.PresetArgValue(1),
315
+ uncollapse: Union[
316
+ KeyPathSet, base.NodeFilter, None
317
+ ] = HtmlView.PresetArgValue(None),
306
318
  filter: Optional[base.NodeFilter] = HtmlView.PresetArgValue(None), # pylint: disable=redefined-builtin
307
319
  highlight: Optional[base.NodeFilter] = HtmlView.PresetArgValue(None),
308
320
  lowlight: Optional[base.NodeFilter] = HtmlView.PresetArgValue(None),
@@ -347,17 +359,17 @@ class HtmlTreeView(HtmlView):
347
359
  root_path = root_path or KeyPath()
348
360
  uncollapse = self.init_uncollapse(uncollapse)
349
361
 
362
+ child_collapse_level = collapse_level
350
363
  if isinstance(value, HtmlTreeView.Extension):
351
- extension_collapse_level = value._html_tree_view_collapse_level() # pylint: disable=protected-access
364
+ subtree_uncollapse_level = value._html_tree_view_uncollapse_level() # pylint: disable=protected-access
352
365
 
353
366
  # If the extension has child levels to uncollapse, honor them above the
354
367
  # collapse level passed from the root. However, we can see the
355
368
  # uncollapsed extension subtree only when the extension's parent node is
356
369
  # uncollapsed.
357
- if (extension_collapse_level > 0
358
- and root_path.depth + extension_collapse_level > collapse_level):
359
- collapse_level = root_path.depth + extension_collapse_level
360
-
370
+ child_collapse_level = self.max_collapse_level(
371
+ collapse_level, subtree_uncollapse_level, root_path
372
+ )
361
373
  if not callable(uncollapse):
362
374
  extension_uncollapse = value._html_tree_view_uncollapse().copy() # pylint: disable=protected-access
363
375
  if extension_uncollapse:
@@ -384,7 +396,7 @@ class HtmlTreeView(HtmlView):
384
396
  special_keys=special_keys,
385
397
  include_keys=include_keys,
386
398
  exclude_keys=exclude_keys,
387
- collapse_level=collapse_level,
399
+ collapse_level=child_collapse_level,
388
400
  uncollapse=uncollapse,
389
401
  max_summary_len_for_str=max_summary_len_for_str,
390
402
  enable_summary_tooltip=enable_summary_tooltip,
@@ -703,8 +715,10 @@ class HtmlTreeView(HtmlView):
703
715
  special_keys: Optional[Sequence[Union[int, str]]] = None,
704
716
  include_keys: Optional[Iterable[Union[int, str]]] = None,
705
717
  exclude_keys: Optional[Iterable[Union[int, str]]] = None,
706
- collapse_level: Optional[int] = 1,
707
- uncollapse: Union[KeyPathSet, base.NodeFilter, None] = None,
718
+ collapse_level: Optional[int] = HtmlView.PresetArgValue(1),
719
+ uncollapse: Union[
720
+ KeyPathSet, base.NodeFilter, None
721
+ ] = HtmlView.PresetArgValue(None),
708
722
  filter: Optional[base.NodeFilter] = HtmlView.PresetArgValue(None), # pylint: disable=redefined-builtin
709
723
  highlight: Optional[base.NodeFilter] = HtmlView.PresetArgValue(None),
710
724
  lowlight: Optional[base.NodeFilter] = HtmlView.PresetArgValue(None),
@@ -848,8 +862,10 @@ class HtmlTreeView(HtmlView):
848
862
  special_keys: Optional[Sequence[Union[int, str]]] = None,
849
863
  include_keys: Optional[Iterable[Union[int, str]]] = None,
850
864
  exclude_keys: Optional[Iterable[Union[int, str]]] = None,
851
- collapse_level: Optional[int] = 1,
852
- uncollapse: Union[KeyPathSet, base.NodeFilter, None] = None,
865
+ collapse_level: Optional[int] = HtmlView.PresetArgValue(1),
866
+ uncollapse: Union[
867
+ KeyPathSet, base.NodeFilter, None
868
+ ] = HtmlView.PresetArgValue(None),
853
869
  filter: Optional[base.NodeFilter] = HtmlView.PresetArgValue(None), # pylint: disable=redefined-builtin
854
870
  highlight: Optional[base.NodeFilter] = HtmlView.PresetArgValue(None),
855
871
  lowlight: Optional[base.NodeFilter] = HtmlView.PresetArgValue(None),
@@ -1108,6 +1124,17 @@ class HtmlTreeView(HtmlView):
1108
1124
  value = value if inspect.isclass(value) else type(value)
1109
1125
  return object_utils.camel_to_snake(value.__name__, '-')
1110
1126
 
1127
+ @staticmethod
1128
+ def max_collapse_level(
1129
+ original_level: int | None,
1130
+ subtree_uncollapse_level: int | None,
1131
+ root_path: KeyPath
1132
+ ) -> int | None:
1133
+ """Consolidates the collapse level."""
1134
+ if original_level is None or subtree_uncollapse_level is None:
1135
+ return None
1136
+ return max(original_level, root_path.depth + subtree_uncollapse_level)
1137
+
1111
1138
 
1112
1139
  _REGEX_CAMEL_TO_SNAKE = re.compile(r'(?<!^)(?=[A-Z])')
1113
1140
 
@@ -578,16 +578,18 @@ class ContentTest(TestCase):
578
578
  'open',
579
579
  4
580
580
  )
581
- self.assert_count(
582
- self._view.content(x, collapse_level=4),
583
- 'open',
584
- 6
585
- )
586
- self.assert_count(
587
- self._view.content(x, collapse_level=None),
588
- 'open',
589
- 8
590
- )
581
+ with base.HtmlView.preset_args(collapse_level=4):
582
+ self.assert_count(
583
+ self._view.content(x),
584
+ 'open',
585
+ 6
586
+ )
587
+ with base.HtmlView.preset_args(collapse_level=None):
588
+ self.assert_count(
589
+ self._view.content(x),
590
+ 'open',
591
+ 8
592
+ )
591
593
 
592
594
  def test_uncollapse(self):
593
595
  x = dict(
@@ -729,8 +731,8 @@ class ExtensionTest(TestCase):
729
731
  def _html_tree_view_exclude_keys(self) -> Sequence[str]:
730
732
  return ['z']
731
733
 
732
- def _html_tree_view_collapse_level(self) -> int:
733
- return 1
734
+ def _html_tree_view_uncollapse_level(self) -> int:
735
+ return 2
734
736
 
735
737
  def _html_tree_view_uncollapse(self) -> KeyPathSet:
736
738
  return KeyPathSet(['x.a', 'y.b'], include_intermediate=True)
@@ -771,7 +773,29 @@ class ExtensionTest(TestCase):
771
773
  collapse_level=0,
772
774
  ),
773
775
  """
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>
776
+ <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 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">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>
777
+ """
778
+ )
779
+ self.assert_content(
780
+ self._view.render(
781
+ [Foo()],
782
+ enable_summary_tooltip=False,
783
+ enable_key_tooltip=False,
784
+ collapse_level=1,
785
+ ),
786
+ """
787
+ <details open 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 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">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>
788
+ """
789
+ )
790
+ self.assert_content(
791
+ self._view.render(
792
+ [Foo()],
793
+ enable_summary_tooltip=False,
794
+ enable_key_tooltip=False,
795
+ collapse_level=None,
796
+ ),
797
+ """
798
+ <details open 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 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">d</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">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
799
  """
776
800
  )
777
801
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pyglove
3
- Version: 0.4.5.dev202410110105
3
+ Version: 0.4.5.dev202410170809
4
4
  Summary: PyGlove: A library for manipulating Python objects.
5
5
  Home-page: https://github.com/google/pyglove
6
6
  Author: PyGlove Authors
@@ -101,7 +101,7 @@ pyglove/core/symbolic/object_test.py,sha256=9-iwW3WVXfQnN4Jj2nlWFXAMJz3PEAYVlINg
101
101
  pyglove/core/symbolic/origin.py,sha256=5bH1jZvFHY5jwku32vDm8Bj2i-buv-YNuzOOsA5GlSA,6177
102
102
  pyglove/core/symbolic/origin_test.py,sha256=dU_ZGrGDetM_lYVMn3wQO0d367_t_t8eESe3NrKPBNE,3159
103
103
  pyglove/core/symbolic/pure_symbolic.py,sha256=FVq-5Cg5uZe3ybTIrTqTHIEJIpje0oxzV2kKL6UKlsU,3244
104
- pyglove/core/symbolic/ref.py,sha256=DX5Hsn7TOv25vgyCUtnFFDmYdCg5VGoWggUnGr4UMak,7596
104
+ pyglove/core/symbolic/ref.py,sha256=Edw6tnCvDSnZeMkHaX4U_kIiYyquWeOYTdVpQsIEkMw,7643
105
105
  pyglove/core/symbolic/ref_test.py,sha256=KW6a-m7UwHcIAp94ku95ClMGQ9Tj3kX2cnx6EVNb1CI,8426
106
106
  pyglove/core/symbolic/symbolize.py,sha256=ohID9-V8QiFe7OMpPlRomiqUnKBVMpypd8ZuMuHaa4s,6582
107
107
  pyglove/core/symbolic/symbolize_test.py,sha256=o7bRfMhGc6uw2FIH8arE99-bPb3i0YixcHYyiP-QqeQ,6487
@@ -143,8 +143,8 @@ pyglove/core/views/base_test.py,sha256=_sFd2ynUgVoAF4aCv33Gg1m9WvMjl1pPXosOQExma
143
143
  pyglove/core/views/html/__init__.py,sha256=FpwzhpomAkIjaOQh6mkIjaXC0KWHvGFIRCAQUAdxdC8,1029
144
144
  pyglove/core/views/html/base.py,sha256=xOjCQj-l2kb82yXVr9RFpK7U3jwJNo8y7DJ35Qr_cAw,15463
145
145
  pyglove/core/views/html/base_test.py,sha256=ZUAhwfjNTOusxLBJXfEvqRJL70QukzJ2j4bGyOb3tFA,22059
146
- pyglove/core/views/html/tree_view.py,sha256=hlKZH_FAc7rOL22p1a5o8E3xNlrQxd2A4WOzEhLZTvE,40121
147
- pyglove/core/views/html/tree_view_test.py,sha256=ZbzYKrtU_sDaYHKBGLsasC-4mCQSkStaPBMcJ204xco,42359
146
+ pyglove/core/views/html/tree_view.py,sha256=y_bWlgR0UhWSH83UIHbRKbO-vd8eNEWHfc-cDWDFa5Y,41041
147
+ pyglove/core/views/html/tree_view_test.py,sha256=4h_mtjuwBtaWgYDVh5WWuUV0l7WC_raKh2bJfugzbIE,47204
148
148
  pyglove/ext/__init__.py,sha256=3jp8cJvKW6PENOZlmVAbT0w-GBRn_kjhc0wDX3XjpOE,755
149
149
  pyglove/ext/early_stopping/__init__.py,sha256=_xkT3K_MycFuF3k2N74sfr9FPFcXMD3pfv5vuc4Tx5M,1116
150
150
  pyglove/ext/early_stopping/base.py,sha256=KolexwKDAXhI9iY7hoaDO1mbc3TA4gDn0UifxURwbk0,2358
@@ -184,8 +184,8 @@ pyglove/ext/scalars/randoms.py,sha256=LkMIIx7lOq_lvJvVS3BrgWGuWl7Pi91-lA-O8x_gZs
184
184
  pyglove/ext/scalars/randoms_test.py,sha256=nEhiqarg8l_5EOucp59CYrpO2uKxS1pe0hmBdZUzRNM,2000
185
185
  pyglove/ext/scalars/step_wise.py,sha256=IDw3tuTpv0KVh7AN44W43zqm1-E0HWPUlytWOQC9w3Y,3789
186
186
  pyglove/ext/scalars/step_wise_test.py,sha256=TL1vJ19xVx2t5HKuyIzGoogF7N3Rm8YhLE6JF7i0iy8,2540
187
- pyglove-0.4.5.dev202410110105.dist-info/LICENSE,sha256=WNHhf_5RCaeuKWyq_K39vmp9F28LxKsB4SpomwSZ2L0,11357
188
- pyglove-0.4.5.dev202410110105.dist-info/METADATA,sha256=TpSgORxENh7dTGyJZaxm93E3XCa_xCW627N66kHx1Pc,6666
189
- pyglove-0.4.5.dev202410110105.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
190
- pyglove-0.4.5.dev202410110105.dist-info/top_level.txt,sha256=wITzJSKcj8GZUkbq-MvUQnFadkiuAv_qv5qQMw0fIow,8
191
- pyglove-0.4.5.dev202410110105.dist-info/RECORD,,
187
+ pyglove-0.4.5.dev202410170809.dist-info/LICENSE,sha256=WNHhf_5RCaeuKWyq_K39vmp9F28LxKsB4SpomwSZ2L0,11357
188
+ pyglove-0.4.5.dev202410170809.dist-info/METADATA,sha256=MSaRDIGEA0t_jgX63SPwhVYnjGTTEhaUSUrz6F_v_L4,6666
189
+ pyglove-0.4.5.dev202410170809.dist-info/WHEEL,sha256=OVMc5UfuAQiSplgO0_WdW7vXVGAt9Hdd6qtN4HotdyA,91
190
+ pyglove-0.4.5.dev202410170809.dist-info/top_level.txt,sha256=wITzJSKcj8GZUkbq-MvUQnFadkiuAv_qv5qQMw0fIow,8
191
+ pyglove-0.4.5.dev202410170809.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.1.0)
2
+ Generator: setuptools (75.2.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5