pyglove 0.4.5.dev202411120809__py3-none-any.whl → 0.4.5.dev202411132359__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.
@@ -408,9 +408,9 @@ class Dict(dict, base.Symbolic, pg_typing.CustomTyping):
408
408
  return value
409
409
 
410
410
  if value.__class__ is base_value.__class__:
411
- getter = lambda x, k: x.sym_getattr(k)
411
+ getter = lambda x, k: x.sym_getattr(k, pg_typing.MISSING_VALUE)
412
412
  elif isinstance(value, dict) and isinstance(base_value, dict):
413
- getter = lambda x, k: x[k]
413
+ getter = lambda x, k: x.get(k, pg_typing.MISSING_VALUE)
414
414
  else:
415
415
  return value
416
416
 
@@ -971,14 +971,13 @@ class Object(base.Symbolic, metaclass=ObjectMeta):
971
971
 
972
972
  def sym_jsonify(self, **kwargs) -> object_utils.JSONValueType:
973
973
  """Converts current object to a dict of plain Python objects."""
974
- return object_utils.merge([
975
- {
976
- object_utils.JSONConvertible.TYPE_NAME_KEY: (
977
- self.__class__.__serialization_key__
978
- )
979
- },
980
- self._sym_attributes.to_json(**kwargs),
981
- ])
974
+ json_dict = {
975
+ object_utils.JSONConvertible.TYPE_NAME_KEY: (
976
+ self.__class__.__serialization_key__
977
+ )
978
+ }
979
+ json_dict.update(self._sym_attributes.to_json(**kwargs))
980
+ return json_dict
982
981
 
983
982
  def format(self,
984
983
  compact: bool = False,
@@ -137,7 +137,9 @@ class Ref(Object, base.Inferential, tree_view.HtmlTreeView.Extension):
137
137
  def sym_eq(self, other: Any) -> bool:
138
138
  return isinstance(other, Ref) and self.value is other.value
139
139
 
140
- def sym_jsonify(self, **kwargs: Any) -> Any:
140
+ def sym_jsonify(self, *, save_ref_value: bool = False, **kwargs: Any) -> Any:
141
+ if save_ref_value:
142
+ return base.to_json(self._value, save_ref_value=save_ref_value, **kwargs)
141
143
  raise TypeError(f'{self!r} cannot be serialized at the moment.')
142
144
 
143
145
  def __getstate__(self):
@@ -112,6 +112,11 @@ class RefTest(unittest.TestCase):
112
112
  TypeError, '.* cannot be serialized at the moment'):
113
113
  ref.Ref(A(1)).to_json()
114
114
 
115
+ self.assertEqual(
116
+ ref.Ref(A(1)).to_json(save_ref_value=True),
117
+ A(1).to_json()
118
+ )
119
+
115
120
  def test_pickle(self):
116
121
  with self.assertRaisesRegex(
117
122
  TypeError, '.* cannot be pickled at the moment'):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pyglove
3
- Version: 0.4.5.dev202411120809
3
+ Version: 0.4.5.dev202411132359
4
4
  Summary: PyGlove: A library for manipulating Python objects.
5
5
  Home-page: https://github.com/google/pyglove
6
6
  Author: PyGlove Authors
@@ -86,7 +86,7 @@ pyglove/core/symbolic/class_wrapper.py,sha256=s8TL7LLim4xRcC5fxlYMuS1zdaEDIZomSF
86
86
  pyglove/core/symbolic/class_wrapper_test.py,sha256=bPK-qZ7tVKanzXb1mZ4StkLB5kHtecBjKBesg2NQfL0,21636
87
87
  pyglove/core/symbolic/compounding.py,sha256=zg6x09rtaSEb5v5pYJWWWpI5Cezy2Oy1iuWw4LUj2HY,11717
88
88
  pyglove/core/symbolic/compounding_test.py,sha256=PSnk_ds0q6pRJrpN9teMwZtMrbUp5_P-D7ea7wRTK6k,8372
89
- pyglove/core/symbolic/dict.py,sha256=gp2sn9nf7movorKWDQsbCQmj0PBdqFul0FYJLm5_kac,36839
89
+ pyglove/core/symbolic/dict.py,sha256=pArDaHDktq5D522-9pS78bMYfwUzEftc-eDRaW7FJZ0,36893
90
90
  pyglove/core/symbolic/dict_test.py,sha256=09kAEy_Kiwr8O59CIKK9a9KG-xxJJEIKbfEcZhs5KfU,70809
91
91
  pyglove/core/symbolic/diff.py,sha256=UFjC6GnH_yzutuJHSao-di9qVeWL1amBYUJrEKmol3U,16351
92
92
  pyglove/core/symbolic/diff_test.py,sha256=EDiGHqqKhi-NeMxr-bgjBEqlquee_4l_0IM6hgAb9Mg,29400
@@ -98,13 +98,13 @@ pyglove/core/symbolic/inferred.py,sha256=jGCKXLkYGDs-iUflR57UWrCrOQIpkpv5kHVyj-J
98
98
  pyglove/core/symbolic/inferred_test.py,sha256=G6uPykONcChvs6vZujXHSWaYfjewLTVBscMqzzKNty0,1270
