pyglove 0.4.5.dev20240319__py3-none-any.whl → 0.4.5.dev202501132210__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.
Files changed (145) hide show
  1. pyglove/core/__init__.py +54 -20
  2. pyglove/core/coding/__init__.py +42 -0
  3. pyglove/core/coding/errors.py +111 -0
  4. pyglove/core/coding/errors_test.py +98 -0
  5. pyglove/core/coding/execution.py +309 -0
  6. pyglove/core/coding/execution_test.py +333 -0
  7. pyglove/core/{object_utils/codegen.py → coding/function_generation.py} +10 -4
  8. pyglove/core/{object_utils/codegen_test.py → coding/function_generation_test.py} +5 -7
  9. pyglove/core/coding/parsing.py +153 -0
  10. pyglove/core/coding/parsing_test.py +150 -0
  11. pyglove/core/coding/permissions.py +100 -0
  12. pyglove/core/coding/permissions_test.py +93 -0
  13. pyglove/core/geno/base.py +54 -41
  14. pyglove/core/geno/base_test.py +2 -4
  15. pyglove/core/geno/categorical.py +37 -28
  16. pyglove/core/geno/custom.py +19 -16
  17. pyglove/core/geno/numerical.py +20 -17
  18. pyglove/core/geno/space.py +4 -5
  19. pyglove/core/hyper/base.py +6 -6
  20. pyglove/core/hyper/categorical.py +94 -55
  21. pyglove/core/hyper/custom.py +7 -7
  22. pyglove/core/hyper/custom_test.py +9 -10
  23. pyglove/core/hyper/derived.py +30 -22
  24. pyglove/core/hyper/derived_test.py +2 -4
  25. pyglove/core/hyper/dynamic_evaluation.py +5 -6
  26. pyglove/core/hyper/evolvable.py +57 -46
  27. pyglove/core/hyper/numerical.py +48 -24
  28. pyglove/core/hyper/numerical_test.py +9 -9
  29. pyglove/core/hyper/object_template.py +58 -46
  30. pyglove/core/io/__init__.py +1 -0
  31. pyglove/core/io/file_system.py +17 -7
  32. pyglove/core/io/file_system_test.py +2 -0
  33. pyglove/core/io/sequence.py +299 -0
  34. pyglove/core/io/sequence_test.py +124 -0
  35. pyglove/core/logging_test.py +0 -2
  36. pyglove/core/patching/object_factory.py +4 -4
  37. pyglove/core/patching/pattern_based.py +4 -4
  38. pyglove/core/patching/rule_based.py +17 -5
  39. pyglove/core/patching/rule_based_test.py +27 -4
  40. pyglove/core/symbolic/__init__.py +2 -7
  41. pyglove/core/symbolic/base.py +320 -183
  42. pyglove/core/symbolic/base_test.py +123 -19
  43. pyglove/core/symbolic/boilerplate.py +7 -13
  44. pyglove/core/symbolic/boilerplate_test.py +25 -23
  45. pyglove/core/symbolic/class_wrapper.py +48 -45
  46. pyglove/core/symbolic/class_wrapper_test.py +2 -2
  47. pyglove/core/symbolic/compounding.py +9 -15
  48. pyglove/core/symbolic/compounding_test.py +2 -4
  49. pyglove/core/symbolic/dict.py +154 -110
  50. pyglove/core/symbolic/dict_test.py +238 -130
  51. pyglove/core/symbolic/diff.py +199 -10
  52. pyglove/core/symbolic/diff_test.py +226 -0
  53. pyglove/core/symbolic/flags.py +1 -1
  54. pyglove/core/symbolic/functor.py +29 -26
  55. pyglove/core/symbolic/functor_test.py +102 -50
  56. pyglove/core/symbolic/inferred.py +2 -2
  57. pyglove/core/symbolic/list.py +81 -50
  58. pyglove/core/symbolic/list_test.py +119 -97
  59. pyglove/core/symbolic/object.py +225 -113
  60. pyglove/core/symbolic/object_test.py +320 -108
  61. pyglove/core/symbolic/origin.py +17 -14
  62. pyglove/core/symbolic/origin_test.py +4 -2
  63. pyglove/core/symbolic/pure_symbolic.py +4 -3
  64. pyglove/core/symbolic/ref.py +108 -21
  65. pyglove/core/symbolic/ref_test.py +93 -0
  66. pyglove/core/symbolic/symbolize_test.py +10 -2
  67. pyglove/core/tuning/local_backend.py +2 -2
  68. pyglove/core/tuning/protocols.py +3 -3
  69. pyglove/core/tuning/sample_test.py +3 -3
  70. pyglove/core/typing/__init__.py +14 -5
  71. pyglove/core/typing/annotation_conversion.py +43 -27
  72. pyglove/core/typing/annotation_conversion_test.py +23 -0
  73. pyglove/core/typing/callable_ext.py +241 -3
  74. pyglove/core/typing/callable_ext_test.py +255 -0
  75. pyglove/core/typing/callable_signature.py +510 -66
  76. pyglove/core/typing/callable_signature_test.py +619 -99
  77. pyglove/core/typing/class_schema.py +229 -154
  78. pyglove/core/typing/class_schema_test.py +149 -95
  79. pyglove/core/typing/custom_typing.py +5 -4
  80. pyglove/core/typing/inspect.py +63 -0
  81. pyglove/core/typing/inspect_test.py +39 -0
  82. pyglove/core/typing/key_specs.py +10 -11
  83. pyglove/core/typing/key_specs_test.py +7 -4
  84. pyglove/core/typing/type_conversion.py +4 -5
  85. pyglove/core/typing/type_conversion_test.py +12 -12
  86. pyglove/core/typing/typed_missing.py +6 -7
  87. pyglove/core/typing/typed_missing_test.py +7 -8
  88. pyglove/core/typing/value_specs.py +604 -362
  89. pyglove/core/typing/value_specs_test.py +328 -90
  90. pyglove/core/utils/__init__.py +164 -0
  91. pyglove/core/{object_utils → utils}/common_traits.py +3 -67
  92. pyglove/core/utils/common_traits_test.py +36 -0
  93. pyglove/core/{object_utils → utils}/docstr_utils.py +23 -0
  94. pyglove/core/{object_utils → utils}/docstr_utils_test.py +36 -4
  95. pyglove/core/{object_utils → utils}/error_utils.py +78 -9
  96. pyglove/core/{object_utils → utils}/error_utils_test.py +61 -5
  97. pyglove/core/utils/formatting.py +464 -0
  98. pyglove/core/utils/formatting_test.py +453 -0
  99. pyglove/core/{object_utils → utils}/hierarchical.py +23 -25
  100. pyglove/core/{object_utils → utils}/hierarchical_test.py +3 -5
  101. pyglove/core/{object_utils → utils}/json_conversion.py +177 -52
  102. pyglove/core/{object_utils → utils}/json_conversion_test.py +97 -16
  103. pyglove/core/{object_utils → utils}/missing.py +3 -3
  104. pyglove/core/{object_utils → utils}/missing_test.py +2 -4
  105. pyglove/core/utils/text_color.py +128 -0
  106. pyglove/core/utils/text_color_test.py +94 -0
  107. pyglove/core/{object_utils → utils}/thread_local_test.py +1 -3
  108. pyglove/core/utils/timing.py +236 -0
  109. pyglove/core/utils/timing_test.py +154 -0
  110. pyglove/core/{object_utils → utils}/value_location.py +275 -6
  111. pyglove/core/utils/value_location_test.py +707 -0
  112. pyglove/core/views/__init__.py +32 -0
  113. pyglove/core/views/base.py +804 -0
  114. pyglove/core/views/base_test.py +580 -0
  115. pyglove/core/views/html/__init__.py +27 -0
  116. pyglove/core/views/html/base.py +547 -0
  117. pyglove/core/views/html/base_test.py +830 -0
  118. pyglove/core/views/html/controls/__init__.py +35 -0
  119. pyglove/core/views/html/controls/base.py +275 -0
  120. pyglove/core/views/html/controls/label.py +207 -0
  121. pyglove/core/views/html/controls/label_test.py +157 -0
  122. pyglove/core/views/html/controls/progress_bar.py +183 -0
  123. pyglove/core/views/html/controls/progress_bar_test.py +97 -0
  124. pyglove/core/views/html/controls/tab.py +320 -0
  125. pyglove/core/views/html/controls/tab_test.py +87 -0
  126. pyglove/core/views/html/controls/tooltip.py +99 -0
  127. pyglove/core/views/html/controls/tooltip_test.py +99 -0
  128. pyglove/core/views/html/tree_view.py +1517 -0
  129. pyglove/core/views/html/tree_view_test.py +1461 -0
  130. {pyglove-0.4.5.dev20240319.dist-info → pyglove-0.4.5.dev202501132210.dist-info}/METADATA +18 -4
  131. pyglove-0.4.5.dev202501132210.dist-info/RECORD +214 -0
  132. {pyglove-0.4.5.dev20240319.dist-info → pyglove-0.4.5.dev202501132210.dist-info}/WHEEL +1 -1
  133. pyglove/core/object_utils/__init__.py +0 -154
  134. pyglove/core/object_utils/common_traits_test.py +0 -82
  135. pyglove/core/object_utils/formatting.py +0 -234
  136. pyglove/core/object_utils/formatting_test.py +0 -223
  137. pyglove/core/object_utils/value_location_test.py +0 -385
  138. pyglove/core/symbolic/schema_utils.py +0 -327
  139. pyglove/core/symbolic/schema_utils_test.py +0 -57
  140. pyglove/core/typing/class_schema_utils.py +0 -202
  141. pyglove/core/typing/class_schema_utils_test.py +0 -194
  142. pyglove-0.4.5.dev20240319.dist-info/RECORD +0 -185
  143. /pyglove/core/{object_utils → utils}/thread_local.py +0 -0
  144. {pyglove-0.4.5.dev20240319.dist-info → pyglove-0.4.5.dev202501132210.dist-info}/LICENSE +0 -0
  145. {pyglove-0.4.5.dev20240319.dist-info → pyglove-0.4.5.dev202501132210.dist-info}/top_level.txt +0 -0
