pyglove 0.4.5.dev202507120809__tar.gz → 0.4.5.dev202507122122__tar.gz

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 (228) hide show
  1. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/PKG-INFO +1 -1
  2. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/coding/execution.py +3 -2
  3. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/coding/permissions.py +17 -16
  4. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/io/file_system_test.py +6 -6
  5. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/symbolic/functor.py +3 -4
  6. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/utils/docstr_utils_test.py +0 -1
  7. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/utils/json_conversion.py +1 -0
  8. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/utils/timing_test.py +1 -1
  9. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove.egg-info/PKG-INFO +1 -1
  10. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/LICENSE +0 -0
  11. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/README.md +0 -0
  12. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/__init__.py +0 -0
  13. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/__init__.py +0 -0
  14. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/coding/__init__.py +0 -0
  15. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/coding/errors.py +0 -0
  16. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/coding/errors_test.py +0 -0
  17. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/coding/execution_test.py +0 -0
  18. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/coding/function_generation.py +0 -0
  19. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/coding/function_generation_test.py +0 -0
  20. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/coding/parsing.py +0 -0
  21. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/coding/parsing_test.py +0 -0
  22. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/coding/permissions_test.py +0 -0
  23. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/detouring/__init__.py +0 -0
  24. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/detouring/class_detour.py +0 -0
  25. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/detouring/class_detour_test.py +0 -0
  26. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/geno/__init__.py +0 -0
  27. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/geno/base.py +0 -0
  28. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/geno/base_test.py +0 -0
  29. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/geno/categorical.py +0 -0
  30. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/geno/categorical_test.py +0 -0
  31. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/geno/custom.py +0 -0
  32. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/geno/custom_test.py +0 -0
  33. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/geno/deduping.py +0 -0
  34. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/geno/deduping_test.py +0 -0
  35. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/geno/dna_generator.py +0 -0
  36. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/geno/dna_generator_test.py +0 -0
  37. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/geno/numerical.py +0 -0
  38. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/geno/numerical_test.py +0 -0
  39. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/geno/random.py +0 -0
  40. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/geno/random_test.py +0 -0
  41. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/geno/space.py +0 -0
  42. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/geno/space_test.py +0 -0
  43. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/geno/sweeping.py +0 -0
  44. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/geno/sweeping_test.py +0 -0
  45. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/hyper/__init__.py +0 -0
  46. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/hyper/base.py +0 -0
  47. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/hyper/categorical.py +0 -0
  48. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/hyper/categorical_test.py +0 -0
  49. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/hyper/custom.py +0 -0
  50. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/hyper/custom_test.py +0 -0
  51. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/hyper/derived.py +0 -0
  52. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/hyper/derived_test.py +0 -0
  53. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/hyper/dynamic_evaluation.py +0 -0
  54. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/hyper/dynamic_evaluation_test.py +0 -0
  55. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/hyper/evolvable.py +0 -0
  56. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/hyper/evolvable_test.py +0 -0
  57. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/hyper/iter.py +0 -0
  58. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/hyper/iter_test.py +0 -0
  59. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/hyper/numerical.py +0 -0
  60. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/hyper/numerical_test.py +0 -0
  61. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/hyper/object_template.py +0 -0
  62. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/hyper/object_template_test.py +0 -0
  63. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/io/__init__.py +0 -0
  64. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/io/file_system.py +0 -0
  65. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/io/sequence.py +0 -0
  66. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/io/sequence_test.py +0 -0
  67. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/logging.py +0 -0
  68. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/logging_test.py +0 -0
  69. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/patching/__init__.py +0 -0
  70. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/patching/object_factory.py +0 -0
  71. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/patching/object_factory_test.py +0 -0
  72. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/patching/pattern_based.py +0 -0
  73. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/patching/pattern_based_test.py +0 -0
  74. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/patching/rule_based.py +0 -0
  75. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/patching/rule_based_test.py +0 -0
  76. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/symbolic/__init__.py +0 -0
  77. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/symbolic/base.py +0 -0
  78. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/symbolic/base_test.py +0 -0
  79. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/symbolic/boilerplate.py +0 -0
  80. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/symbolic/boilerplate_test.py +0 -0
  81. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/symbolic/class_wrapper.py +0 -0
  82. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/symbolic/class_wrapper_test.py +0 -0
  83. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/symbolic/compounding.py +0 -0
  84. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/symbolic/compounding_test.py +0 -0
  85. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/symbolic/contextual_object.py +0 -0
  86. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/symbolic/contextual_object_test.py +0 -0
  87. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/symbolic/dict.py +0 -0
  88. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/symbolic/dict_test.py +0 -0
  89. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/symbolic/diff.py +0 -0
  90. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/symbolic/diff_test.py +0 -0
  91. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/symbolic/error_info.py +0 -0
  92. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/symbolic/error_info_test.py +0 -0
  93. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/symbolic/flags.py +0 -0
  94. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/symbolic/flags_test.py +0 -0
  95. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/symbolic/functor_test.py +0 -0
  96. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/symbolic/inferred.py +0 -0
  97. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/symbolic/inferred_test.py +0 -0
  98. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/symbolic/list.py +0 -0
  99. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/symbolic/list_test.py +0 -0
  100. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/symbolic/object.py +0 -0
  101. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/symbolic/object_test.py +0 -0
  102. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/symbolic/origin.py +0 -0
  103. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/symbolic/origin_test.py +0 -0
  104. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/symbolic/pure_symbolic.py +0 -0
  105. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/symbolic/ref.py +0 -0
  106. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/symbolic/ref_test.py +0 -0
  107. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/symbolic/symbolize.py +0 -0
  108. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/symbolic/symbolize_test.py +0 -0
  109. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/tuning/__init__.py +0 -0
  110. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/tuning/backend.py +0 -0
  111. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/tuning/backend_test.py +0 -0
  112. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/tuning/early_stopping.py +0 -0
  113. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/tuning/local_backend.py +0 -0
  114. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/tuning/protocols.py +0 -0
  115. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/tuning/protocols_test.py +0 -0
  116. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/tuning/sample.py +0 -0
  117. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/tuning/sample_test.py +0 -0
  118. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/typing/__init__.py +0 -0
  119. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/typing/annotated.py +0 -0
  120. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/typing/annotated_test.py +0 -0
  121. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/typing/annotation_conversion.py +0 -0
  122. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/typing/annotation_conversion_test.py +0 -0
  123. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/typing/annotation_future_test.py +0 -0
  124. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/typing/callable_ext.py +0 -0
  125. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/typing/callable_ext_test.py +0 -0
  126. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/typing/callable_signature.py +0 -0
  127. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/typing/callable_signature_test.py +0 -0
  128. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/typing/class_schema.py +0 -0
  129. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/typing/class_schema_test.py +0 -0
  130. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/typing/custom_typing.py +0 -0
  131. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/typing/inspect.py +0 -0
  132. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/typing/inspect_test.py +0 -0
  133. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/typing/json_schema.py +0 -0
  134. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/typing/json_schema_test.py +0 -0
  135. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/typing/key_specs.py +0 -0
  136. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/typing/key_specs_test.py +0 -0
  137. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/typing/pytype_support.py +0 -0
  138. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/typing/type_conversion.py +0 -0
  139. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/typing/type_conversion_test.py +0 -0
  140. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/typing/typed_missing.py +0 -0
  141. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/typing/typed_missing_test.py +0 -0
  142. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/typing/value_specs.py +0 -0
  143. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/typing/value_specs_test.py +0 -0
  144. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/utils/__init__.py +0 -0
  145. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/utils/common_traits.py +0 -0
  146. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/utils/common_traits_test.py +0 -0
  147. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/utils/contextual.py +0 -0
  148. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/utils/contextual_test.py +0 -0
  149. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/utils/docstr_utils.py +0 -0
  150. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/utils/error_utils.py +0 -0
  151. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/utils/error_utils_test.py +0 -0
  152. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/utils/formatting.py +0 -0
  153. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/utils/formatting_test.py +0 -0
  154. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/utils/hierarchical.py +0 -0
  155. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/utils/hierarchical_test.py +0 -0
  156. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/utils/json_conversion_test.py +0 -0
  157. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/utils/missing.py +0 -0
  158. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/utils/missing_test.py +0 -0
  159. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/utils/text_color.py +0 -0
  160. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/utils/text_color_test.py +0 -0
  161. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/utils/thread_local.py +0 -0
  162. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/utils/thread_local_test.py +0 -0
  163. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/utils/timing.py +0 -0
  164. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/utils/value_location.py +0 -0
  165. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/utils/value_location_test.py +0 -0
  166. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/views/__init__.py +0 -0
  167. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/views/base.py +0 -0
  168. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/views/base_test.py +0 -0
  169. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/views/html/__init__.py +0 -0
  170. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/views/html/base.py +0 -0
  171. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/views/html/base_test.py +0 -0
  172. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/views/html/controls/__init__.py +0 -0
  173. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/views/html/controls/base.py +0 -0
  174. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/views/html/controls/label.py +0 -0
  175. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/views/html/controls/label_test.py +0 -0
  176. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/views/html/controls/progress_bar.py +0 -0
  177. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/views/html/controls/progress_bar_test.py +0 -0
  178. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/views/html/controls/tab.py +0 -0
  179. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/views/html/controls/tab_test.py +0 -0
  180. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/views/html/controls/tooltip.py +0 -0
  181. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/views/html/controls/tooltip_test.py +0 -0
  182. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/views/html/tree_view.py +0 -0
  183. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/core/views/html/tree_view_test.py +0 -0
  184. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/ext/__init__.py +0 -0
  185. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/ext/early_stopping/__init__.py +0 -0
  186. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/ext/early_stopping/base.py +0 -0
  187. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/ext/early_stopping/base_test.py +0 -0
  188. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/ext/early_stopping/step_wise.py +0 -0
  189. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/ext/early_stopping/step_wise_test.py +0 -0
  190. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/ext/evolution/__init__.py +0 -0
  191. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/ext/evolution/base.py +0 -0
  192. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/ext/evolution/base_test.py +0 -0
  193. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/ext/evolution/hill_climb.py +0 -0
  194. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/ext/evolution/hill_climb_test.py +0 -0
  195. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/ext/evolution/mutators.py +0 -0
  196. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/ext/evolution/mutators_test.py +0 -0
  197. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/ext/evolution/neat.py +0 -0
  198. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/ext/evolution/neat_test.py +0 -0
  199. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/ext/evolution/nsga2.py +0 -0
  200. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/ext/evolution/nsga2_test.py +0 -0
  201. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/ext/evolution/recombinators.py +0 -0
  202. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/ext/evolution/recombinators_test.py +0 -0
  203. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/ext/evolution/regularized_evolution.py +0 -0
  204. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/ext/evolution/regularized_evolution_test.py +0 -0
  205. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/ext/evolution/selectors.py +0 -0
  206. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/ext/evolution/selectors_test.py +0 -0
  207. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/ext/evolution/where.py +0 -0
  208. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/ext/evolution/where_test.py +0 -0
  209. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/ext/mutfun/__init__.py +0 -0
  210. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/ext/mutfun/base.py +0 -0
  211. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/ext/mutfun/base_test.py +0 -0
  212. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/ext/mutfun/basic_ops.py +0 -0
  213. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/ext/mutfun/basic_ops_test.py +0 -0
  214. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/ext/scalars/__init__.py +0 -0
  215. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/ext/scalars/base.py +0 -0
  216. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/ext/scalars/base_test.py +0 -0
  217. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/ext/scalars/maths.py +0 -0
  218. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/ext/scalars/maths_test.py +0 -0
  219. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/ext/scalars/randoms.py +0 -0
  220. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/ext/scalars/randoms_test.py +0 -0
  221. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/ext/scalars/step_wise.py +0 -0
  222. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove/ext/scalars/step_wise_test.py +0 -0
  223. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove.egg-info/SOURCES.txt +0 -0
  224. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove.egg-info/dependency_links.txt +0 -0
  225. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove.egg-info/requires.txt +0 -0
  226. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/pyglove.egg-info/top_level.txt +0 -0
  227. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/setup.cfg +0 -0
  228. {pyglove-0.4.5.dev202507120809 → pyglove-0.4.5.dev202507122122}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyglove
