omlish 0.0.0.dev369__py3-none-any.whl → 0.0.0.dev370__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/lite/dataclasses.py +67 -0
- {omlish-0.0.0.dev369.dist-info → omlish-0.0.0.dev370.dist-info}/METADATA +1 -1
- {omlish-0.0.0.dev369.dist-info → omlish-0.0.0.dev370.dist-info}/RECORD +8 -8
- {omlish-0.0.0.dev369.dist-info → omlish-0.0.0.dev370.dist-info}/WHEEL +0 -0
- {omlish-0.0.0.dev369.dist-info → omlish-0.0.0.dev370.dist-info}/entry_points.txt +0 -0
- {omlish-0.0.0.dev369.dist-info → omlish-0.0.0.dev370.dist-info}/licenses/LICENSE +0 -0
- {omlish-0.0.0.dev369.dist-info → omlish-0.0.0.dev370.dist-info}/top_level.txt +0 -0
omlish/__about__.py
CHANGED
omlish/lite/dataclasses.py
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
# ruff: noqa: UP006 UP007 UP045
|
2
2
|
import dataclasses as dc
|
3
|
+
import functools
|
3
4
|
import typing as ta
|
4
5
|
|
5
6
|
|
@@ -83,3 +84,69 @@ def dataclass_repr_omit_none(obj: ta.Any) -> str:
|
|
83
84
|
|
84
85
|
def dataclass_repr_omit_falsey(obj: ta.Any) -> str:
|
85
86
|
return dataclass_repr_filtered(obj, lambda o, f, v: bool(v))
|
87
|
+
|
88
|
+
|
89
|
+
##
|
90
|
+
|
91
|
+
|
92
|
+
def dataclass_kw_only_init():
|
93
|
+
def inner(cls):
|
94
|
+
if not isinstance(cls, type) and dc.is_dataclass(cls):
|
95
|
+
raise TypeError(cls)
|
96
|
+
|
97
|
+
real_init = cls.__init__ # type: ignore[misc]
|
98
|
+
|
99
|
+
flds = dc.fields(cls) # noqa
|
100
|
+
|
101
|
+
if any(f.name == 'self' for f in flds):
|
102
|
+
self_name = '__dataclass_self__'
|
103
|
+
else:
|
104
|
+
self_name = 'self'
|
105
|
+
|
106
|
+
src = '\n'.join([
|
107
|
+
'def __init__(',
|
108
|
+
f' {self_name},',
|
109
|
+
' *,',
|
110
|
+
*[
|
111
|
+
''.join([
|
112
|
+
f' {f.name}: __dataclass_type_{f.name}__',
|
113
|
+
f' = __dataclass_default_{f.name}__' if f.default is not dc.MISSING else '',
|
114
|
+
',',
|
115
|
+
])
|
116
|
+
for f in flds
|
117
|
+
],
|
118
|
+
') -> __dataclass_None__:',
|
119
|
+
' __dataclass_real_init__(',
|
120
|
+
f' {self_name},',
|
121
|
+
*[
|
122
|
+
f' {f.name}={f.name},'
|
123
|
+
for f in flds
|
124
|
+
],
|
125
|
+
' )',
|
126
|
+
])
|
127
|
+
|
128
|
+
ns: dict = {
|
129
|
+
'__dataclass_None__': None,
|
130
|
+
'__dataclass_real_init__': real_init,
|
131
|
+
**{
|
132
|
+
f'__dataclass_type_{f.name}__': f.type
|
133
|
+
for f in flds
|
134
|
+
},
|
135
|
+
**{
|
136
|
+
f'__dataclass_default_{f.name}__': f.default
|
137
|
+
for f in flds
|
138
|
+
if f.default is not dc.MISSING
|
139
|
+
},
|
140
|
+
}
|
141
|
+
|
142
|
+
exec(src, ns)
|
143
|
+
|
144
|
+
kw_only_init = ns['__init__']
|
145
|
+
|
146
|
+
functools.update_wrapper(kw_only_init, real_init)
|
147
|
+
|
148
|
+
cls.__init__ = kw_only_init # type: ignore[misc]
|
149
|
+
|
150
|
+
return cls
|
151
|
+
|
152
|
+
return inner
|
@@ -1,5 +1,5 @@
|
|
1
1
|
omlish/.manifests.json,sha256=aT8yZ-Zh-9wfHl5Ym5ouiWC1i0cy7Q7RlhzavB6VLPI,8587
|
2
|
-
omlish/__about__.py,sha256=
|
2
|
+
omlish/__about__.py,sha256=ppW6ebyCL8_ZT4j16N88-VXSlgE7mfjsGTbuhlNYrDw,3478
|
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
|
@@ -467,7 +467,7 @@ omlish/lite/cached.py,sha256=O7ozcoDNFm1Hg2wtpHEqYSp_i_nCLNOP6Ueq_Uk-7mU,1300
|
|
467
467
|
omlish/lite/check.py,sha256=ytCkwZoKfOlJqylL-AGm8C2WfsWJd2q3kFbnZCzX3_M,13844
|
468
468
|
omlish/lite/configs.py,sha256=4-1uVxo-aNV7vMKa7PVNhM610eejG1WepB42-Dw2xQI,914
|
469
469
|
omlish/lite/contextmanagers.py,sha256=jpMxp5xwooRQJxsQ6J2ll4AJP9O7a5_YrLCGgwUFfD0,5703
|
470
|
-
omlish/lite/dataclasses.py,sha256=
|
470
|
+
omlish/lite/dataclasses.py,sha256=aRSCZz1jN_UI-CWJhN0SJeKxa-79vXNUZ6YOMgG31SE,3610
|
471
471
|
omlish/lite/imports.py,sha256=JDYRFxu-ofHEBfd5VV3b27oKOLhtTpuzte1_Nt7yLgw,1352
|
472
472
|
omlish/lite/inject.py,sha256=xvmLmtD3_2INnkurJQv76_Rkh9usbApEQrXJ4cvuVAk,29019
|
473
473
|
omlish/lite/json.py,sha256=7-02Ny4fq-6YAu5ynvqoijhuYXWpLmfCI19GUeZnb1c,740
|
@@ -882,9 +882,9 @@ omlish/typedvalues/marshal.py,sha256=AtBz7Jq-BfW8vwM7HSxSpR85JAXmxK2T0xDblmm1HI0
|
|
882
882
|
omlish/typedvalues/of_.py,sha256=UXkxSj504WI2UrFlqdZJbu2hyDwBhL7XVrc2qdR02GQ,1309
|
883
883
|
omlish/typedvalues/reflect.py,sha256=PAvKW6T4cW7u--iX80w3HWwZUS3SmIZ2_lQjT65uAyk,1026
|
884
884
|
omlish/typedvalues/values.py,sha256=ym46I-q2QJ_6l4UlERqv3yj87R-kp8nCKMRph0xQ3UA,1307
|
885
|
-
omlish-0.0.0.
|
886
|
-
omlish-0.0.0.
|
887
|
-
omlish-0.0.0.
|
888
|
-
omlish-0.0.0.
|
889
|
-
omlish-0.0.0.
|
890
|
-
omlish-0.0.0.
|
885
|
+
omlish-0.0.0.dev370.dist-info/licenses/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
|
886
|
+
omlish-0.0.0.dev370.dist-info/METADATA,sha256=WQMJ4AZLxaxumd_FFL5iHiJ-yJ_PafoYdFF3vSKd15Y,4416
|
887
|
+
omlish-0.0.0.dev370.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
888
|
+
omlish-0.0.0.dev370.dist-info/entry_points.txt,sha256=Lt84WvRZJskWCAS7xnQGZIeVWksprtUHj0llrvVmod8,35
|
889
|
+
omlish-0.0.0.dev370.dist-info/top_level.txt,sha256=pePsKdLu7DvtUiecdYXJ78iO80uDNmBlqe-8hOzOmfs,7
|
890
|
+
omlish-0.0.0.dev370.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|