@@ -1,194 +0,0 @@
1
- # Copyright 2022 The PyGlove Authors
2
- #
3
- # Licensed under the Apache License, Version 2.0 (the "License");
4
- # you may not use this file except in compliance with the License.
5
- # You may obtain a copy of the License at
6
- #
7
- # http://www.apache.org/licenses/LICENSE-2.0
8
- #
9
- # Unless required by applicable law or agreed to in writing, software
10
- # distributed under the License is distributed on an "AS IS" BASIS,
11
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- # See the License for the specific language governing permissions and
13
- # limitations under the License.
14
- """Tests for pyglove.core.typing.class_schema_utils."""
15
-
16
- import unittest
17
-
18
- from pyglove.core import object_utils
19
- from pyglove.core.typing import annotation_conversion # pylint: disable=unused-import
20
- from pyglove.core.typing import callable_signature
21
- from pyglove.core.typing import class_schema
22
- from pyglove.core.typing import class_schema_utils
23
- from pyglove.core.typing import key_specs as ks
24
- from pyglove.core.typing import value_specs as vs
25
-
26
-
27
- class GetArgFieldsTest(unittest.TestCase):
28
- """Tests for `get_arg_fields`."""
29
-
30
- def test_basics(self):
31
- signature = callable_signature.get_signature(
32
- lambda a, *args, b=1, **kwargs: 1)
33
- arg_fields = class_schema_utils.get_arg_fields(signature)
34
- self.assertEqual(arg_fields, [
35
- class_schema.Field('a', vs.Any()),
36
- class_schema.Field(
37
- 'args', vs.List(vs.Any(), default=[])),
38
- class_schema.Field(
39
- 'b', vs.Any().set_default(1)),
40
- class_schema.Field(ks.StrKey(), vs.Any())
41
- ])
42
-
43
- def test_full_typing(self):
44
- signature = callable_signature.get_signature(
45
- lambda a, *args, b='foo', **kwargs: 1)
46
- arg_fields = class_schema_utils.get_arg_fields(signature, [
47
- ('b', vs.Str()),
48
- ('args', vs.List(vs.Int())),
49
- ('a', vs.Int()),
50
- ('c', vs.Str()),
51
- ])
52
- self.assertEqual(arg_fields, [
53
- class_schema.Field('a', vs.Int()),
54
- class_schema.Field('args', vs.List(vs.Int(), default=[])),
55
- class_schema.Field('b', vs.Str(default='foo')),
56
- class_schema.Field('c', vs.Str()),
57
- class_schema.Field(ks.StrKey(), vs.Any())
58
- ])
59
-
60
- def test_partial_typing(self):
61
- signature = callable_signature.get_signature(lambda a, b='foo': 1)
62
- arg_fields = class_schema_utils.get_arg_fields(signature, [
63
- ('b', vs.Str()),
64
- ])
65
- self.assertEqual(arg_fields, [
66
- class_schema.Field('a', vs.Any()),
67
- class_schema.Field('b', vs.Str(default='foo')),
68
- ])
69
-
70
- # Special cases for Dict
71
- signature = callable_signature.get_signature(lambda a: 1)
72
- arg_fields = class_schema_utils.get_arg_fields(signature, [
73
- ('a', vs.Dict([
74
- ('x', vs.Int())
75
- ])),
76
- ])
77
- self.assertEqual(arg_fields, [
78
- class_schema.Field('a', vs.Dict([('x', vs.Int())]))
79
- ])
80
-
81
- def test_use_docstr_as_description(self):
82
- signature = callable_signature.get_signature(
83
- lambda a, *args, b='foo', **kwargs: 1)
84
- arg_fields = class_schema_utils.get_arg_fields(
85
- signature,
86
- [
87
- ('a', vs.Int()),
88
- ('b', vs.Str(default='foo'), 'Original description for b'),
89
- ],
90
- {
91
- 'a': object_utils.DocStrArgument(name='a', description='An int'),
92
- 'b': object_utils.DocStrArgument(name='b', description='A str'),
93
- '*args': object_utils.DocStrArgument(name='*args',
94
- description='Args'),
95
- '**kwargs': object_utils.DocStrArgument(name='**kwargs',
96
- description='Kwargs'),
97
- })
98
- self.assertEqual(arg_fields, [
99
- class_schema.Field('a', vs.Int(), 'An int'),
100
- class_schema.Field(
101
- 'args', vs.List(vs.Any(), default=[]), 'Args'),
102
- class_schema.Field('b', vs.Str(default='foo'),
103
- 'Original description for b'),
104
- class_schema.Field(ks.StrKey(), vs.Any(), 'Kwargs')
105
- ])
106
-
107
- def test_bad_typing(self):
108
- with self.assertRaisesRegex(
109
- KeyError, 'multiple StrKey found in symbolic arguments declaration.'):
110
- class_schema_utils.get_arg_fields(
111
- callable_signature.get_signature(lambda a: 1),
112
- [(ks.StrKey(), vs.Int()), (ks.StrKey(), vs.Int())])
113
-
114
- with self.assertRaisesRegex(
115
- KeyError, 'multiple symbolic fields found for argument \'a\'.'):
116
- class_schema_utils.get_arg_fields(
117
- callable_signature.get_signature(lambda a: 1),
118
- [('a', vs.Int()), ('a', vs.Int())])
119
-
120
- with self.assertRaisesRegex(
121
- KeyError, 'found extra symbolic argument \'b\'.'):
122
- class_schema_utils.get_arg_fields(
123
- callable_signature.get_signature(lambda a: 1),
124
- [('b', vs.Int())])
125
-
126
- with self.assertRaisesRegex(
127
- TypeError, 'Expect .* but encountered .*.'):
128
- class_schema_utils.get_arg_fields(
129
- callable_signature.get_signature(lambda a=1: 1),
130
- [('a', vs.Str())])
131
-
132
- with self.assertRaisesRegex(
133
- ValueError,
134
- 'the default value .* of symbolic argument \'a\' does not equal '
135
- 'to the default value .* specified at function signature'):
136
- class_schema_utils.get_arg_fields(
137
- callable_signature.get_signature(lambda a=1: 1),
138
- [('a', vs.Int(default=2))])
139
-
140
- with self.assertRaisesRegex(
141
- ValueError,
142
- 'the default value .* of symbolic argument \'a\' does not equal '
143
- 'to the default value .* specified at function signature'):
144
- class_schema_utils.get_arg_fields(
145
- callable_signature.get_signature(lambda a={}: 1),
146
- [('a', vs.Dict([('x', vs.Int())]))])
147
-
148
- with self.assertRaisesRegex(
149
- ValueError,
150
- '.*the value spec for positional wildcard argument .* must be a '
151
- '`pg.typing.List` instance'):
152
- class_schema_utils.get_arg_fields(
153
- callable_signature.get_signature(lambda a, *args: 1),
154
- [('args', vs.Int())])
155
-
156
-
157
- class EnsureValueSpecTest(unittest.TestCase):
158
- """Tests for `ensure_value_spec`."""
159
-
160
- def test_basics(self):
161
- self.assertEqual(
162
- class_schema_utils.ensure_value_spec(
163
- vs.Int(min_value=1), vs.Int()),
164
- vs.Int(min_value=1))
165
-
166
- self.assertEqual(
167
- class_schema_utils.ensure_value_spec(
168
- vs.Int(min_value=1), vs.Number(int)),
169
- vs.Int(min_value=1))
170
-
171
- with self.assertRaisesRegex(
172
- TypeError, 'Source spec .* is not compatible with destination spec'):
173
- class_schema_utils.ensure_value_spec(
174
- vs.Int(min_value=1), vs.Bool())
175
-
176
- def test_union(self):
177
- self.assertEqual(
178
- class_schema_utils.ensure_value_spec(
179
- vs.Union([vs.Int(), vs.Str(regex='a.*')]),
180
- vs.Str()), vs.Str(regex='a.*'))
181
-
182
- with self.assertRaisesRegex(
183
- TypeError, 'Source spec .* is not compatible with destination spec'):
184
- class_schema_utils.ensure_value_spec(
185
- vs.Union([vs.Int(), vs.Str()]),
186
- vs.Bool())
187
-
188
- def test_any(self):
189
- self.assertIsNone(
190
- class_schema_utils.ensure_value_spec(vs.Any(), vs.Int()))
191
-
192
-
193
- if __name__ == '__main__':
194
- unittest.main()
@@ -1,185 +0,0 @@
1
- pyglove/__init__.py,sha256=YPUWALRDu4QuI7N3TUmVaVr513hUt0qXrjY582I1q5c,1352
2
- pyglove/core/__init__.py,sha256=ZRZ6W5BZLZ6pLhmpXc356n_i_Mty-MxpFtUR9meZj_I,8666
3
- pyglove/core/logging.py,sha256=Sr5nLyUQmc4CAEYAq8qbP3ghpjmpz2sOuhq2A0tgQ6I,2456
4
- pyglove/core/logging_test.py,sha256=QM59tCAFOUKm4gM6ef_9eG1AvSGEYRDLrrprUQyslcA,1956
5
- pyglove/core/detouring/__init__.py,sha256=ck_n2VSuU31HNVYQkbG4Zvnx90mNYtSVc2StN3rXbU8,1891
6
- pyglove/core/detouring/class_detour.py,sha256=ejuUr7UfRU3l9PrDxD0dpKmt2iqdDU6liHdebA1jEfQ,13312
7
- pyglove/core/detouring/class_detour_test.py,sha256=9aAK6qPiT0_HJe5oUpqMVTpoHv0wr_h6c4gWYKMTJoM,5507
8
- pyglove/core/geno/__init__.py,sha256=cWA583n7JpsGUkGtoTlMMX83tNS7geRBKFsoPEvFZ4A,4767
9
- pyglove/core/geno/base.py,sha256=qVXTjd9sEtmt4beNq7oS0PmAPAj8N7Zcfywj9IGZEtc,64624
10
- pyglove/core/geno/base_test.py,sha256=ytYVK1RhnlZYqYEP9Clfh48vV_RgU-UJB-wbCRmyy_U,38561
11
- pyglove/core/geno/categorical.py,sha256=1AlExUEcEi6s5LoLh4CuhXEyKvERn7b6TLHmxVTjK6A,28154
12
- pyglove/core/geno/categorical_test.py,sha256=23UkOPhDSvonxxM_1YoBYp723Xim-BmBzywl612CRyg,18444
13
- pyglove/core/geno/custom.py,sha256=cq0lBlgX39ryVEq-6TuPyABtKh-6JyZvNROi7lg_e3g,7194
14
- pyglove/core/geno/custom_test.py,sha256=kjHcKRYA-Uaw6AUnOMhVjBs9is37mUS8X3VdZHXxr0k,5938
15
- pyglove/core/geno/deduping.py,sha256=SmfrY8uz4zUuKInaWSKIB0vm_6CVWgqrfhiwragxM7I,5205
16
- pyglove/core/geno/deduping_test.py,sha256=zP9XGbfw4tmHgBMv8xP2EMZ2-AJc2UomAP_Ud1aSr-c,4583
17
- pyglove/core/geno/dna_generator.py,sha256=BwHnjdbVPP_ic04481dhm2pCcFoRmH8PB1o884W8aUs,8959
18
- pyglove/core/geno/dna_generator_test.py,sha256=vdQ7H8Zg7pvhjJyUbUaK6z8JIB8QeJ5puzo03FN6kwA,4731
19
- pyglove/core/geno/numerical.py,sha256=y_ACnuu-600r9qpUyfQCg6SVrkbDu-fYT3FK6sWheac,8330
20
- pyglove/core/geno/numerical_test.py,sha256=zkJocfknUZsXL9LwkY4zdVVqO7FbEeCZgohRzlLxET0,5796
21
- pyglove/core/geno/random.py,sha256=xs03iphDBO9f2FJJkbsRj6piky12g17v-i1drlWODu4,2619
22
- pyglove/core/geno/random_test.py,sha256=0Ctnm86w3nDcd7QL_XRdqJKrcTl46NpgRQ7TSzPY8ac,4941
23
- pyglove/core/geno/space.py,sha256=KrI55pANLD4u79XYX5XbLMJ6AgJY2lcJMWN6FroKCd4,9296
24
- pyglove/core/geno/space_test.py,sha256=zpCUbe98Qy0rUM1TZIOG6sKQM_2-cglz9UPVIYcPQuk,16554
25
- pyglove/core/geno/sweeping.py,sha256=VcvEm-IQ5DVUhDUBBXF2w-hcjLc5FJ8_OjItO0TbHuw,1322
26
- pyglove/core/geno/sweeping_test.py,sha256=Ex3LlH-RyM1aPSbhrtEmkQAScUkL1GWyZGUKxrEAeE8,2709
27
- pyglove/core/hyper/__init__.py,sha256=igGe4vYAXbdpwjuRCRijfwQBLYLFJk4LPKWlcpg3HhM,5020
28
- pyglove/core/hyper/base.py,sha256=UmD-4-vvMvO5CC7vvKlbKyxpW7kURDi6_KNQrXKo0SA,7069
29
- pyglove/core/hyper/categorical.py,sha256=sEpRQiNNCNNfQ2pfKwg-Ef4prLDwSdq8_mpnfMGaR68,23216
30
- pyglove/core/hyper/categorical_test.py,sha256=Gg41Jubi_1lOhwrXbCiBmXFdYcmZmPpA_X4MqItOOa4,13533
31
- pyglove/core/hyper/custom.py,sha256=6GXtQTkyhX6Sql4J6IGTN8U3SQe6IfLixSpYsc4Lkpk,5750
32
- pyglove/core/hyper/custom_test.py,sha256=7pjHi9XAg45fkrZPxDNJrYcp9y82odJQ4mSUIwzDfzo,3556
33
- pyglove/core/hyper/derived.py,sha256=XJ9UJ3lBSu21yyc6k4PUQsFKi9zP6o-Z0mCC_yP6i0s,6130
34
- pyglove/core/hyper/derived_test.py,sha256=pLkBjZYfSVuts4A_essMdSIWcQfIp4-d2lYCMb0wHwE,4283
35
- pyglove/core/hyper/dynamic_evaluation.py,sha256=KAfoJcIzsuisKPP64X85epD5NQdqRybUemSLH29jzVE,22813
36
- pyglove/core/hyper/dynamic_evaluation_test.py,sha256=87Xc3Ci8mMWFiV4PGG7ZT8B6TqhTJH8tUMTWMYkyKzU,17149
37
- pyglove/core/hyper/evolvable.py,sha256=k2Q5KjJ3t8ub0pLoopJYKYUxJn3nJlHkL1eHDJ1ZSf4,10245
38
- pyglove/core/hyper/evolvable_test.py,sha256=TYDDr69ykdmqzRFo4McxVzwOV_tU4j_WVZu-_6X3M8Q,7914
39
- pyglove/core/hyper/iter.py,sha256=cCRirBBqw-cYCavLU463hch-anh4aXjqzACZ_9cUw-Y,6921
40
- pyglove/core/hyper/iter_test.py,sha256=KQ75ZdRDg8LCBHsVzNMPeZ67ArTNqWajUrcQIgolun8,3906
41
- pyglove/core/hyper/numerical.py,sha256=ifOdw4G9xukeELEiB8__zsR0X6O06_k9isq0i6YZwpI,8206
42
- pyglove/core/hyper/numerical_test.py,sha256=_xZe0qe3wJdrQL4F8pgt0zf04zpbc_9c_5va3mdd5_8,4259
43
- pyglove/core/hyper/object_template.py,sha256=x6aBe-6ueo3CsFJ2yhbXbcdJKfId6wm_KsgkHHbpSoY,22325
44
- pyglove/core/hyper/object_template_test.py,sha256=TEFX7LIqUvdCdJILnK_gP5xIgNJKzRnioUF0CGVBzcY,9105
45
- pyglove/core/io/__init__.py,sha256=_wqJqPGny8LcVOze2ym_5q8S5OGTZRVpTsQ0_DAmJvY,746
46
- pyglove/core/io/file_system.py,sha256=q-XDwk9A2oWX90OaZf7CedpNwu_aPPKbHQC2mCwNo4A,13084
47
- pyglove/core/io/file_system_test.py,sha256=I4tlj7oi8jWXEYVfPGimhHYL9s_nHVrxZsSbwOyeFSc,8659
48
- pyglove/core/object_utils/__init__.py,sha256=VYGOeoiZHZGT2uG789aMG97blQ6vlyGf0KIP9z9cWvM,8306
49
- pyglove/core/object_utils/codegen.py,sha256=HQlpjz42oh_2lrGSflwuAcEneE9Bv8pgPahQzvJm1KI,1568
50
- pyglove/core/object_utils/codegen_test.py,sha256=ThPVyE805plNvM8vwlDxMrcjV-GGdDgbBLSqSOpCvJ0,2166
51
- pyglove/core/object_utils/common_traits.py,sha256=vbRfmxtCjjuqPX87iqLfQA4yJq0WiVFnkAvxfcJ8TZs,5941
52
- pyglove/core/object_utils/common_traits_test.py,sha256=ZJOfM-VGbmXWEbOfLXihOgz2pVO_ZrWPLwaFlcfuH-0,2643
53
- pyglove/core/object_utils/docstr_utils.py,sha256=nNk0CgWABDKsDXUadkP3NW6ilQ3vDRONuHIgwApUfh4,4303
54
- pyglove/core/object_utils/docstr_utils_test.py,sha256=y4rqVx6nHJqB7XbllHOqc6FmV_AJWAr3kV6hOehxQUc,3165
55
- pyglove/core/object_utils/error_utils.py,sha256=uryHHlK2EkNnyb9SleMsDmw4JLJiqPuIPh9LSvYjfEQ,3739
56
- pyglove/core/object_utils/error_utils_test.py,sha256=HwYoUf0_MN2lEMfeQNe2ivSdBYo5-mnMboEEvRDFo7s,2486
57
- pyglove/core/object_utils/formatting.py,sha256=JKwb4m9b4k74EcFOfk7x4M7a6WQVikzQ_JTa-wxfIpU,7319
58
- pyglove/core/object_utils/formatting_test.py,sha256=kkFUO_Xkn9OvXHnCqt_mdSKOREfD1bhun4EBfZXQYTg,7065
59
- pyglove/core/object_utils/hierarchical.py,sha256=za9sA6XnlUOKUHMKNwQPNSOK9E3wDqXFQB0AND2Yghw,19754
60
- pyglove/core/object_utils/hierarchical_test.py,sha256=H7AMpUmL8g9AeKsb4T8JrP1eXOleyLSsrw6TGUvEDB4,21150
61
- pyglove/core/object_utils/json_conversion.py,sha256=8k65z5pTs2xhArOmCBuOayfkloIhLYv76aq_3E1k0a8,22455
62
- pyglove/core/object_utils/json_conversion_test.py,sha256=L-m5Ti8DfdmzCa--TxO2YME4K6gCibJ_ik0c-JKh-P0,9357
63
- pyglove/core/object_utils/missing.py,sha256=fGjWXpE-AKtUVegcEWYlGaJi6eETP6AeSNJSQMoxzyE,1465
64
- pyglove/core/object_utils/missing_test.py,sha256=B36p-vqUvAnXWMszAj9GOPBN0_8cq7vVF61AkcsZ9qU,1396
65
- pyglove/core/object_utils/thread_local.py,sha256=i-CnyY3VREtLfAj4_JndBnsKuQLIgwG29ma8dAyRxbI,4839
66
- pyglove/core/object_utils/thread_local_test.py,sha256=EvU1-TF7KqpLQxxBvHd7dxtuY22YUQSIwQ0UcR-NORA,6816
67
- pyglove/core/object_utils/value_location.py,sha256=CwhpLRQX_W3Qyaauj5Dra6UKCaYnRxI00InWFq_Ki5c,18674
68
- pyglove/core/object_utils/value_location_test.py,sha256=5J8HKmygg3d5Qo0YNpRL1Sjx_uyMOIKbNYDwqYXHsOU,13554
69
- pyglove/core/patching/__init__.py,sha256=C1Q1cWPV74YL3eXbzGvc-8aPw1DR8EK6lRhQYDCwHek,2059
70
- pyglove/core/patching/object_factory.py,sha256=djQ1BGHsFHt22WaA0XgWUHPOhU0Nx49RaxZEFMcb5P4,3377
71
- pyglove/core/patching/object_factory_test.py,sha256=UXWVxrlgtsKm9Q-CnzJMcKKeFvFi9qQ1GG4RgWt0S8o,3973
72
- pyglove/core/patching/pattern_based.py,sha256=g56J19s6uTsaX5mHt--TnGifUQCjYjWpLXwA92ajVU8,7872
73
- pyglove/core/patching/pattern_based_test.py,sha256=PW1EcVfsFPB6wtgwg3s4dzvigWn3b5S8eMNGo0SJiZ0,2771
74
- pyglove/core/patching/rule_based.py,sha256=fTN6gJb8lv8naCk9H3pq_9UtyyezL4NVeHV7a1pcO-E,16733
75
- pyglove/core/patching/rule_based_test.py,sha256=LzOpIfrscKJliV9hHMmn3EuhUdifUwwZSiejw8Y6K9s,17894
76
- pyglove/core/symbolic/__init__.py,sha256=9S-Pq81rIlD34ROXConroyhuvwyRuSee09ubHyuDO_4,5998
77
- pyglove/core/symbolic/base.py,sha256=pjQACXU6JRsgKDXBqdDJQyIiciwfKB9lni7MObWhajA,75509
78
- pyglove/core/symbolic/base_test.py,sha256=laLyh7I3lDnkba0AzgCKrLf9emsCyDHz0-dkel_NH28,2875
79
- pyglove/core/symbolic/boilerplate.py,sha256=WsyjzIgLyR7zpGIfiMoIA7obiersve2P3zhr0IXHkRI,6263
80
- pyglove/core/symbolic/boilerplate_test.py,sha256=Ds2e-v6z01KVZ9dwvvbVrpk3bcimbVOoVD-di_yBp5I,5112
81
- pyglove/core/symbolic/class_wrapper.py,sha256=rfqB8xtaZAHf-8IeZdyfGjAPRsBMtzQxvZTm0VltxzA,22910
82
- pyglove/core/symbolic/class_wrapper_test.py,sha256=bPK-qZ7tVKanzXb1mZ4StkLB5kHtecBjKBesg2NQfL0,21636
83
- pyglove/core/symbolic/compounding.py,sha256=BJIqwKqee7vfFlj07Dlr3w3Vwn_LZMTtMlgfqdPwXmU,11936
84
- pyglove/core/symbolic/compounding_test.py,sha256=PSnk_ds0q6pRJrpN9teMwZtMrbUp5_P-D7ea7wRTK6k,8372
85
- pyglove/core/symbolic/dict.py,sha256=cMEnoc3xQ26IytUAJIpcEgALJqrZ39kERpBNvXEPnn0,36448
86
- pyglove/core/symbolic/dict_test.py,sha256=E3FubiH8CWVvJkaEXe7pbaNF3meeWLGOZX3JuXCujrA,69582
87
- pyglove/core/symbolic/diff.py,sha256=YVOYnC0nD0AXlIhyxUu4TteTzLnt5So2pl9RQD9G82M,10736
88
- pyglove/core/symbolic/diff_test.py,sha256=BjUxWElqPq_-Xj2kOLCl0BtL0DS-pkZivWYm_UOJYZE,10007
89
- pyglove/core/symbolic/flags.py,sha256=GAF_QrthtDytO3DP61AgxWUgjBc89nnI4TJS4nZ_ng0,12097
90
- pyglove/core/symbolic/flags_test.py,sha256=JDJcm6dYTlnktFsdNFjQszmHXf9bZnhrXMxi_jUiKUA,5483
91
- pyglove/core/symbolic/functor.py,sha256=8UdIx2KMMwis0rRHmSE6CAZ1U0gbIoHhiNnDL4zlvqs,26897
92
- pyglove/core/symbolic/functor_test.py,sha256=wy9zfz_n_lpMmfAC7uhNAcT5P4v3Od5l-Dwwj5q7I0Y,30811
93
- pyglove/core/symbolic/inferred.py,sha256=jGCKXLkYGDs-iUflR57UWrCrOQIpkpv5kHVyj-Jbhy4,3192
94
- pyglove/core/symbolic/inferred_test.py,sha256=G6uPykONcChvs6vZujXHSWaYfjewLTVBscMqzzKNty0,1270
95
- pyglove/core/symbolic/list.py,sha256=Ewe8koahxGKuKCWRpU0LdqmOZlOjJhGf---GqpCEKRo,30198
96
- pyglove/core/symbolic/list_test.py,sha256=V-o8M4KLNhaloNAED2nUHOdWmzx8WiTJpo9LI7MQOSA,60565
97
- pyglove/core/symbolic/object.py,sha256=ZMuzEB5qHK10C4CLgSVWwTo7hgp9RnlrE3XefuTNRBs,37644
98
- pyglove/core/symbolic/object_test.py,sha256=-b9cedzcrvl2FjlTdVwurG19W3RnmGamP_A6s4_S-6A,88534
99
- pyglove/core/symbolic/origin.py,sha256=Bu_Oh1EAAGCnjt5eUVwgrtQ2Ue-aPrE5a7U03TwfzgM,6186
100
- pyglove/core/symbolic/origin_test.py,sha256=pbSpCl1CmBjBK3_UhpG3ee9QuCzuVkaoS2SOuhAD4KY,3116
101
- pyglove/core/symbolic/pure_symbolic.py,sha256=FVq-5Cg5uZe3ybTIrTqTHIEJIpje0oxzV2kKL6UKlsU,3244
102
- pyglove/core/symbolic/ref.py,sha256=C8a_ZomKy8z7Ox9gRCOMCHPAVF2Gfpak-rEcj9aBIpY,6267
103
- pyglove/core/symbolic/ref_test.py,sha256=_LNZ7X9Oj6zcyRB3MjbSBuQA8YKgvxJMAnplQefSSfI,3385
104
- pyglove/core/symbolic/schema_utils.py,sha256=luO0vTFBWxukMezmaZK67jk_yP8uEyF-ZJz6MYZjpzA,12697
105
- pyglove/core/symbolic/schema_utils_test.py,sha256=vFXu4dHR7UUL5lg4sdgbUUCv0-yIsIcXSsQGNroQbXM,1911
106
- pyglove/core/symbolic/symbolize.py,sha256=ohID9-V8QiFe7OMpPlRomiqUnKBVMpypd8ZuMuHaa4s,6582
107
- pyglove/core/symbolic/symbolize_test.py,sha256=ateDE-7JiJEB0vr7t6Wtxs1Vp0LMJc9FTQk-0L7NDm4,6273
108
- pyglove/core/tuning/__init__.py,sha256=JtXpjsBto01fLf55hZ1dSx-CEZUyVQeyRP9AMH_hw8c,2229
109
- pyglove/core/tuning/backend.py,sha256=GwbBI9nHYYe5h6iDuhqRtD-Msjmmc7wFtagxW0rTypU,5597
110
- pyglove/core/tuning/backend_test.py,sha256=vyfUi509-hbF5uYk-I0FsoniPFBXmobQVl-4d0YPIWY,1999
111
- pyglove/core/tuning/early_stopping.py,sha256=v7pI2Jv6KfYJoNVmcQsRv3HUbH0b-lrs3wduED8Y7kk,2179
112
- pyglove/core/tuning/local_backend.py,sha256=p_zQWvWLXGV6XqxiJzL4dLwSFHKGOyxl702wfCHokP8,13832
113
- pyglove/core/tuning/protocols.py,sha256=SXWiRJXvdJXF0zYwrZv4s1v-4Ng2Uz5YbOCGuDYsOD8,16865
114
- pyglove/core/tuning/protocols_test.py,sha256=Cbzvz3EacaW2sbm1rTSQXEt_VucMoQbeQ6AeN-GV5Vc,1883
115
- pyglove/core/tuning/sample.py,sha256=UzsCY8kiqnzH_mR94zLXhOloyvvEwfmBWluBjmefUFA,12975
116
- pyglove/core/tuning/sample_test.py,sha256=MqgDjVyRUh14zBVvdVt-OBU6HYtnkcR_DIFcz97IMX4,17552
117
- pyglove/core/typing/__init__.py,sha256=yQQGII_ovHKwhWOMGwj1npILzG1G14YU1jc9S4wOZlE,13974
118
- pyglove/core/typing/annotated.py,sha256=llaajIDj9GK-4kUGJoO4JsHU6ESPOra2SZ-jG6xmsOQ,3203
119
- pyglove/core/typing/annotated_test.py,sha256=p1qid3R-jeiOTTxOVq6hXW8XFvn-h1cUzJWISPst2l8,2484
120
- pyglove/core/typing/annotation_conversion.py,sha256=g5_YpYJXmdnYlOLse7e5hEpKsdrWZdiz0BgKUCge6K4,8229
121
- pyglove/core/typing/annotation_conversion_test.py,sha256=NOLbI0KaK96_ERfbw4GSlviS48GPGQEvlNRSjsZSlV8,11036
122
- pyglove/core/typing/callable_ext.py,sha256=cxQ7Llgq-lURBPFwkGpQS8tb2z_oIjXEQbK2eiibNlM,1626
123
- pyglove/core/typing/callable_ext_test.py,sha256=abRE71Wo977swhsCy3mp4wZrAKksKVHl88SB40xanHw,2056
124
- pyglove/core/typing/callable_signature.py,sha256=GOYm1QipyFrAi8ik3o8a0iOf3gOYElmHm2WtBHVrjio,12738
125
- pyglove/core/typing/callable_signature_test.py,sha256=mzYyqZzoMmDN2v4EAFlALLkGnsDe3Ue3dNK5U_qvbsc,11173
126
- pyglove/core/typing/class_schema.py,sha256=wx5dh9rtudTrmNlmFq5JgZyUAaozXRHNyAsTeNjOE9Y,51767
127
- pyglove/core/typing/class_schema_test.py,sha256=atSRIqXQ5r5-ftS8_a8PPRmOY1ua3glcZ5UanX5yZr8,27555
128
- pyglove/core/typing/class_schema_utils.py,sha256=i_Sn9nmCs3XzTtamMzeW1xsYHrhnspuVuSpKWSYeYi0,8172
129
- pyglove/core/typing/class_schema_utils_test.py,sha256=-DRqcbTOz3NXz4XTWl9eslFeW9pR8yhdk0WH6qrxF7g,7145
130
- pyglove/core/typing/custom_typing.py,sha256=w5gdx7JbHmAJfrUKLvonW9rI2gpCwMJo2wdF4yqarLI,2218
131
- pyglove/core/typing/inspect.py,sha256=ONxEm10ZkY7gzRv3alIO726b53cZ6Q1WGG5-KYhZYjY,5348
132
- pyglove/core/typing/inspect_test.py,sha256=dthePq4mpl51lZAkdnZftkDo84LpC2WoDSEO7aTybac,7823
133
- pyglove/core/typing/key_specs.py,sha256=3SFpvspJj0ksionbUsuIJ82T0FjqG8SCNGLG1VqKrqQ,9250
134
- pyglove/core/typing/key_specs_test.py,sha256=oT9Cu0-x6tAiZ6BhxvJyB6FWzMzqEeBxKnc_-dqyNnY,6375
135
- pyglove/core/typing/pytype_support.py,sha256=lyX11WVbCwoOi5tTQ90pEOS-yvo_6iEi7Lxbp-nXu2A,2069
136
- pyglove/core/typing/type_conversion.py,sha256=mOkp2LP2O9C5k8Q6r-CFwk9P_-oy4u26DIjDo81EGQU,5223
137
- pyglove/core/typing/type_conversion_test.py,sha256=AH7HTOfWcF7cpWi49EG6UmB_xfCsdz7HS1U0Bg8o-PI,5295
138
- pyglove/core/typing/typed_missing.py,sha256=5lzkrd-DqJDT8eoW1d8p6mxV3mvy5X78zFon7qEqPIA,2784
139
- pyglove/core/typing/typed_missing_test.py,sha256=3k_s0JBYBJ_6xoOuPSMrQzqas6QHD0PHux0T9NlTBZc,2381
140
- pyglove/core/typing/value_specs.py,sha256=29KbR0r9uinpUFwxPQl867lFCAIXaLRl5-Rh3KW7bH4,98734
141
- pyglove/core/typing/value_specs_test.py,sha256=RGeZF6ECLUWSsyc-fhSbKrtd7TBw4BlRTbyRvhEtwJc,119619
142
- pyglove/ext/__init__.py,sha256=3jp8cJvKW6PENOZlmVAbT0w-GBRn_kjhc0wDX3XjpOE,755
143
- pyglove/ext/early_stopping/__init__.py,sha256=_xkT3K_MycFuF3k2N74sfr9FPFcXMD3pfv5vuc4Tx5M,1116
144
- pyglove/ext/early_stopping/base.py,sha256=KolexwKDAXhI9iY7hoaDO1mbc3TA4gDn0UifxURwbk0,2358
145
- pyglove/ext/early_stopping/base_test.py,sha256=fMCYq5_Ysz1tq5QvNBv0v_cDnDrbNspIP9mdMKf-7jM,2796
146
- pyglove/ext/early_stopping/step_wise.py,sha256=P99Z2hODmCNBnR3iVOOj2NCCwveSH6h5VnwEv_UABvI,10117
147
- pyglove/ext/early_stopping/step_wise_test.py,sha256=I9DDMrCpDwIWC6mV9w2pDypnrwYnWjg6QXTFNT13cts,9032
148
- pyglove/ext/evolution/__init__.py,sha256=lAf4NyxUZRt39kMFFoW_i8-ExigJXakG1-sUREW7jkQ,3214
149
- pyglove/ext/evolution/base.py,sha256=I27qJja6MErMs3SyrlBYvmDQ4eTq9dY9RVpscKlwReQ,50090
150
- pyglove/ext/evolution/base_test.py,sha256=yIw4YS60c_MvDj71QkoxX5Y2NLZgGc_KzT_NuHMCXMk,29936
151
- pyglove/ext/evolution/hill_climb.py,sha256=Bysi2u4KEM7d9CIPcnvKKgEQHttkaKFkI8xlrNOkBB8,1688
152
- pyglove/ext/evolution/hill_climb_test.py,sha256=7snzopGFRgkryNXiDVcHMhtVz6LXLZCOH_tz_t15b4I,3110
153
- pyglove/ext/evolution/mutators.py,sha256=ZkNmIf9B2KRP3H7UfML7nkjUYPPgOkm5Fe1kaJQ8W5I,10062
154
- pyglove/ext/evolution/mutators_test.py,sha256=F7HYeptAsATHbDHG_pEiX-Kz8V3_yGlFLo_DYhXyH-4,17975
155
- pyglove/ext/evolution/neat.py,sha256=i-O9TEr4a1zfI3IKfDKBmUEYjoj6I_RJcnKdfPR00Qo,8162
156
- pyglove/ext/evolution/neat_test.py,sha256=qbNCf5dkLOwJtplfRUCVoE-r0OtVM7n_WzzInp54w9c,4474
157
- pyglove/ext/evolution/nsga2.py,sha256=gmRj84PjjnWbmB4GTVqZidr5nOleAav7Za5OoLKDiDQ,6427
158
- pyglove/ext/evolution/nsga2_test.py,sha256=YDHZ27jDOoFa-b6He3KUD9OR-0tZ0eh4CQt9_u89ym0,8430
159
- pyglove/ext/evolution/recombinators.py,sha256=uA9yXp9I3A75rYzzKTIxlh4V4gW_u1fO_uWRMYhsHys,40354
160
- pyglove/ext/evolution/recombinators_test.py,sha256=xHp9ZMLxot7Mx0tSB3PGle5Y0Bud-4n61A3aQJZY_SM,19290
161
- pyglove/ext/evolution/regularized_evolution.py,sha256=kSILZHmlThoszJ5Q07ZDm0K9mnE19DAbZ9yn_1ADiDU,1954
162
- pyglove/ext/evolution/regularized_evolution_test.py,sha256=g1cAoHrx3I-ZTe1wuPdM5f2TMOvOT4jMsoCPyPSWboQ,3472
163
- pyglove/ext/evolution/selectors.py,sha256=VFgA4p645LE1jXoE-DZx4x9Ka_SrUAhn8AkHsczSl4s,12102
164
- pyglove/ext/evolution/selectors_test.py,sha256=Cqs4g9UvKRM0sBlpiqcZu7_HXKoPMpTaApfoCodazFo,7714
165
- pyglove/ext/evolution/where.py,sha256=yfjjEpf9N2PFsLx1WHT-5gpTq53iMgqEcLXjpm7J3Ts,4761
166
- pyglove/ext/evolution/where_test.py,sha256=nswc__l4r1JFl40xKU0rIt0sH9Iud1Odltj171W6zvw,1931
167
- pyglove/ext/mutfun/__init__.py,sha256=LaGc13KS90EV5hCK3ChWYvQEvf4yEkdjNeYHXZ0HljA,4959
168
- pyglove/ext/mutfun/base.py,sha256=tLNJzbHnct1sun9nbfwe8ZeACMZMdOPU1HrMmGvwl1A,16703
169
- pyglove/ext/mutfun/base_test.py,sha256=Yst9JGydOXl6EpjNJ8UmLXPacin_5863FKgNWacMkv8,21312
170
- pyglove/ext/mutfun/basic_ops.py,sha256=DfwjLI0rN0g6X8HpkEPNZX5y0d1NPCb6P-FxQzeNUlI,5667
171
- pyglove/ext/mutfun/basic_ops_test.py,sha256=NcRTUWG6WmL6EljsOk-of7-xHaRGRjAbjW3I6huyd8o,11244
172
- pyglove/ext/scalars/__init__.py,sha256=6RZ3w8_SgN0pl20JM4M_k93r9vEUNGR9MbmCx5-lBvQ,2749
173
- pyglove/ext/scalars/base.py,sha256=Q6a93-RsocyXYRKtj4A9PQPnmPujRHy5RcLU5fvIw4U,7102
174
- pyglove/ext/scalars/base_test.py,sha256=yKTseS5PlTqwzfbkvSGgoQyJbhmpG0hRQFS3io6eoZQ,3095
175
- pyglove/ext/scalars/maths.py,sha256=pLGWwWc8pLtndSwHGYbwr4XWp2AOs0Cuf63wpifmvDY,3188
176
- pyglove/ext/scalars/maths_test.py,sha256=v_VKkcReUrSAuWjBCb0O5XHlA9PD5I-MnfFlpHiNCSg,3923
177
- pyglove/ext/scalars/randoms.py,sha256=LkMIIx7lOq_lvJvVS3BrgWGuWl7Pi91-lA-O8x_gZsg,4198
178
- pyglove/ext/scalars/randoms_test.py,sha256=nEhiqarg8l_5EOucp59CYrpO2uKxS1pe0hmBdZUzRNM,2000
179
- pyglove/ext/scalars/step_wise.py,sha256=IDw3tuTpv0KVh7AN44W43zqm1-E0HWPUlytWOQC9w3Y,3789
180
- pyglove/ext/scalars/step_wise_test.py,sha256=TL1vJ19xVx2t5HKuyIzGoogF7N3Rm8YhLE6JF7i0iy8,2540
181
- pyglove-0.4.5.dev20240319.dist-info/LICENSE,sha256=WNHhf_5RCaeuKWyq_K39vmp9F28LxKsB4SpomwSZ2L0,11357
182
- pyglove-0.4.5.dev20240319.dist-info/METADATA,sha256=aQWMNw-nJP4bEa1EEHnMCMX4nOdrk_HebVQeI3R_h8k,6663
183
- pyglove-0.4.5.dev20240319.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
184
- pyglove-0.4.5.dev20240319.dist-info/top_level.txt,sha256=wITzJSKcj8GZUkbq-MvUQnFadkiuAv_qv5qQMw0fIow,8
185
- pyglove-0.4.5.dev20240319.dist-info/RECORD,,
File without changes