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.
- pyglove/core/__init__.py +54 -20
- pyglove/core/coding/__init__.py +42 -0
- pyglove/core/coding/errors.py +111 -0
- pyglove/core/coding/errors_test.py +98 -0
- pyglove/core/coding/execution.py +309 -0
- pyglove/core/coding/execution_test.py +333 -0
- pyglove/core/{object_utils/codegen.py → coding/function_generation.py} +10 -4
- pyglove/core/{object_utils/codegen_test.py → coding/function_generation_test.py} +5 -7
- pyglove/core/coding/parsing.py +153 -0
- pyglove/core/coding/parsing_test.py +150 -0
- pyglove/core/coding/permissions.py +100 -0
- pyglove/core/coding/permissions_test.py +93 -0
- pyglove/core/geno/base.py +54 -41
- pyglove/core/geno/base_test.py +2 -4
- pyglove/core/geno/categorical.py +37 -28
- pyglove/core/geno/custom.py +19 -16
- pyglove/core/geno/numerical.py +20 -17
- pyglove/core/geno/space.py +4 -5
- pyglove/core/hyper/base.py +6 -6
- pyglove/core/hyper/categorical.py +94 -55
- pyglove/core/hyper/custom.py +7 -7
- pyglove/core/hyper/custom_test.py +9 -10
- pyglove/core/hyper/derived.py +30 -22
- pyglove/core/hyper/derived_test.py +2 -4
- pyglove/core/hyper/dynamic_evaluation.py +5 -6
- pyglove/core/hyper/evolvable.py +57 -46
- pyglove/core/hyper/numerical.py +48 -24
- pyglove/core/hyper/numerical_test.py +9 -9
- pyglove/core/hyper/object_template.py +58 -46
- pyglove/core/io/__init__.py +1 -0
- pyglove/core/io/file_system.py +17 -7
- pyglove/core/io/file_system_test.py +2 -0
- pyglove/core/io/sequence.py +299 -0
- pyglove/core/io/sequence_test.py +124 -0
- pyglove/core/logging_test.py +0 -2
- pyglove/core/patching/object_factory.py +4 -4
- pyglove/core/patching/pattern_based.py +4 -4
- pyglove/core/patching/rule_based.py +17 -5
- pyglove/core/patching/rule_based_test.py +27 -4
- pyglove/core/symbolic/__init__.py +2 -7
- pyglove/core/symbolic/base.py +320 -183
- pyglove/core/symbolic/base_test.py +123 -19
- pyglove/core/symbolic/boilerplate.py +7 -13
- pyglove/core/symbolic/boilerplate_test.py +25 -23
- pyglove/core/symbolic/class_wrapper.py +48 -45
- pyglove/core/symbolic/class_wrapper_test.py +2 -2
- pyglove/core/symbolic/compounding.py +9 -15
- pyglove/core/symbolic/compounding_test.py +2 -4
- pyglove/core/symbolic/dict.py +154 -110
- pyglove/core/symbolic/dict_test.py +238 -130
- pyglove/core/symbolic/diff.py +199 -10
- pyglove/core/symbolic/diff_test.py +226 -0
- pyglove/core/symbolic/flags.py +1 -1
- pyglove/core/symbolic/functor.py +29 -26
- pyglove/core/symbolic/functor_test.py +102 -50
- pyglove/core/symbolic/inferred.py +2 -2
- pyglove/core/symbolic/list.py +81 -50
- pyglove/core/symbolic/list_test.py +119 -97
- pyglove/core/symbolic/object.py +225 -113
- pyglove/core/symbolic/object_test.py +320 -108
- pyglove/core/symbolic/origin.py +17 -14
- pyglove/core/symbolic/origin_test.py +4 -2
- pyglove/core/symbolic/pure_symbolic.py +4 -3
- pyglove/core/symbolic/ref.py +108 -21
- pyglove/core/symbolic/ref_test.py +93 -0
- pyglove/core/symbolic/symbolize_test.py +10 -2
- pyglove/core/tuning/local_backend.py +2 -2
- pyglove/core/tuning/protocols.py +3 -3
- pyglove/core/tuning/sample_test.py +3 -3
- pyglove/core/typing/__init__.py +14 -5
- pyglove/core/typing/annotation_conversion.py +43 -27
- pyglove/core/typing/annotation_conversion_test.py +23 -0
- pyglove/core/typing/callable_ext.py +241 -3
- pyglove/core/typing/callable_ext_test.py +255 -0
- pyglove/core/typing/callable_signature.py +510 -66
- pyglove/core/typing/callable_signature_test.py +619 -99
- pyglove/core/typing/class_schema.py +229 -154
- pyglove/core/typing/class_schema_test.py +149 -95
- pyglove/core/typing/custom_typing.py +5 -4
- pyglove/core/typing/inspect.py +63 -0
- pyglove/core/typing/inspect_test.py +39 -0
- pyglove/core/typing/key_specs.py +10 -11
- pyglove/core/typing/key_specs_test.py +7 -4
- pyglove/core/typing/type_conversion.py +4 -5
- pyglove/core/typing/type_conversion_test.py +12 -12
- pyglove/core/typing/typed_missing.py +6 -7
- pyglove/core/typing/typed_missing_test.py +7 -8
- pyglove/core/typing/value_specs.py +604 -362
- pyglove/core/typing/value_specs_test.py +328 -90
- pyglove/core/utils/__init__.py +164 -0
- pyglove/core/{object_utils → utils}/common_traits.py +3 -67
- pyglove/core/utils/common_traits_test.py +36 -0
- pyglove/core/{object_utils → utils}/docstr_utils.py +23 -0
- pyglove/core/{object_utils → utils}/docstr_utils_test.py +36 -4
- pyglove/core/{object_utils → utils}/error_utils.py +78 -9
- pyglove/core/{object_utils → utils}/error_utils_test.py +61 -5
- pyglove/core/utils/formatting.py +464 -0
- pyglove/core/utils/formatting_test.py +453 -0
- pyglove/core/{object_utils → utils}/hierarchical.py +23 -25
- pyglove/core/{object_utils → utils}/hierarchical_test.py +3 -5
- pyglove/core/{object_utils → utils}/json_conversion.py +177 -52
- pyglove/core/{object_utils → utils}/json_conversion_test.py +97 -16
- pyglove/core/{object_utils → utils}/missing.py +3 -3
- pyglove/core/{object_utils → utils}/missing_test.py +2 -4
- pyglove/core/utils/text_color.py +128 -0
- pyglove/core/utils/text_color_test.py +94 -0
- pyglove/core/{object_utils → utils}/thread_local_test.py +1 -3
- pyglove/core/utils/timing.py +236 -0
- pyglove/core/utils/timing_test.py +154 -0
- pyglove/core/{object_utils → utils}/value_location.py +275 -6
- pyglove/core/utils/value_location_test.py +707 -0
- pyglove/core/views/__init__.py +32 -0
- pyglove/core/views/base.py +804 -0
- pyglove/core/views/base_test.py +580 -0
- pyglove/core/views/html/__init__.py +27 -0
- pyglove/core/views/html/base.py +547 -0
- pyglove/core/views/html/base_test.py +830 -0
- pyglove/core/views/html/controls/__init__.py +35 -0
- pyglove/core/views/html/controls/base.py +275 -0
- pyglove/core/views/html/controls/label.py +207 -0
- pyglove/core/views/html/controls/label_test.py +157 -0
- pyglove/core/views/html/controls/progress_bar.py +183 -0
- pyglove/core/views/html/controls/progress_bar_test.py +97 -0
- pyglove/core/views/html/controls/tab.py +320 -0
- pyglove/core/views/html/controls/tab_test.py +87 -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 +1517 -0
- pyglove/core/views/html/tree_view_test.py +1461 -0
- {pyglove-0.4.5.dev20240319.dist-info → pyglove-0.4.5.dev202501132210.dist-info}/METADATA +18 -4
- pyglove-0.4.5.dev202501132210.dist-info/RECORD +214 -0
- {pyglove-0.4.5.dev20240319.dist-info → pyglove-0.4.5.dev202501132210.dist-info}/WHEEL +1 -1
- pyglove/core/object_utils/__init__.py +0 -154
- pyglove/core/object_utils/common_traits_test.py +0 -82
- pyglove/core/object_utils/formatting.py +0 -234
- pyglove/core/object_utils/formatting_test.py +0 -223
- pyglove/core/object_utils/value_location_test.py +0 -385
- pyglove/core/symbolic/schema_utils.py +0 -327
- pyglove/core/symbolic/schema_utils_test.py +0 -57
- pyglove/core/typing/class_schema_utils.py +0 -202
- pyglove/core/typing/class_schema_utils_test.py +0 -194
- pyglove-0.4.5.dev20240319.dist-info/RECORD +0 -185
- /pyglove/core/{object_utils → utils}/thread_local.py +0 -0
- {pyglove-0.4.5.dev20240319.dist-info → pyglove-0.4.5.dev202501132210.dist-info}/LICENSE +0 -0
- {pyglove-0.4.5.dev20240319.dist-info → pyglove-0.4.5.dev202501132210.dist-info}/top_level.txt +0 -0
@@ -1,6 +1,6 @@
|
|
1
|
-
Metadata-Version: 2.
|
1
|
+
Metadata-Version: 2.2
|
2
2
|
Name: pyglove
|
3
|
-
Version: 0.4.5.
|
3
|
+
Version: 0.4.5.dev202501132210
|
4
4
|
Summary: PyGlove: A library for manipulating Python objects.
|
5
5
|
Home-page: https://github.com/google/pyglove
|
6
6
|
Author: PyGlove Authors
|
@@ -21,7 +21,18 @@ Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
21
21
|
Classifier: Topic :: Software Development :: Libraries
|
22
22
|
Description-Content-Type: text/markdown
|
23
23
|
License-File: LICENSE
|
24
|
-
Requires-Dist: docstring-parser
|
24
|
+
Requires-Dist: docstring-parser>=0.12
|
25
|
+
Requires-Dist: termcolor>=1.1.0
|
26
|
+
Dynamic: author
|
27
|
+
Dynamic: author-email
|
28
|
+
Dynamic: classifier
|
29
|
+
Dynamic: description
|
30
|
+
Dynamic: description-content-type
|
31
|
+
Dynamic: home-page
|
32
|
+
Dynamic: keywords
|
33
|
+
Dynamic: license
|
34
|
+
Dynamic: requires-dist
|
35
|
+
Dynamic: summary
|
25
36
|
|
26
37
|
<div align="center">
|
27
38
|
<img src="https://raw.githubusercontent.com/google/pyglove/main/docs/_static/logo_light.svg#gh-light-mode-only" width="320px" alt="logo"></img>
|
@@ -72,7 +83,7 @@ It's commonly used in:
|
|
72
83
|
PyGlove has been [published](https://proceedings.neurips.cc/paper/2020/file/012a91467f210472fab4e11359bbfef6-Paper.pdf)
|
73
84
|
at NeurIPS 2020. It is widely used within [Alphabet](https://abc.xyz/), including Google Research, Google Cloud, Youtube and Waymo.
|
74
85
|
|
75
|
-
PyGlove is developed by Daiyi Peng and colleagues
|
86
|
+
PyGlove is developed by Daiyi Peng and colleagues at [Google Brain](https://research.google/teams/brain/).
|
76
87
|
|
77
88
|
|
78
89
|
## Hello PyGlove
|
@@ -145,6 +156,9 @@ pip install pyglove --pre
|
|
145
156
|
* [Interactive SVG: Components for Direct Manipulation](https://github.com/google/pyglove/blob/main/docs/notebooks/python/interactive_svg.ipynb)
|
146
157
|
* [Where is the Duck: Developing Context-aware Component](https://github.com/google/pyglove/blob/main/docs/notebooks/python/where_is_the_duck.ipynb)
|
147
158
|
|
159
|
+
* Interactive Programming
|
160
|
+
* [Viewing PyGlove objects in HTML](https://colab.research.google.com/github/google/pyglove/blob/main/docs/notebooks/gui/html_view.ipynb)
|
161
|
+
|
148
162
|
## Citing PyGlove
|
149
163
|
|
150
164
|
```
|
@@ -0,0 +1,214 @@
|
|
1
|
+
pyglove/__init__.py,sha256=YPUWALRDu4QuI7N3TUmVaVr513hUt0qXrjY582I1q5c,1352
|
2
|
+
pyglove/core/__init__.py,sha256=629Ml4RzdBdtd_1Cz4HZoCde_ilOG2lAW02E90hStWw,9333
|
3
|
+
pyglove/core/logging.py,sha256=Sr5nLyUQmc4CAEYAq8qbP3ghpjmpz2sOuhq2A0tgQ6I,2456
|
4
|
+
pyglove/core/logging_test.py,sha256=3z_c6wnxbqDbwUmSOAZzeDPXvzoweYL5QHUQVMJ5Xgo,1917
|
5
|
+
pyglove/core/coding/__init__.py,sha256=tuHIg19ZchtkOQbdFVTVLkUpBa5f1eo66XtnKw3lcIU,1645
|
6
|
+
pyglove/core/coding/errors.py,sha256=vstDb52lk5uJef2k_0_1dqvGv8eDYNq37IrqjGJ-cNc,3302
|
7
|
+
pyglove/core/coding/errors_test.py,sha256=fwOR8vLiRvLadubsccyE19hLHj-kThlCQt88qmUYk9M,2311
|
8
|
+
pyglove/core/coding/execution.py,sha256=IdfAPlC7u5UwqEmsiLXowXokgm6NTvlUhzsz3h7pf3g,10867
|
9
|
+
pyglove/core/coding/execution_test.py,sha256=vTMLOCs7ceVi-XEz7-0CdPeoKqswBUQ26SzTqthcU4c,8397
|
10
|
+
pyglove/core/coding/function_generation.py,sha256=2fCqcdcizVYtGYE6QGpw5m1kuH9Fp0OF4BjyJ4en6tw,1636
|
11
|
+
pyglove/core/coding/function_generation_test.py,sha256=kbSwmZF8Vog0R0OTSpuzPblEbMLoRJ1TigeIrwDhHS8,2161
|
12
|
+
pyglove/core/coding/parsing.py,sha256=JXTdzFS9iB5-JVi9_-rDFORj_EZEtr7In8HBGHp09no,4084
|
13
|
+
pyglove/core/coding/parsing_test.py,sha256=XB-bd2Huj36GKmvmFjp3jRwr7NqhRd1Ag-AGNxr_ekk,3575
|
14
|
+
pyglove/core/coding/permissions.py,sha256=kd_gO1csXHpySsvazxmKBVe7dfLpX5GquRtu9q4ToRE,2729
|
15
|
+
pyglove/core/coding/permissions_test.py,sha256=GTEnCClTZWdFmqHk3U5P8mzOmIINtUeEkeJZApnaWVI,2935
|
16
|
+
pyglove/core/detouring/__init__.py,sha256=ck_n2VSuU31HNVYQkbG4Zvnx90mNYtSVc2StN3rXbU8,1891
|
17
|
+
pyglove/core/detouring/class_detour.py,sha256=ejuUr7UfRU3l9PrDxD0dpKmt2iqdDU6liHdebA1jEfQ,13312
|
18
|
+
pyglove/core/detouring/class_detour_test.py,sha256=9aAK6qPiT0_HJe5oUpqMVTpoHv0wr_h6c4gWYKMTJoM,5507
|
19
|
+
pyglove/core/geno/__init__.py,sha256=cWA583n7JpsGUkGtoTlMMX83tNS7geRBKFsoPEvFZ4A,4767
|
20
|
+
pyglove/core/geno/base.py,sha256=4CjZ1j-LGd6q2qootGcLMVuX8nTDxH0LvA1KVSI9qbE,64498
|
21
|
+
pyglove/core/geno/base_test.py,sha256=f0pMpfXsjAqFOBtlOxof3jRX0jLvXpzowk9szcr6bgY,38512
|
22
|
+
pyglove/core/geno/categorical.py,sha256=t1bS129D5iF4CZ0yVHaFDXy2T6ujv5F5HHDc_0X36z8,28015
|
23
|
+
pyglove/core/geno/categorical_test.py,sha256=23UkOPhDSvonxxM_1YoBYp723Xim-BmBzywl612CRyg,18444
|
24
|
+
pyglove/core/geno/custom.py,sha256=U4_fdTBmHUTZp3uyNI8Kz4kPKj7X0EJ9d55T376p4Vk,7044
|
25
|
+
pyglove/core/geno/custom_test.py,sha256=kjHcKRYA-Uaw6AUnOMhVjBs9is37mUS8X3VdZHXxr0k,5938
|
26
|
+
pyglove/core/geno/deduping.py,sha256=SmfrY8uz4zUuKInaWSKIB0vm_6CVWgqrfhiwragxM7I,5205
|
27
|
+
pyglove/core/geno/deduping_test.py,sha256=zP9XGbfw4tmHgBMv8xP2EMZ2-AJc2UomAP_Ud1aSr-c,4583
|
28
|
+
pyglove/core/geno/dna_generator.py,sha256=BwHnjdbVPP_ic04481dhm2pCcFoRmH8PB1o884W8aUs,8959
|
29
|
+
pyglove/core/geno/dna_generator_test.py,sha256=vdQ7H8Zg7pvhjJyUbUaK6z8JIB8QeJ5puzo03FN6kwA,4731
|
30
|
+
pyglove/core/geno/numerical.py,sha256=AKevY8HALo2Tu4qEjuuRhhv-l1vFS_b4jre2MZQ3odg,8237
|
31
|
+
pyglove/core/geno/numerical_test.py,sha256=zkJocfknUZsXL9LwkY4zdVVqO7FbEeCZgohRzlLxET0,5796
|
32
|
+
pyglove/core/geno/random.py,sha256=xs03iphDBO9f2FJJkbsRj6piky12g17v-i1drlWODu4,2619
|
33
|
+
pyglove/core/geno/random_test.py,sha256=0Ctnm86w3nDcd7QL_XRdqJKrcTl46NpgRQ7TSzPY8ac,4941
|
34
|
+
pyglove/core/geno/space.py,sha256=CWhGr-tomZystiLtxCfDbJ9sFrIN6LhkfgdAs1PRHpk,9315
|
35
|
+
pyglove/core/geno/space_test.py,sha256=zpCUbe98Qy0rUM1TZIOG6sKQM_2-cglz9UPVIYcPQuk,16554
|
36
|
+
pyglove/core/geno/sweeping.py,sha256=VcvEm-IQ5DVUhDUBBXF2w-hcjLc5FJ8_OjItO0TbHuw,1322
|
37
|
+
pyglove/core/geno/sweeping_test.py,sha256=Ex3LlH-RyM1aPSbhrtEmkQAScUkL1GWyZGUKxrEAeE8,2709
|
38
|
+
pyglove/core/hyper/__init__.py,sha256=igGe4vYAXbdpwjuRCRijfwQBLYLFJk4LPKWlcpg3HhM,5020
|
39
|
+
pyglove/core/hyper/base.py,sha256=kYuvUq33CbLMsNVC7uGZ8IHa1h2yYa1KSol9ktisEgg,7029
|
40
|
+
pyglove/core/hyper/categorical.py,sha256=6BpObEaaCKrQsvih3CkdN7ZwK0bj1hMUBLnum8r1kAc,23385
|
41
|
+
pyglove/core/hyper/categorical_test.py,sha256=Gg41Jubi_1lOhwrXbCiBmXFdYcmZmPpA_X4MqItOOa4,13533
|
42
|
+
pyglove/core/hyper/custom.py,sha256=eMWVCq8d0m2tXkwlazGNQ9q_Bi_gbtIotVX4t6Cr_r4,5719
|
43
|
+
pyglove/core/hyper/custom_test.py,sha256=4ayyNCiY9T34h_Nfr5ZL6psUtgvuJv9i_ubmkOs796I,3522
|
44
|
+
pyglove/core/hyper/derived.py,sha256=IW2QjPR0m0oMb_Ij8lbJ1qLwI2j_wBYKrgQC6TuAEo4,6066
|
45
|
+
pyglove/core/hyper/derived_test.py,sha256=s47HRGbUe-bkL-lMpTRRSfXReu11LGx0NsUmxGvzxS0,4222
|
46
|
+
pyglove/core/hyper/dynamic_evaluation.py,sha256=ixuqeis6WGL276nWTCZktv7EWHWqzG4H1iy3xtAT6js,22853
|
47
|
+
pyglove/core/hyper/dynamic_evaluation_test.py,sha256=87Xc3Ci8mMWFiV4PGG7ZT8B6TqhTJH8tUMTWMYkyKzU,17149
|
48
|
+
pyglove/core/hyper/evolvable.py,sha256=AH59oETvS8ox7xmTYOEMiSX-NxbUFrMXUvkx7cdSxCs,10156
|
49
|
+
pyglove/core/hyper/evolvable_test.py,sha256=TYDDr69ykdmqzRFo4McxVzwOV_tU4j_WVZu-_6X3M8Q,7914
|
50
|
+
pyglove/core/hyper/iter.py,sha256=cCRirBBqw-cYCavLU463hch-anh4aXjqzACZ_9cUw-Y,6921
|
51
|
+
pyglove/core/hyper/iter_test.py,sha256=KQ75ZdRDg8LCBHsVzNMPeZ67ArTNqWajUrcQIgolun8,3906
|
52
|
+
pyglove/core/hyper/numerical.py,sha256=1zBTEXuLeKfrcZHkRMJpYE6RSBGA6KLQ29tkzUNC05U,8371
|
53
|
+
pyglove/core/hyper/numerical_test.py,sha256=UWdH55Bok7bghYDLJOGsgOwV_2LNkhj1AmFwNYeJRY8,4232
|
54
|
+
pyglove/core/hyper/object_template.py,sha256=YPALTV0mMULa7iuqnryTpA2wMsdyFZ_6g-R525asAr8,22222
|
55
|
+
pyglove/core/hyper/object_template_test.py,sha256=TEFX7LIqUvdCdJILnK_gP5xIgNJKzRnioUF0CGVBzcY,9105
|
56
|
+
pyglove/core/io/__init__.py,sha256=4ZT1a595DqQuLTNYc2JP_eCp_KesXvHmKRkr777bzpg,785
|
57
|
+
pyglove/core/io/file_system.py,sha256=ps5SVckgFsrZk4xCu37iXkeIrvydLzLs9NsF14VzEcM,13390
|
58
|
+
pyglove/core/io/file_system_test.py,sha256=FX0ySuh_Xcg1RO68do7ikD4pvslKUzfSpwZ6P4wIP7c,8691
|
59
|
+
pyglove/core/io/sequence.py,sha256=7QWMGXPtJzHyGPgqkT3yJ01FxKJ4mP4lF5HRDiIHNbQ,8165
|
60
|
+
pyglove/core/io/sequence_test.py,sha256=6tmnS7frBuDR8ussT5jugeh23TDsPDrDnbfxHh81Gy4,3891
|
61
|
+
pyglove/core/patching/__init__.py,sha256=C1Q1cWPV74YL3eXbzGvc-8aPw1DR8EK6lRhQYDCwHek,2059
|
62
|
+
pyglove/core/patching/object_factory.py,sha256=fsiqFET9LWQV4xZXJrPFu3j5IRovSi_zrJba7KiYGZ0,3368
|
63
|
+
pyglove/core/patching/object_factory_test.py,sha256=UXWVxrlgtsKm9Q-CnzJMcKKeFvFi9qQ1GG4RgWt0S8o,3973
|
64
|
+
pyglove/core/patching/pattern_based.py,sha256=UtSNB-ARNqVjXwZovjVi84QEoXUGLLBTgLgjq2rNg3w,7851
|
65
|
+
pyglove/core/patching/pattern_based_test.py,sha256=PW1EcVfsFPB6wtgwg3s4dzvigWn3b5S8eMNGo0SJiZ0,2771
|
66
|
+
pyglove/core/patching/rule_based.py,sha256=JAQp8mWeIOxwIdqusA3GmXia-fxQhQsxbUTmE329wF8,17038
|
67
|
+
pyglove/core/patching/rule_based_test.py,sha256=qfy0ILmczV_LMHWEnwo2y079OrJsGYO0nKxSZdmIUcI,18782
|
68
|
+
pyglove/core/symbolic/__init__.py,sha256=jYq-LwR1Ql3iMChjz9lN-0heDKiocmxR0ZJFEJ8RHHQ,5787
|
69
|
+
pyglove/core/symbolic/base.py,sha256=aSZPSk7v3Niv6D1HfL_JEEXfI-U1cQnTxJxY9wXem54,77627
|
70
|
+
pyglove/core/symbolic/base_test.py,sha256=yASIHIuWiUB1jf4nN-Y4XOjyvr8eQfRpr7s_1LZsu78,7188
|
71
|
+
pyglove/core/symbolic/boilerplate.py,sha256=sQ3G25r5bo_UmIdjreL4jkAuQCXIHVlvUfGjjkNod6Y,5955
|
72
|
+
pyglove/core/symbolic/boilerplate_test.py,sha256=1CZ1W6kq3l-3tpaknhGFa04V18bO7vPzis5qzWnxHEs,5252
|
73
|
+
pyglove/core/symbolic/class_wrapper.py,sha256=xQiMh5vFlOQ76tbqsF5UWEghvU4d9UmvbNqIyBccNHg,22869
|
74
|
+
pyglove/core/symbolic/class_wrapper_test.py,sha256=GPgeLefIPj9hiD0ib6z2LyOm6A3O2f4-JHpE7dgfsNM,21644
|
75
|
+
pyglove/core/symbolic/compounding.py,sha256=gvOodZ2gWHA0jNdwt8yvnRsPkHQDXDb5s88Uwp6DAqs,11703
|
76
|
+
pyglove/core/symbolic/compounding_test.py,sha256=hOzrIROvajUTtPm0SUbEsEV4C1bXanhAoHinHrjZoXw,8320
|
77
|
+
pyglove/core/symbolic/dict.py,sha256=7IxKSjUsGulUcNk3xqQnJ2ubGNUbqcc0ZFe8cKiigKA,36931
|
78
|
+
pyglove/core/symbolic/dict_test.py,sha256=3MATsFw9Ci0jVPbAT2ivKVZ3PCnBBBvbkMWKgpgl-Fk,72915
|
79
|
+
pyglove/core/symbolic/diff.py,sha256=zHfED0Bbq8G_HWNPj3vrOCWzt_062rFhx3BMlpCb9oo,16282
|
80
|
+
pyglove/core/symbolic/diff_test.py,sha256=EDiGHqqKhi-NeMxr-bgjBEqlquee_4l_0IM6hgAb9Mg,29400
|
81
|
+
pyglove/core/symbolic/flags.py,sha256=a_8VZEhJjkt-zk1v3jCjlfNe7vEG2FqFfAC4l-gKrzg,12090
|
82
|
+
pyglove/core/symbolic/flags_test.py,sha256=JDJcm6dYTlnktFsdNFjQszmHXf9bZnhrXMxi_jUiKUA,5483
|
83
|
+
pyglove/core/symbolic/functor.py,sha256=6g1eBZSfSB6lp5NSXtAMw--xRhAfkYipSJh2LCVPNTM,26723
|
84
|
+
pyglove/core/symbolic/functor_test.py,sha256=9c5_7OBKNVNbYC7IaVQB6c5ks2v00qQ36oivyWiBbKA,31798
|
85
|
+
pyglove/core/symbolic/inferred.py,sha256=E4zgphg6NNZad9Fl3jdHQOMZeqEp9XHq5OUYqXEmwZQ,3178
|
86
|
+
pyglove/core/symbolic/inferred_test.py,sha256=G6uPykONcChvs6vZujXHSWaYfjewLTVBscMqzzKNty0,1270
|
87
|
+
pyglove/core/symbolic/list.py,sha256=z8goU0ntd-Q5ADaCGiKsJwPhdRdQb0Kd_p-ZekXaLy4,30303
|
88
|
+
pyglove/core/symbolic/list_test.py,sha256=IAyFQ48nyczKUcPNZFKHBkX5oh7Xuxbnv3rRkONhbHw,61146
|
89
|
+
pyglove/core/symbolic/object.py,sha256=6K-O46PziUNx4pABQ9SD9zrFvxjZXdvuRZbgLqwMkMg,41942
|
90
|
+
pyglove/core/symbolic/object_test.py,sha256=Uf07CHSIBDETleIwIHxRDVyAH9tIzIfM5UPQkDC1sC0,93407
|
91
|
+
pyglove/core/symbolic/origin.py,sha256=OSWMKjvPcISOXrzuX3lCQC8m_qaGl-9INsIB81erUnU,6124
|
92
|
+
pyglove/core/symbolic/origin_test.py,sha256=dU_ZGrGDetM_lYVMn3wQO0d367_t_t8eESe3NrKPBNE,3159
|
93
|
+
pyglove/core/symbolic/pure_symbolic.py,sha256=pvo15gn35_KLiGW_XrTjlx5ddmHbwpLr93VgbQ59uQ8,3231
|
94
|
+
pyglove/core/symbolic/ref.py,sha256=qRN-0xm9pWlszel5qE-HAhQCkgB0umi_pDlzDhBWPUA,8513
|
95
|
+
pyglove/core/symbolic/ref_test.py,sha256=0687hClfR5G5_VKuRlwjJGVQ2MC74ADFWklDaZ3aEVI,6294
|
96
|
+
pyglove/core/symbolic/symbolize.py,sha256=ohID9-V8QiFe7OMpPlRomiqUnKBVMpypd8ZuMuHaa4s,6582
|
97
|
+
pyglove/core/symbolic/symbolize_test.py,sha256=o7bRfMhGc6uw2FIH8arE99-bPb3i0YixcHYyiP-QqeQ,6487
|
98
|
+
pyglove/core/tuning/__init__.py,sha256=JtXpjsBto01fLf55hZ1dSx-CEZUyVQeyRP9AMH_hw8c,2229
|
99
|
+
pyglove/core/tuning/backend.py,sha256=GwbBI9nHYYe5h6iDuhqRtD-Msjmmc7wFtagxW0rTypU,5597
|
100
|
+
pyglove/core/tuning/backend_test.py,sha256=vyfUi509-hbF5uYk-I0FsoniPFBXmobQVl-4d0YPIWY,1999
|
101
|
+
pyglove/core/tuning/early_stopping.py,sha256=v7pI2Jv6KfYJoNVmcQsRv3HUbH0b-lrs3wduED8Y7kk,2179
|
102
|
+
pyglove/core/tuning/local_backend.py,sha256=1Aflwu4PDpQltAvAoXvAeLYrh3Ormd5yJAk8kkb8uAU,13818
|
103
|
+
pyglove/core/tuning/protocols.py,sha256=10Iukt1rqh05caURTZffSsb3CcHo7epBQnNtnyMyziE,16844
|
104
|
+
pyglove/core/tuning/protocols_test.py,sha256=Cbzvz3EacaW2sbm1rTSQXEt_VucMoQbeQ6AeN-GV5Vc,1883
|
105
|
+
pyglove/core/tuning/sample.py,sha256=UzsCY8kiqnzH_mR94zLXhOloyvvEwfmBWluBjmefUFA,12975
|
106
|
+
pyglove/core/tuning/sample_test.py,sha256=JqwDPy3EPC_VjU9dipk90jj1kovZB3Zb9hAjAlZ-U1U,17551
|
107
|
+
pyglove/core/typing/__init__.py,sha256=Z_jnwUvDQ3wA16a5TiuWbuof9hW0Xm6YoTNwgG4QGqI,14395
|
108
|
+
pyglove/core/typing/annotated.py,sha256=llaajIDj9GK-4kUGJoO4JsHU6ESPOra2SZ-jG6xmsOQ,3203
|
109
|
+
pyglove/core/typing/annotated_test.py,sha256=p1qid3R-jeiOTTxOVq6hXW8XFvn-h1cUzJWISPst2l8,2484
|
110
|
+
pyglove/core/typing/annotation_conversion.py,sha256=OhBQRCaSh7zJKfb_IQKF7sD32E_YNTekz00qZaSIVnw,9007
|
111
|
+
pyglove/core/typing/annotation_conversion_test.py,sha256=tZheqbLWbr76WBIDOplLtY3yznMc4m9u7KCznWEJdEs,11660
|
112
|
+
pyglove/core/typing/callable_ext.py,sha256=PiBQWPeUAH7Lgmf2xKCZqgK7N0OSrTdbnEkV8Ph31OA,9127
|
113
|
+
pyglove/core/typing/callable_ext_test.py,sha256=TnWKU4_ZjvpbHZFtFHgFvCMDiCos8VmLlODcM_7Xg8M,10156
|
114
|
+
pyglove/core/typing/callable_signature.py,sha256=DRpt7aShfkn8pb3SCiZzS_27eHbkQ_d2UB8BUhJjs0Q,27176
|
115
|
+
pyglove/core/typing/callable_signature_test.py,sha256=iQmHsKPhJPQlMikDhEyxKyq7yWyXI9juKCLYgKhrH3U,25145
|
116
|
+
pyglove/core/typing/class_schema.py,sha256=oSnfKIYKddIRETYj_gW_ZHjs9cI6WvTXJZrcQRfwgwU,53001
|
117
|
+
pyglove/core/typing/class_schema_test.py,sha256=byMj-8qfnPQJ3lm4A6Kcwez80u68-W0TyLEw2ILenLE,29172
|
118
|
+
pyglove/core/typing/custom_typing.py,sha256=qdnIKHWNt5kZAAFdpQXra8bBu6RljMbbJ_YDG2mhAUA,2205
|
119
|
+
pyglove/core/typing/inspect.py,sha256=Tp2rYqRvMFvL0NzkJo4p04_hQSF__Eip8RduhEaSFfE,7046
|
120
|
+
pyglove/core/typing/inspect_test.py,sha256=vJ-MZvSPjzzA7sDY6XIeMeX_aob_6VjGQcIIn_MJl64,8826
|
121
|
+
pyglove/core/typing/key_specs.py,sha256=-7xjCuUGoQgD0sMafsRFNlw3S4f1r-7t5OO4ev5bbeI,9225
|
122
|
+
pyglove/core/typing/key_specs_test.py,sha256=5zornpyHMAYoRaG8KDXHiQ3obu9UfRp3399lBeUNTPk,6499
|
123
|
+
pyglove/core/typing/pytype_support.py,sha256=lyX11WVbCwoOi5tTQ90pEOS-yvo_6iEi7Lxbp-nXu2A,2069
|
124
|
+
pyglove/core/typing/type_conversion.py,sha256=6diZrxNsvSyTLLNdoCqcWatWmhh7kZOiKCesyg-nEYQ,5167
|
125
|
+
pyglove/core/typing/type_conversion_test.py,sha256=qwNeotCb96vdUELVtA-0Ee19Jm4yOnPZuSIz5nyEbGo,5203
|
126
|
+
pyglove/core/typing/typed_missing.py,sha256=-l1omAu0jBZv5BnsFYXBqfvQwVBnmPh_X1wcIKD9bOk,2734
|
127
|
+
pyglove/core/typing/typed_missing_test.py,sha256=TCNsb1SRpFaVdxYn2mB_yaLuja8w5Qn5NP7uGiZVBWs,2301
|
128
|
+
pyglove/core/typing/value_specs.py,sha256=Yxdrz4aURMBrtqUW4to-2Vptc6Z6oqQrLyMBiAZt2bc,102302
|
129
|
+
pyglove/core/typing/value_specs_test.py,sha256=MsScWDRaN_8pfRDO9MCp9HdUHVm_8wHWyKorWVSnhE4,127165
|
130
|
+
pyglove/core/utils/__init__.py,sha256=cegrJtHy0h7DIUFcQN67TZJf9_f28OR-NrKbKKjPkeE,8183
|
131
|
+
pyglove/core/utils/common_traits.py,sha256=PWxOgPhG5H60ZwfO8xNAEGRjFUqqDZQBWQYomOfvdy8,3640
|
132
|
+
pyglove/core/utils/common_traits_test.py,sha256=DIuZB_1xfmeTVfWnGOguDQcDAM_iGgBOe8C-5CsIqBc,1122
|
133
|
+
pyglove/core/utils/docstr_utils.py,sha256=5BY40kXozPKVGOB0eN8jy1P5_GHIzqFJ9FXAu_kzxaw,5119
|
134
|
+
pyglove/core/utils/docstr_utils_test.py,sha256=i33VT6zHXEuIIJ4PPg1bVSfaYSnUsC8yST_NfpT-Uds,4228
|
135
|
+
pyglove/core/utils/error_utils.py,sha256=ACIqtq4hsWrV00Gxd1OyeHCI-obGBR6J3H9VI1Y9clM,5780
|
136
|
+
pyglove/core/utils/error_utils_test.py,sha256=zwTzmyJupIW8GeF3Z-gnpVNdhdTYwzmO0ClODqbR4bU,4164
|
137
|
+
pyglove/core/utils/formatting.py,sha256=qa5XEGRwKEEqEKtyEYZNdsKBxIQFGBTofFW29aQT8hU,14987
|
138
|
+
pyglove/core/utils/formatting_test.py,sha256=OQboyCwhgvhw4EcCj1q-O53XG404c0XMK51rCl2_q2M,13533
|
139
|
+
pyglove/core/utils/hierarchical.py,sha256=jwB-0FhqOspAymAkvJphRhPTQEsoShmKupCZpU3Vip4,19690
|
140
|
+
pyglove/core/utils/hierarchical_test.py,sha256=f382DMJPa_bavJGGQDjuw-hWcafUg5bkQCPX-nbzeiI,21077
|
141
|
+
pyglove/core/utils/json_conversion.py,sha256=I0mWn87aAEdaAok9nDvT0ZrmplU40eNmEDUAaNIzZXk,26590
|
142
|
+
pyglove/core/utils/json_conversion_test.py,sha256=zA_cy7ixVL3sTf6i9BCXMlSH56Aa3JnjHnjyqYJ_9XU,11845
|
143
|
+
pyglove/core/utils/missing.py,sha256=9gslt1lXd1qSEIuAFxUWu30oD-YdYcnm13eau1S9uqY,1445
|
144
|
+
pyglove/core/utils/missing_test.py,sha256=D6-FuVEwCyJemUiPLcwLmwyptqI5Bx0Pfipc2juhKSE,1335
|
145
|
+
pyglove/core/utils/text_color.py,sha256=xcCTCxY2qFNZs_jismMGus8scEXKBpYGAhpAgnz-MHk,4112
|
146
|
+
pyglove/core/utils/text_color_test.py,sha256=3HtZpUB5XPr7A_5Fg4ZSMfNWeDRiQgSzmg9b1tctMI4,2801
|
147
|
+
pyglove/core/utils/thread_local.py,sha256=i-CnyY3VREtLfAj4_JndBnsKuQLIgwG29ma8dAyRxbI,4839
|
148
|
+
pyglove/core/utils/thread_local_test.py,sha256=AOqsdNsA-cYMvJckqxb25ql3Y5kDW0qLfBW1cl85Bnw,6757
|
149
|
+
pyglove/core/utils/timing.py,sha256=fXdwEYXR84qZBC7hxbXbwztW2UKliJZLqCDvhz1qw_A,7241
|
150
|
+
pyglove/core/utils/timing_test.py,sha256=OZxi551MJec9cKtpNbeep6jjzP68JUHhSmRHNKDFRMw,4928
|
151
|
+
pyglove/core/utils/value_location.py,sha256=wAryIwQeEfrRddyGRk-KbLA7dnNDLhL-dSyFI9wIG5U,26756
|
152
|
+
pyglove/core/utils/value_location_test.py,sha256=X6Gih3IoYugziwXWH8VGz5bPeb3Kq0CfZxwbNVIsZJo,21338
|
153
|
+
pyglove/core/views/__init__.py,sha256=gll9ZBRYz4p_-LWOdzSR2a6UTWcJ8nR430trrP0yLCU,967
|
154
|
+
pyglove/core/views/base.py,sha256=VVWlkyUPvZoNlcwMpuxt-AujGnuIJPS4Ym-jGBX0g9I,26262
|
155
|
+
pyglove/core/views/base_test.py,sha256=UKbr_1TANOAnP7V5ICGF0UEkunfSaHiJ4nXZXhA0SaU,16642
|
156
|
+
pyglove/core/views/html/__init__.py,sha256=Ff51MK1AKdzLM0kczTqLR3fRlJSJLDaFUdVyCu_7-eY,1085
|
157
|
+
pyglove/core/views/html/base.py,sha256=LcRU8Lot_y1RW6fziaCQVVE0gWP0aVzIcO8v71JaX0E,15002
|
158
|
+
pyglove/core/views/html/base_test.py,sha256=5RVPNm4YTamTFu6yXA1p2lJg3JHQBKNNBoL977qBZvE,22782
|
159
|
+
pyglove/core/views/html/tree_view.py,sha256=MkQXtNKn88j9NXdhluKbIaHswjh1QtQoPv-CUwUfCNk,52062
|
160
|
+
pyglove/core/views/html/tree_view_test.py,sha256=whUorrw0eiDaZsEzGB2B3EN3wx0vLFuNEe2RBU03GeU,74707
|
161
|
+
pyglove/core/views/html/controls/__init__.py,sha256=61qs5pnJPCTECCGBtkbNfIV3KcCu7cxfVNBEtIg1lMo,1318
|
162
|
+
pyglove/core/views/html/controls/base.py,sha256=aSYFEo-I6Yc28TMk1ZFw_Za85xMo8EvgfQLKISsLSe8,7675
|
163
|
+
pyglove/core/views/html/controls/label.py,sha256=dXcYId7ASuNqkzKsWMjJ0iQtecoSsUlUgynNNQZOFAM,5681
|
164
|
+
pyglove/core/views/html/controls/label_test.py,sha256=uUYqBSZ0XLOuv4qG20gmoZzA3RxYxpfqT63K0azHEfU,5162
|
165
|
+
pyglove/core/views/html/controls/progress_bar.py,sha256=0an0eCbPCDjwrR58C16NwLZ-cf3Oy0wQerLsiNgGHmk,5235
|
166
|
+
pyglove/core/views/html/controls/progress_bar_test.py,sha256=kKOJDZQtBPkmNcgIBrRQkNNzcTm51ojuFBTRUEDSsp0,3506
|
167
|
+
pyglove/core/views/html/controls/tab.py,sha256=ELyroRb3qKQ8ULM_BMq2j-tqV_mnHOvrYv2kbuIe65o,9430
|
168
|
+
pyglove/core/views/html/controls/tab_test.py,sha256=wr1msQjZHxp1TFKQ5LxtppY2Dys736JCmmEJ8WBC3Fo,3531
|
169
|
+
pyglove/core/views/html/controls/tooltip.py,sha256=01BbpuM1twf3FYMUT09_Ck5JSSONe8QE9RmyA9nhCnU,3092
|
170
|
+
pyglove/core/views/html/controls/tooltip_test.py,sha256=17BY-WmZKpz9tCbySPcwG6KJyfeE_MeMyKxtfxorBQ0,3194
|
171
|
+
pyglove/ext/__init__.py,sha256=3jp8cJvKW6PENOZlmVAbT0w-GBRn_kjhc0wDX3XjpOE,755
|
172
|
+
pyglove/ext/early_stopping/__init__.py,sha256=_xkT3K_MycFuF3k2N74sfr9FPFcXMD3pfv5vuc4Tx5M,1116
|
173
|
+
pyglove/ext/early_stopping/base.py,sha256=KolexwKDAXhI9iY7hoaDO1mbc3TA4gDn0UifxURwbk0,2358
|
174
|
+
pyglove/ext/early_stopping/base_test.py,sha256=fMCYq5_Ysz1tq5QvNBv0v_cDnDrbNspIP9mdMKf-7jM,2796
|
175
|
+
pyglove/ext/early_stopping/step_wise.py,sha256=P99Z2hODmCNBnR3iVOOj2NCCwveSH6h5VnwEv_UABvI,10117
|
176
|
+
pyglove/ext/early_stopping/step_wise_test.py,sha256=I9DDMrCpDwIWC6mV9w2pDypnrwYnWjg6QXTFNT13cts,9032
|
177
|
+
pyglove/ext/evolution/__init__.py,sha256=lAf4NyxUZRt39kMFFoW_i8-ExigJXakG1-sUREW7jkQ,3214
|
178
|
+
pyglove/ext/evolution/base.py,sha256=I27qJja6MErMs3SyrlBYvmDQ4eTq9dY9RVpscKlwReQ,50090
|
179
|
+
pyglove/ext/evolution/base_test.py,sha256=yIw4YS60c_MvDj71QkoxX5Y2NLZgGc_KzT_NuHMCXMk,29936
|
180
|
+
pyglove/ext/evolution/hill_climb.py,sha256=Bysi2u4KEM7d9CIPcnvKKgEQHttkaKFkI8xlrNOkBB8,1688
|
181
|
+
pyglove/ext/evolution/hill_climb_test.py,sha256=7snzopGFRgkryNXiDVcHMhtVz6LXLZCOH_tz_t15b4I,3110
|
182
|
+
pyglove/ext/evolution/mutators.py,sha256=ZkNmIf9B2KRP3H7UfML7nkjUYPPgOkm5Fe1kaJQ8W5I,10062
|
183
|
+
pyglove/ext/evolution/mutators_test.py,sha256=F7HYeptAsATHbDHG_pEiX-Kz8V3_yGlFLo_DYhXyH-4,17975
|
184
|
+
pyglove/ext/evolution/neat.py,sha256=i-O9TEr4a1zfI3IKfDKBmUEYjoj6I_RJcnKdfPR00Qo,8162
|
185
|
+
pyglove/ext/evolution/neat_test.py,sha256=qbNCf5dkLOwJtplfRUCVoE-r0OtVM7n_WzzInp54w9c,4474
|
186
|
+
pyglove/ext/evolution/nsga2.py,sha256=gmRj84PjjnWbmB4GTVqZidr5nOleAav7Za5OoLKDiDQ,6427
|
187
|
+
pyglove/ext/evolution/nsga2_test.py,sha256=YDHZ27jDOoFa-b6He3KUD9OR-0tZ0eh4CQt9_u89ym0,8430
|
188
|
+
pyglove/ext/evolution/recombinators.py,sha256=uA9yXp9I3A75rYzzKTIxlh4V4gW_u1fO_uWRMYhsHys,40354
|
189
|
+
pyglove/ext/evolution/recombinators_test.py,sha256=xHp9ZMLxot7Mx0tSB3PGle5Y0Bud-4n61A3aQJZY_SM,19290
|
190
|
+
pyglove/ext/evolution/regularized_evolution.py,sha256=kSILZHmlThoszJ5Q07ZDm0K9mnE19DAbZ9yn_1ADiDU,1954
|
191
|
+
pyglove/ext/evolution/regularized_evolution_test.py,sha256=g1cAoHrx3I-ZTe1wuPdM5f2TMOvOT4jMsoCPyPSWboQ,3472
|
192
|
+
pyglove/ext/evolution/selectors.py,sha256=VFgA4p645LE1jXoE-DZx4x9Ka_SrUAhn8AkHsczSl4s,12102
|
193
|
+
pyglove/ext/evolution/selectors_test.py,sha256=Cqs4g9UvKRM0sBlpiqcZu7_HXKoPMpTaApfoCodazFo,7714
|
194
|
+
pyglove/ext/evolution/where.py,sha256=yfjjEpf9N2PFsLx1WHT-5gpTq53iMgqEcLXjpm7J3Ts,4761
|
195
|
+
pyglove/ext/evolution/where_test.py,sha256=nswc__l4r1JFl40xKU0rIt0sH9Iud1Odltj171W6zvw,1931
|
196
|
+
pyglove/ext/mutfun/__init__.py,sha256=LaGc13KS90EV5hCK3ChWYvQEvf4yEkdjNeYHXZ0HljA,4959
|
197
|
+
pyglove/ext/mutfun/base.py,sha256=tLNJzbHnct1sun9nbfwe8ZeACMZMdOPU1HrMmGvwl1A,16703
|
198
|
+
pyglove/ext/mutfun/base_test.py,sha256=Yst9JGydOXl6EpjNJ8UmLXPacin_5863FKgNWacMkv8,21312
|
199
|
+
pyglove/ext/mutfun/basic_ops.py,sha256=DfwjLI0rN0g6X8HpkEPNZX5y0d1NPCb6P-FxQzeNUlI,5667
|
200
|
+
pyglove/ext/mutfun/basic_ops_test.py,sha256=NcRTUWG6WmL6EljsOk-of7-xHaRGRjAbjW3I6huyd8o,11244
|
201
|
+
pyglove/ext/scalars/__init__.py,sha256=6RZ3w8_SgN0pl20JM4M_k93r9vEUNGR9MbmCx5-lBvQ,2749
|
202
|
+
pyglove/ext/scalars/base.py,sha256=Q6a93-RsocyXYRKtj4A9PQPnmPujRHy5RcLU5fvIw4U,7102
|
203
|
+
pyglove/ext/scalars/base_test.py,sha256=yKTseS5PlTqwzfbkvSGgoQyJbhmpG0hRQFS3io6eoZQ,3095
|
204
|
+
pyglove/ext/scalars/maths.py,sha256=pLGWwWc8pLtndSwHGYbwr4XWp2AOs0Cuf63wpifmvDY,3188
|
205
|
+
pyglove/ext/scalars/maths_test.py,sha256=v_VKkcReUrSAuWjBCb0O5XHlA9PD5I-MnfFlpHiNCSg,3923
|
206
|
+
pyglove/ext/scalars/randoms.py,sha256=LkMIIx7lOq_lvJvVS3BrgWGuWl7Pi91-lA-O8x_gZsg,4198
|
207
|
+
pyglove/ext/scalars/randoms_test.py,sha256=nEhiqarg8l_5EOucp59CYrpO2uKxS1pe0hmBdZUzRNM,2000
|
208
|
+
pyglove/ext/scalars/step_wise.py,sha256=IDw3tuTpv0KVh7AN44W43zqm1-E0HWPUlytWOQC9w3Y,3789
|
209
|
+
pyglove/ext/scalars/step_wise_test.py,sha256=TL1vJ19xVx2t5HKuyIzGoogF7N3Rm8YhLE6JF7i0iy8,2540
|
210
|
+
pyglove-0.4.5.dev202501132210.dist-info/LICENSE,sha256=WNHhf_5RCaeuKWyq_K39vmp9F28LxKsB4SpomwSZ2L0,11357
|
211
|
+
pyglove-0.4.5.dev202501132210.dist-info/METADATA,sha256=KWNb5dpCN_KPTLteWuk1wk4m6lO6gkivcByEJPPAOJQ,7067
|
212
|
+
pyglove-0.4.5.dev202501132210.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
|
213
|
+
pyglove-0.4.5.dev202501132210.dist-info/top_level.txt,sha256=wITzJSKcj8GZUkbq-MvUQnFadkiuAv_qv5qQMw0fIow,8
|
214
|
+
pyglove-0.4.5.dev202501132210.dist-info/RECORD,,
|
@@ -1,154 +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
|
-
# pylint: disable=line-too-long
|
15
|
-
"""Utility library that provides common traits for objects in Python.
|
16
|
-
|
17
|
-
Overview
|
18
|
-
--------
|
19
|
-
|
20
|
-
``pg.object_utils`` sits at the bottom of all PyGlove modules and empowers other
|
21
|
-
modules with the following features:
|
22
|
-
|
23
|
-
+---------------------+--------------------------------------------+
|
24
|
-
| Functionality | API |
|
25
|
-
+=====================+============================================+
|
26
|
-
| Formatting | :class:`pg.Formattable`, |
|
27
|
-
| | |
|
28
|
-
| | :func:`pg.format`, |
|
29
|
-
| | |
|
30
|
-
| | :func:`pg.print`, |
|
31
|
-
| | |
|
32
|
-
| | :func:`pg.object_utils.kvlist_str`, |
|
33
|
-
| | |
|
34
|
-
| | :func:`pg.object_utils.quote_if_str`, |
|
35
|
-
| | |
|
36
|
-
| | :func:`pg.object_utils.message_on_path` |
|
37
|
-
+---------------------+--------------------------------------------+
|
38
|
-
| Serialization | :class:`pg.JSONConvertible`, |
|
39
|
-
| | |
|
40
|
-
| | :func:`pg.registered_types`, |
|
41
|
-
| | |
|
42
|
-
| | :func:`pg.object_utils.to_json`, |
|
43
|
-
| | |
|
44
|
-
| | :func:`pg.object_utils.from_json`, |
|
45
|
-
+---------------------+--------------------------------------------+
|
46
|
-
| Partial construction| :class:`pg.MaybePartial`, |
|
47
|
-
| | |
|
48
|
-
| | :const:`pg.MISSING_VALUE`. |
|
49
|
-
+---------------------+--------------------------------------------+
|
50
|
-
| Hierarchical key | :class:`pg.KeyPath` |
|
51
|
-
| representation | |
|
52
|
-
+---------------------+--------------------------------------------+
|
53
|
-
| Hierarchical object | :func:`pg.object_utils.traverse` |
|
54
|
-
| traversal | |
|
55
|
-
+---------------------+--------------------------------------------+
|
56
|
-
| Hierarchical object | :func:`pg.object_utils.transform`, |
|
57
|
-
| transformation | |
|
58
|
-
| | :func:`pg.object_utils.merge`, |
|
59
|
-
| | |
|
60
|
-
| | :func:`pg.object_utils.canonicalize`, |
|
61
|
-
| | |
|
62
|
-
| | :func:`pg.object_utils.flatten` |
|
63
|
-
+---------------------+--------------------------------------------+
|
64
|
-
| Code generation | :class:`pg.object_utils.make_function` |
|
65
|
-
+---------------------+--------------------------------------------+
|
66
|
-
| Docstr handling | :class:`pg.docstr`, |
|
67
|
-
+---------------------+--------------------------------------------+
|
68
|
-
| Error handling | :class:`pg.catch_errors`, |
|
69
|
-
+---------------------+--------------------------------------------+
|
70
|
-
"""
|
71
|
-
# pylint: enable=line-too-long
|
72
|
-
# pylint: disable=g-bad-import-order
|
73
|
-
# pylint: disable=g-importing-member
|
74
|
-
|
75
|
-
# Common traits.
|
76
|
-
from pyglove.core.object_utils.json_conversion import Nestable
|
77
|
-
from pyglove.core.object_utils.json_conversion import JSONValueType
|
78
|
-
|
79
|
-
from pyglove.core.object_utils.json_conversion import JSONConvertible
|
80
|
-
from pyglove.core.object_utils.json_conversion import from_json
|
81
|
-
from pyglove.core.object_utils.json_conversion import to_json
|
82
|
-
from pyglove.core.object_utils.json_conversion import registered_types
|
83
|
-
|
84
|
-
from pyglove.core.object_utils.common_traits import Formattable
|
85
|
-
from pyglove.core.object_utils.common_traits import MaybePartial
|
86
|
-
from pyglove.core.object_utils.common_traits import Functor
|
87
|
-
|
88
|
-
from pyglove.core.object_utils.common_traits import explicit_method_override
|
89
|
-
from pyglove.core.object_utils.common_traits import ensure_explicit_method_override
|
90
|
-
|
91
|
-
# Value location.
|
92
|
-
from pyglove.core.object_utils.value_location import KeyPath
|
93
|
-
from pyglove.core.object_utils.value_location import StrKey
|
94
|
-
|
95
|
-
# Value markers.
|
96
|
-
from pyglove.core.object_utils.missing import MissingValue
|
97
|
-
from pyglove.core.object_utils.missing import MISSING_VALUE
|
98
|
-
|
99
|
-
# Handling hierarchical.
|
100
|
-
from pyglove.core.object_utils.hierarchical import traverse
|
101
|
-
from pyglove.core.object_utils.hierarchical import transform
|
102
|
-
from pyglove.core.object_utils.hierarchical import flatten
|
103
|
-
from pyglove.core.object_utils.hierarchical import canonicalize
|
104
|
-
from pyglove.core.object_utils.hierarchical import merge
|
105
|
-
from pyglove.core.object_utils.hierarchical import merge_tree
|
106
|
-
from pyglove.core.object_utils.hierarchical import is_partial
|
107
|
-
from pyglove.core.object_utils.hierarchical import try_listify_dict_with_int_keys
|
108
|
-
|
109
|
-
# Handling formatting.
|
110
|
-
from pyglove.core.object_utils.formatting import format # pylint: disable=redefined-builtin
|
111
|
-
from pyglove.core.object_utils.formatting import printv as print # pylint: disable=redefined-builtin
|
112
|
-
from pyglove.core.object_utils.formatting import kvlist_str
|
113
|
-
from pyglove.core.object_utils.formatting import quote_if_str
|
114
|
-
from pyglove.core.object_utils.formatting import maybe_markdown_quote
|
115
|
-
from pyglove.core.object_utils.formatting import comma_delimited_str
|
116
|
-
from pyglove.core.object_utils.formatting import auto_plural
|
117
|
-
from pyglove.core.object_utils.formatting import message_on_path
|
118
|
-
from pyglove.core.object_utils.formatting import BracketType
|
119
|
-
from pyglove.core.object_utils.formatting import bracket_chars
|
120
|
-
|
121
|
-
# Context managers for defining the default format for __str__ and __repr__.
|
122
|
-
from pyglove.core.object_utils.common_traits import str_format
|
123
|
-
from pyglove.core.object_utils.common_traits import repr_format
|
124
|
-
|
125
|
-
# Handling code generation.
|
126
|
-
from pyglove.core.object_utils.codegen import make_function
|
127
|
-
|
128
|
-
# Handling thread local values.
|
129
|
-
from pyglove.core.object_utils.thread_local import thread_local_value_scope
|
130
|
-
from pyglove.core.object_utils.thread_local import thread_local_has
|
131
|
-
from pyglove.core.object_utils.thread_local import thread_local_set
|
132
|
-
from pyglove.core.object_utils.thread_local import thread_local_get
|
133
|
-
from pyglove.core.object_utils.thread_local import thread_local_del
|
134
|
-
from pyglove.core.object_utils.thread_local import thread_local_increment
|
135
|
-
from pyglove.core.object_utils.thread_local import thread_local_decrement
|
136
|
-
from pyglove.core.object_utils.thread_local import thread_local_push
|
137
|
-
from pyglove.core.object_utils.thread_local import thread_local_pop
|
138
|
-
|
139
|
-
# Handling docstrings.
|
140
|
-
from pyglove.core.object_utils.docstr_utils import DocStr
|
141
|
-
from pyglove.core.object_utils.docstr_utils import DocStrStyle
|
142
|
-
from pyglove.core.object_utils.docstr_utils import DocStrEntry
|
143
|
-
from pyglove.core.object_utils.docstr_utils import DocStrExample
|
144
|
-
from pyglove.core.object_utils.docstr_utils import DocStrArgument
|
145
|
-
from pyglove.core.object_utils.docstr_utils import DocStrReturns
|
146
|
-
from pyglove.core.object_utils.docstr_utils import DocStrRaises
|
147
|
-
from pyglove.core.object_utils.docstr_utils import docstr
|
148
|
-
|
149
|
-
# Handling exceptions.
|
150
|
-
from pyglove.core.object_utils.error_utils import catch_errors
|
151
|
-
from pyglove.core.object_utils.error_utils import CatchErrorsContext
|
152
|
-
|
153
|
-
# pylint: enable=g-importing-member
|
154
|
-
# pylint: enable=g-bad-import-order
|
@@ -1,82 +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.object_utils.common_traits."""
|
15
|
-
|
16
|
-
import unittest
|
17
|
-
from pyglove.core.object_utils import common_traits
|
18
|
-
|
19
|
-
|
20
|
-
class Foo(common_traits.Formattable):
|
21
|
-
|
22
|
-
def format(
|
23
|
-
self, compact: bool = False, verbose: bool = True, **kwargs):
|
24
|
-
return f'{self.__class__.__name__}(compact={compact}, verbose={verbose})'
|
25
|
-
|
26
|
-
|
27
|
-
class Bar(common_traits.Formattable):
|
28
|
-
|
29
|
-
def __init__(self, foo: Foo):
|
30
|
-
self._foo = foo
|
31
|
-
|
32
|
-
def format(
|
33
|
-
self, compact: bool = False, verbose: bool = True,
|
34
|
-
root_indent: int = 0, **kwargs):
|
35
|
-
foo_str = self._foo.format(
|
36
|
-
compact=compact, verbose=verbose, root_indent=root_indent + 1)
|
37
|
-
return f'{self.__class__.__name__}(foo={foo_str})'
|
38
|
-
|
39
|
-
|
40
|
-
class FormattableTest(unittest.TestCase):
|
41
|
-
|
42
|
-
def test_formattable(self):
|
43
|
-
foo = Foo()
|
44
|
-
self.assertEqual(repr(foo), 'Foo(compact=True, verbose=True)')
|
45
|
-
self.assertEqual(str(foo), 'Foo(compact=False, verbose=True)')
|
46
|
-
|
47
|
-
def test_formattable_with_custom_format(self):
|
48
|
-
class Baz(Foo):
|
49
|
-
__str_format_kwargs__ = {'compact': False, 'verbose': False}
|
50
|
-
__repr_format_kwargs__ = {'compact': True, 'verbose': False}
|
51
|
-
|
52
|
-
bar = Baz()
|
53
|
-
self.assertEqual(repr(bar), 'Baz(compact=True, verbose=False)')
|
54
|
-
self.assertEqual(str(bar), 'Baz(compact=False, verbose=False)')
|
55
|
-
|
56
|
-
def test_formattable_with_context_managers(self):
|
57
|
-
foo = Foo()
|
58
|
-
with common_traits.str_format(verbose=False):
|
59
|
-
with common_traits.repr_format(compact=False):
|
60
|
-
self.assertEqual(repr(foo), 'Foo(compact=False, verbose=True)')
|
61
|
-
self.assertEqual(str(foo), 'Foo(compact=False, verbose=False)')
|
62
|
-
|
63
|
-
|
64
|
-
class ExplicitlyOverrideTest(unittest.TestCase):
|
65
|
-
|
66
|
-
def test_explicitly_override(self):
|
67
|
-
class A:
|
68
|
-
|
69
|
-
@common_traits.explicit_method_override
|
70
|
-
def __init__(self, x, y):
|
71
|
-
pass
|
72
|
-
|
73
|
-
def bar(self):
|
74
|
-
pass
|
75
|
-
|
76
|
-
common_traits.ensure_explicit_method_override(A.__init__)
|
77
|
-
with self.assertRaisesRegex(TypeError, '.* is a PyGlove managed method'):
|
78
|
-
common_traits.ensure_explicit_method_override(A.bar)
|
79
|
-
|
80
|
-
|
81
|
-
if __name__ == '__main__':
|
82
|
-
unittest.main()
|