omlish 0.0.0.dev275__py3-none-any.whl → 0.0.0.dev276__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.
- omlish/__about__.py +2 -2
- omlish/marshal/objects/dataclasses.py +21 -4
- omlish/reflect/__init__.py +1 -0
- omlish/reflect/types.py +4 -0
- omlish/typedvalues/marshal.py +4 -0
- {omlish-0.0.0.dev275.dist-info → omlish-0.0.0.dev276.dist-info}/METADATA +1 -1
- {omlish-0.0.0.dev275.dist-info → omlish-0.0.0.dev276.dist-info}/RECORD +11 -11
- {omlish-0.0.0.dev275.dist-info → omlish-0.0.0.dev276.dist-info}/WHEEL +0 -0
- {omlish-0.0.0.dev275.dist-info → omlish-0.0.0.dev276.dist-info}/entry_points.txt +0 -0
- {omlish-0.0.0.dev275.dist-info → omlish-0.0.0.dev276.dist-info}/licenses/LICENSE +0 -0
- {omlish-0.0.0.dev275.dist-info → omlish-0.0.0.dev276.dist-info}/top_level.txt +0 -0
omlish/__about__.py
CHANGED
@@ -188,12 +188,25 @@ class AbstractDataclassFactory(lang.Abstract):
|
|
188
188
|
##
|
189
189
|
|
190
190
|
|
191
|
+
def _type_or_generic_base(rty: rfl.Type) -> type | None:
|
192
|
+
if isinstance(rty, rfl.Generic):
|
193
|
+
return rty.cls
|
194
|
+
elif isinstance(rty, type):
|
195
|
+
return rty
|
196
|
+
else:
|
197
|
+
return None
|
198
|
+
|
199
|
+
|
191
200
|
class DataclassMarshalerFactory(AbstractDataclassFactory, SimpleMarshalerFactory):
|
192
201
|
def guard(self, ctx: MarshalContext, rty: rfl.Type) -> bool:
|
193
|
-
return
|
202
|
+
return (
|
203
|
+
(ty := _type_or_generic_base(rty)) is not None and
|
204
|
+
dc.is_dataclass(ty) and
|
205
|
+
not lang.is_abstract_class(ty)
|
206
|
+
)
|
194
207
|
|
195
208
|
def fn(self, ctx: MarshalContext, rty: rfl.Type) -> Marshaler:
|
196
|
-
ty = check.isinstance(rty, type)
|
209
|
+
ty = check.isinstance(_type_or_generic_base(rty), type)
|
197
210
|
check.state(dc.is_dataclass(ty))
|
198
211
|
check.state(not lang.is_abstract_class(ty))
|
199
212
|
|
@@ -217,10 +230,14 @@ class DataclassMarshalerFactory(AbstractDataclassFactory, SimpleMarshalerFactory
|
|
217
230
|
|
218
231
|
class DataclassUnmarshalerFactory(AbstractDataclassFactory, SimpleUnmarshalerFactory):
|
219
232
|
def guard(self, ctx: UnmarshalContext, rty: rfl.Type) -> bool:
|
220
|
-
return
|
233
|
+
return (
|
234
|
+
(ty := _type_or_generic_base(rty)) is not None and
|
235
|
+
dc.is_dataclass(ty) and
|
236
|
+
not lang.is_abstract_class(ty)
|
237
|
+
)
|
221
238
|
|
222
239
|
def fn(self, ctx: UnmarshalContext, rty: rfl.Type) -> Unmarshaler:
|
223
|
-
ty = check.isinstance(rty, type)
|
240
|
+
ty = check.isinstance(_type_or_generic_base(rty), type)
|
224
241
|
check.state(dc.is_dataclass(ty))
|
225
242
|
check.state(not lang.is_abstract_class(ty))
|
226
243
|
|
omlish/reflect/__init__.py
CHANGED
omlish/reflect/types.py
CHANGED
omlish/typedvalues/marshal.py
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
import typing as ta
|
2
|
+
|
1
3
|
from omlish import check
|
2
4
|
from omlish import dataclasses as dc
|
3
5
|
from omlish import lang
|
@@ -93,6 +95,8 @@ def _build_typed_values_impls(rty: rfl.Type) -> msh.Impls:
|
|
93
95
|
|
94
96
|
if isinstance(cur, rfl.Union):
|
95
97
|
todo.extend(cur.args)
|
98
|
+
elif isinstance(cur, ta.TypeVar):
|
99
|
+
todo.append(rfl.get_type_var_bound(cur))
|
96
100
|
else:
|
97
101
|
opt_cls_set.add(check.issubclass(check.isinstance(cur, type), TypedValue))
|
98
102
|
|
@@ -1,5 +1,5 @@
|
|
1
1
|
omlish/.manifests.json,sha256=pjGUyLHaoWpPqRP3jz2u1fC1qoRc2lvrEcpU_Ax2tdg,8253
|
2
|
-
omlish/__about__.py,sha256=
|
2
|
+
omlish/__about__.py,sha256=FoTicGOCebKQ5tQVQjrcXhtN_4ZJBQMrDN3RO12ykvQ,3380
|
3
3
|
omlish/__init__.py,sha256=SsyiITTuK0v74XpKV8dqNaCmjOlan1JZKrHQv5rWKPA,253
|
4
4
|
omlish/c3.py,sha256=rer-TPOFDU6fYq_AWio_AmA-ckZ8JDY5shIzQ_yXfzA,8414
|
5
5
|
omlish/cached.py,sha256=MLap_p0rdGoDIMVhXVHm1tsbcWobJF0OanoodV03Ju8,542
|
@@ -514,7 +514,7 @@ omlish/marshal/composite/newtypes.py,sha256=5-te247TiPYf84oFhf59tqIOOByXj8i9KaHT
|
|
514
514
|
omlish/marshal/composite/optionals.py,sha256=MnecrmrJYjQvYJipIHNCDq78oH09dOjnw5pvaMKqoeU,1537
|
515
515
|
omlish/marshal/composite/wrapped.py,sha256=jOsn3h1vLIqcoSTB-0KObnsdbV8jSVWJYbf7Kg9AUwg,750
|
516
516
|
omlish/marshal/objects/__init__.py,sha256=F4wej8L_tedC8ETYxAnmKfdPR9TjsqIus9Z3nZofYuc,182
|
517
|
-
omlish/marshal/objects/dataclasses.py,sha256=
|
517
|
+
omlish/marshal/objects/dataclasses.py,sha256=NcjXrZI8y7THULwUH75LQFVHAyP_-EBBzUi9cbhyPZ0,9046
|
518
518
|
omlish/marshal/objects/helpers.py,sha256=85GZp4h3Yo0GYGmnZpKgNxkWnSk8h2R21nfDLU2DtM0,1110
|
519
519
|
omlish/marshal/objects/marshal.py,sha256=JarKGecMgaFYSUHUj-ZUYVP9HK6u2rjpBb3DWX9Uhh0,2648
|
520
520
|
omlish/marshal/objects/metadata.py,sha256=2_rESnslP5fwtEW1xy9ECJg64uA4cQBuYcGkRfPElts,3342
|
@@ -567,11 +567,11 @@ omlish/os/pidfiles/cli.py,sha256=2SSsP4O3VdpsDIMAkWgWSjh_YNIPzCD9l5LNN2qrIjo,207
|
|
567
567
|
omlish/os/pidfiles/manager.py,sha256=QphQxIENVVwvBWynLCNU31NwOfLkV43VoTVeYFn2Hac,2351
|
568
568
|
omlish/os/pidfiles/pidfile.py,sha256=9tI5IMVwfPfnni0XMn4x5ptNQgm36n8tLeUNPf50UqU,4394
|
569
569
|
omlish/os/pidfiles/pinning.py,sha256=v9RlJ4BnJZcaZZXiiRqbmzLluaSOkeeEb_WrbKEClBQ,6643
|
570
|
-
omlish/reflect/__init__.py,sha256=
|
570
|
+
omlish/reflect/__init__.py,sha256=64eHbD6zL6Fhp7FfXb8n9ZHywlODjBN3rm1LMvZ081A,822
|
571
571
|
omlish/reflect/inspect.py,sha256=WCo2YpBYauKw6k758FLlZ_H4Q05rgVPs96fEv9w6zHQ,1538
|
572
572
|
omlish/reflect/ops.py,sha256=RJ6jzrM4ieFsXzWyNXWV43O_WgzEaUvlHSc5N2ezW2A,2044
|
573
573
|
omlish/reflect/subst.py,sha256=g3q7NmNWsmc67mcchmCE3WFPCMDSBq-FXn4ah-DWL_U,3622
|
574
|
-
omlish/reflect/types.py,sha256=
|
574
|
+
omlish/reflect/types.py,sha256=Cn9FYGoiCNt0FS0YLiTTAR12WKcesWMapCrVYcb8IDo,9225
|
575
575
|
omlish/secrets/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
576
576
|
omlish/secrets/all.py,sha256=SGB1KrlNrxlNpazEHYy95NTzteLi8ndoEgMhU7luBl8,420
|
577
577
|
omlish/secrets/crypto.py,sha256=9D21lnvPhStwu8arD4ssT0ih0bDG-nlqIRdVgYL40xA,3708
|
@@ -781,11 +781,11 @@ omlish/typedvalues/accessor.py,sha256=0k21N-CkjGaY6zCwugsRfOC_CDkqk7wNz4oxO1_6EE
|
|
781
781
|
omlish/typedvalues/collection.py,sha256=jsXSggmMMvGATcJgQkUXt5Guwq8aquw73_OIC-e6U0I,5300
|
782
782
|
omlish/typedvalues/generic.py,sha256=byWG_gMXhNelckUwdmOoJE9FKkL71Q4BSi4ZLyy0XZ0,788
|
783
783
|
omlish/typedvalues/holder.py,sha256=4SwRezsmuDDEO5gENGx8kTm30pblF5UktoEAu02i-Gk,1554
|
784
|
-
omlish/typedvalues/marshal.py,sha256=
|
784
|
+
omlish/typedvalues/marshal.py,sha256=H1gQuFHHgFR5qTs0lM7VXK41BivSbOXC9I2XUpo5SXU,4603
|
785
785
|
omlish/typedvalues/values.py,sha256=Acyf6xSdNHxrkRXLXrFqJouk35YOveso1VqTbyPwQW4,1223
|
786
|
-
omlish-0.0.0.
|
787
|
-
omlish-0.0.0.
|
788
|
-
omlish-0.0.0.
|
789
|
-
omlish-0.0.0.
|
790
|
-
omlish-0.0.0.
|
791
|
-
omlish-0.0.0.
|
786
|
+
omlish-0.0.0.dev276.dist-info/licenses/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
|
787
|
+
omlish-0.0.0.dev276.dist-info/METADATA,sha256=_xEeojOHXbc_azzKB0NydBuLd1aMhKO1l65YCPUaqNE,4198
|
788
|
+
omlish-0.0.0.dev276.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
|
789
|
+
omlish-0.0.0.dev276.dist-info/entry_points.txt,sha256=Lt84WvRZJskWCAS7xnQGZIeVWksprtUHj0llrvVmod8,35
|
790
|
+
omlish-0.0.0.dev276.dist-info/top_level.txt,sha256=pePsKdLu7DvtUiecdYXJ78iO80uDNmBlqe-8hOzOmfs,7
|
791
|
+
omlish-0.0.0.dev276.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|