99
99
  pyglove/core/symbolic/list.py,sha256=63v4Ph0FdkoCDj1FjwcmjUHGZSJLBLxaTKcGg7PdghE,30345
100
100
  pyglove/core/symbolic/list_test.py,sha256=yHYAJhe_EYwtU9p8eDztSXNBjnAGKe0UDN5U6S-xDr8,60627
101
- pyglove/core/symbolic/object.py,sha256=1NdVMGoZiyuuxXIbQiW-n4NhUdHSuiedB-chx1n0BrQ,42349
101
+ pyglove/core/symbolic/object.py,sha256=oSb5pNxQDdvrjCFYsWARa8NkQxWIjdCo9lTbETiVQ38,42335
102
102
  pyglove/core/symbolic/object_test.py,sha256=IRoeBr8j1SJVohDkEaat0KlW5YQfco6zARTh3qOW0Jc,93092
103
103
  pyglove/core/symbolic/origin.py,sha256=5bH1jZvFHY5jwku32vDm8Bj2i-buv-YNuzOOsA5GlSA,6177
104
104
  pyglove/core/symbolic/origin_test.py,sha256=dU_ZGrGDetM_lYVMn3wQO0d367_t_t8eESe3NrKPBNE,3159
105
105
  pyglove/core/symbolic/pure_symbolic.py,sha256=FVq-5Cg5uZe3ybTIrTqTHIEJIpje0oxzV2kKL6UKlsU,3244
106
- pyglove/core/symbolic/ref.py,sha256=6I2f_jbsmkXZzpGRk60Z0l_vlSdj7WJ39WmvsOyv5xg,8068
107
- pyglove/core/symbolic/ref_test.py,sha256=AjzvXoBtR8lOp8BgQOejnSnLcvgM3Yxq9GIMaNb1i6Y,5786
106
+ pyglove/core/symbolic/ref.py,sha256=Kf2QKRBi4uP7Ql4zL8hh6Le1fUWTo5c0kiGzg06ZpAQ,8204
107
+ pyglove/core/symbolic/ref_test.py,sha256=ZQV7qb6LGnLyyYgY1fL86rfMZ6T3uy_leQDAd2Bd5Tc,5890
108
108
  pyglove/core/symbolic/symbolize.py,sha256=ohID9-V8QiFe7OMpPlRomiqUnKBVMpypd8ZuMuHaa4s,6582
109
109
  pyglove/core/symbolic/symbolize_test.py,sha256=o7bRfMhGc6uw2FIH8arE99-bPb3i0YixcHYyiP-QqeQ,6487
110
110
  pyglove/core/tuning/__init__.py,sha256=JtXpjsBto01fLf55hZ1dSx-CEZUyVQeyRP9AMH_hw8c,2229
@@ -196,8 +196,8 @@ pyglove/ext/scalars/randoms.py,sha256=LkMIIx7lOq_lvJvVS3BrgWGuWl7Pi91-lA-O8x_gZs
196
196
  pyglove/ext/scalars/randoms_test.py,sha256=nEhiqarg8l_5EOucp59CYrpO2uKxS1pe0hmBdZUzRNM,2000
197
197
  pyglove/ext/scalars/step_wise.py,sha256=IDw3tuTpv0KVh7AN44W43zqm1-E0HWPUlytWOQC9w3Y,3789
198
198
  pyglove/ext/scalars/step_wise_test.py,sha256=TL1vJ19xVx2t5HKuyIzGoogF7N3Rm8YhLE6JF7i0iy8,2540
199
- pyglove-0.4.5.dev202411120809.dist-info/LICENSE,sha256=WNHhf_5RCaeuKWyq_K39vmp9F28LxKsB4SpomwSZ2L0,11357
200
- pyglove-0.4.5.dev202411120809.dist-info/METADATA,sha256=HxsvT93myUtzRBcnZcuo34HLit5tDtQEsyPxl7e7XmQ,6666
201
- pyglove-0.4.5.dev202411120809.dist-info/WHEEL,sha256=a7TGlA-5DaHMRrarXjVbQagU3Man_dCnGIWMJr5kRWo,91
202
- pyglove-0.4.5.dev202411120809.dist-info/top_level.txt,sha256=wITzJSKcj8GZUkbq-MvUQnFadkiuAv_qv5qQMw0fIow,8
203
- pyglove-0.4.5.dev202411120809.dist-info/RECORD,,
199
+ pyglove-0.4.5.dev202411132359.dist-info/LICENSE,sha256=WNHhf_5RCaeuKWyq_K39vmp9F28LxKsB4SpomwSZ2L0,11357
200
+ pyglove-0.4.5.dev202411132359.dist-info/METADATA,sha256=ygZvraZ7Q2rJF_sKc9Mg2EG5x2Jclm-kYIqV1xO9kU0,6666
201
+ pyglove-0.4.5.dev202411132359.dist-info/WHEEL,sha256=R06PA3UVYHThwHvxuRWMqaGcr-PuniXahwjmQRFMEkY,91
202
+ pyglove-0.4.5.dev202411132359.dist-info/top_level.txt,sha256=wITzJSKcj8GZUkbq-MvUQnFadkiuAv_qv5qQMw0fIow,8
203
+ pyglove-0.4.5.dev202411132359.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.4.0)
2
+ Generator: setuptools (75.5.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5