3
- Version: 0.4.5.dev202507120809
3
+ Version: 0.4.5.dev202507122122
4
4
  Summary: PyGlove: A library for manipulating Python objects.
5
5
  Home-page: https://github.com/google/pyglove
6
6
  Author: PyGlove Authors
@@ -198,8 +198,9 @@ def sandbox_call(
198
198
  except Exception as e: # pylint: disable=broad-exception-caught
199
199
  q.put(e)
200
200
 
201
- q = multiprocessing.Queue()
202
- p = multiprocessing.Process(
201
+ ctx = multiprocessing.get_context('fork')
202
+ q = ctx.Queue()
203
+ p = ctx.Process(
203
204
  target=_call, args=tuple([q] + list(args)), kwargs=kwargs
204
205
  )
205
206
  try:
@@ -20,7 +20,23 @@ from typing import Optional
20
20
  from pyglove.core import utils
21
21
 
22
22
 
23
- class CodePermission(enum.Flag):
23
+ class CodePermissionMeta(enum.EnumMeta):
24
+
25
+ @property
26
+ def BASIC(cls) -> 'CodePermission': # pylint: disable=invalid-name
27
+ """Returns basic permissions."""
28
+ return cls.ASSIGN | cls.CALL # pytype: disable=attribute-error
29
+
30
+ @property
31
+ def ALL(cls) -> 'CodePermission': # pylint: disable=invalid-name
32
+ """Returns all permissions."""
33
+ return (
34
+ cls.BASIC | cls.CONDITION | cls.LOOP | cls.EXCEPTION | # pytype: disable=attribute-error
35
+ cls.CLASS_DEFINITION | cls.FUNCTION_DEFINITION | cls.IMPORT # pytype: disable=attribute-error
36
+ )
37
+
38
+
39
+ class CodePermission(enum.Flag, metaclass=CodePermissionMeta):
24
40
  """Permissions for code execution."""
25
41
 
26
42
  # Allows assignment.
@@ -47,21 +63,6 @@ class CodePermission(enum.Flag):
47
63
  # Allows import.
48
64
  IMPORT = enum.auto()
49
65
 
50
- @classmethod
51
- @property
52
- def BASIC(cls) -> 'CodePermission': # pylint: disable=invalid-name
53
- """Returns basic permissions."""
54
- return CodePermission.ASSIGN | CodePermission.CALL
55
-
56
- @classmethod
57
- @property
58
- def ALL(cls) -> 'CodePermission': # pylint: disable=invalid-name
59
- """Returns all permissions."""
60
- return (
61
- CodePermission.BASIC | CodePermission.CONDITION | CodePermission.LOOP |
62
- CodePermission.EXCEPTION | CodePermission.CLASS_DEFINITION |
63
- CodePermission.FUNCTION_DEFINITION | CodePermission.IMPORT)
64
-
65
66
 
66
67
  _TLS_CODE_RUN_PERMISSION = '__code_run_permission__'
67
68
 
@@ -22,7 +22,7 @@ from pyglove.core.io import file_system
22
22
  class StdFileSystemTest(unittest.TestCase):
23
23
 
24
24
  def test_file(self):
25
- tmp_dir = tempfile.gettempdir()
25
+ tmp_dir = tempfile.mkdtemp()
26
26
  fs = file_system.StdFileSystem()
27
27
 
28
28
  file1 = os.path.join(tmp_dir, 'file1')
@@ -44,7 +44,7 @@ class StdFileSystemTest(unittest.TestCase):
44
44
  self.assertFalse(fs.exists(file1))
45
45
 
46
46
  def test_file_system(self):
47
- tmp_dir = tempfile.gettempdir()
47
+ tmp_dir = tempfile.mkdtemp()
48
48
  fs = file_system.StdFileSystem()
49
49
 
50
50
  # Create a directory.
@@ -68,7 +68,7 @@ class StdFileSystemTest(unittest.TestCase):
68
68
  # Test rm.
69
69
  with self.assertRaises(FileNotFoundError):
70
70
  fs.rm(os.path.join(dir_a, 'file2'))
71
- with self.assertRaises(IsADirectoryError):
71
+ with self.assertRaises((IsADirectoryError, PermissionError)):
72
72
  fs.rm(os.path.join(dir_a, 'b'))
73
73
 
74
74
  # Test rmdir.
@@ -184,7 +184,7 @@ class MemoryFileSystemTest(unittest.TestCase):
184
184
  class FileIoApiTest(unittest.TestCase):
185
185
 
186
186
  def test_standard_filesystem(self):
187
- file1 = os.path.join(tempfile.gettempdir(), 'file1')
187
+ file1 = os.path.join(tempfile.mkdtemp(), 'file1')
188
188
  with self.assertRaises(FileNotFoundError):
189
189
  file_system.readfile(file1)
190
190
  self.assertIsNone(file_system.readfile(file1, nonexist_ok=True))
@@ -199,7 +199,7 @@ class FileIoApiTest(unittest.TestCase):
199
199
  file_system.rm(file1)
200
200
  self.assertFalse(file_system.path_exists(file1))
201
201
 
202
- dir1 = os.path.join(tempfile.gettempdir(), 'dir1')
202
+ dir1 = os.path.join(tempfile.mkdtemp(), 'dir1')
203
203
  file_system.mkdir(dir1)
204
204
  self.assertEqual(file_system.listdir(dir1), [])
205
205
  file_system.mkdirs(os.path.join(dir1, 'a/b/c'))
@@ -208,7 +208,7 @@ class FileIoApiTest(unittest.TestCase):
208
208
  self.assertEqual(sorted(file_system.listdir(dir1)), ['a', 'file2']) # pylint: disable=g-generic-assert
209
209
  self.assertEqual( # pylint: disable=g-generic-assert
210
210
  sorted(file_system.listdir(dir1, fullpath=True)),
211
- ['/tmp/dir1/a', '/tmp/dir1/file2']
211
+ [os.path.join(dir1, 'a'), os.path.join(dir1, 'file2')]
212
212
  )
213
213
  file_system.rmdir(os.path.join(dir1, 'a/b/c'))
214
214
  file_system.rmdirs(os.path.join(dir1, 'a/b'))
@@ -88,7 +88,6 @@ class Functor(pg_object.Object, utils.Functor):
88
88
  #
89
89
 
90
90
  @classmethod
91
- @property
92
91
  def is_subclassed_functor(cls) -> bool:
93
92
  """Returns True if this class is a subclassed Functor."""
94
93
  return cls.auto_schema
@@ -96,7 +95,7 @@ class Functor(pg_object.Object, utils.Functor):
96
95
  @classmethod
97
96
  def _update_signatures_based_on_schema(cls):
98
97
  # Update the return value of subclassed functors.
99
- if cls.is_subclassed_functor: # pylint: disable=using-constant-test
98
+ if cls.is_subclassed_functor(): # pylint: disable=using-constant-test
100
99
  private_call_signature = pg_typing.Signature.from_callable(
101
100
  cls._call, auto_typing=True, auto_doc=True,
102
101
  )
@@ -235,7 +234,7 @@ class Functor(pg_object.Object, utils.Functor):
235
234
 
236
235
  # For subclassed Functor, we use thread-local storage for storing temporary
237
236
  # member overrides from the arguments during functor call.
238
- self._tls = threading.local() if self.is_subclassed_functor else None
237
+ self._tls = threading.local() if self.is_subclassed_functor() else None
239
238
 
240
239
  def _sym_inferred(self, key: str, **kwargs: Any) -> Any:
241
240
  """Overrides method to allow member overrides during call."""
@@ -361,7 +360,7 @@ class Functor(pg_object.Object, utils.Functor):
361
360
  args, kwargs = self._parse_call_time_overrides(*args, **kwargs)
362
361
  signature = self.__signature__
363
362
 
364
- if self.is_subclassed_functor:
363
+ if self.is_subclassed_functor():
365
364
  for arg_spec, arg_value in zip(signature.args, args):
366
365
  kwargs[arg_spec.name] = arg_value
367
366
 
@@ -111,7 +111,6 @@ class DocStrTest(unittest.TestCase):
111
111
  pass
112
112
 
113
113
  self.assertIsNone(docstr_utils.docstr(Foo))
114
- self.assertIsNone(docstr_utils.docstr(None))
115
114
 
116
115
  class Bar:
117
116
  """bar."""
@@ -624,6 +624,7 @@ def _method_to_json(f: types.MethodType) -> Dict[str, str]:
624
624
 
625
625
 
626
626
  _SUPPORTED_ANNOTATIONS = {
627
+ typing.Annotated: 'typing.Annotated',
627
628
  typing.Any: 'typing.Any',
628
629
  typing.Sequence: 'typing.Sequence',
629
630
  collections.abc.Sequence: 'typing.Sequence',
@@ -29,7 +29,7 @@ class TimeItTest(unittest.TestCase):
29
29
 
30
30
  tc.start()
31
31
  self.assertTrue(tc.has_started)
32
- self.assertGreater(tc.elapse, 0)
32
+ self.assertGreaterEqual(tc.elapse, 0)
33
33
 
34
34
  self.assertTrue(tc.end())
35
35
  self.assertTrue(tc.has_ended)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyglove
3
- Version: 0.4.5.dev202507120809
3
+ Version: 0.4.5.dev202507122122
4
4
  Summary: PyGlove: A library for manipulating Python objects.
5
5
  Home-page: https://github.com/google/pyglove
6
6
  Author: PyGlove Authors