omdev 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.
omdev/scripts/ci.py CHANGED
@@ -1112,6 +1112,72 @@ def dataclass_repr_omit_falsey(obj: ta.Any) -> str:
1112
1112
  return dataclass_repr_filtered(obj, lambda o, f, v: bool(v))
1113
1113
 
1114
1114
 
1115
+ ##
1116
+
1117
+
1118
+ def dataclass_kw_only_init():
1119
+ def inner(cls):
1120
+ if not isinstance(cls, type) and dc.is_dataclass(cls):
1121
+ raise TypeError(cls)
1122
+
1123
+ real_init = cls.__init__ # type: ignore[misc]
1124
+
1125
+ flds = dc.fields(cls) # noqa
1126
+
1127
+ if any(f.name == 'self' for f in flds):
1128
+ self_name = '__dataclass_self__'
1129
+ else:
1130
+ self_name = 'self'
1131
+
1132
+ src = '\n'.join([
1133
+ 'def __init__(',
1134
+ f' {self_name},',
1135
+ ' *,',
1136
+ *[
1137
+ ''.join([
1138
+ f' {f.name}: __dataclass_type_{f.name}__',
1139
+ f' = __dataclass_default_{f.name}__' if f.default is not dc.MISSING else '',
1140
+ ',',
1141
+ ])
1142
+ for f in flds
1143
+ ],
1144
+ ') -> __dataclass_None__:',
1145
+ ' __dataclass_real_init__(',
1146
+ f' {self_name},',
1147
+ *[
1148
+ f' {f.name}={f.name},'
1149
+ for f in flds
1150
+ ],
1151
+ ' )',
1152
+ ])
1153
+
1154
+ ns: dict = {
1155
+ '__dataclass_None__': None,
1156
+ '__dataclass_real_init__': real_init,
1157
+ **{
1158
+ f'__dataclass_type_{f.name}__': f.type
1159
+ for f in flds
1160
+ },
1161
+ **{
1162
+ f'__dataclass_default_{f.name}__': f.default
1163
+ for f in flds
1164
+ if f.default is not dc.MISSING
1165
+ },
1166
+ }
1167
+
1168
+ exec(src, ns)
1169
+
1170
+ kw_only_init = ns['__init__']
1171
+
1172
+ functools.update_wrapper(kw_only_init, real_init)
1173
+
1174
+ cls.__init__ = kw_only_init # type: ignore[misc]
1175
+
1176
+ return cls
1177
+
1178
+ return inner
1179
+
1180
+
1115
1181
  ########################################
1116
1182
  # ../../../omlish/lite/json.py
1117
1183
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: omdev
3
- Version: 0.0.0.dev369
3
+ Version: 0.0.0.dev370
4
4
  Summary: omdev
5
5
  Author: wrmsr
6
6
  License: BSD-3-Clause
@@ -12,7 +12,7 @@ Classifier: Operating System :: OS Independent
12
12
  Classifier: Operating System :: POSIX
13
13
  Requires-Python: >=3.13
14
14
  License-File: LICENSE
15
- Requires-Dist: omlish==0.0.0.dev369
15
+ Requires-Dist: omlish==0.0.0.dev370
16
16
  Provides-Extra: all
17
17
  Requires-Dist: black~=25.1; extra == "all"
18
18
  Requires-Dist: pycparser~=2.22; extra == "all"
@@ -252,7 +252,7 @@ omdev/pyproject/resources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJW
252
252
  omdev/pyproject/resources/docker-dev.sh,sha256=DHkz5D18jok_oDolfg2mqrvGRWFoCe9GQo04dR1czcc,838
253
253
  omdev/pyproject/resources/python.sh,sha256=rFaN4SiJ9hdLDXXsDTwugI6zsw6EPkgYMmtacZeTbvw,749
254
254
  omdev/scripts/__init__.py,sha256=MKCvUAEQwsIvwLixwtPlpBqmkMXLCnjjXyAXvVpDwVk,91
255
- omdev/scripts/ci.py,sha256=bNn3xIcxJkzf9R3jFtfNY3lGWjgrmarvlwkSgGCrIgs,358461
255
+ omdev/scripts/ci.py,sha256=tzVEK-JKZ4WNDGAziUbXpw_HEuYGQiMhsxUmM-usvu0,360136
256
256
  omdev/scripts/interp.py,sha256=T8EdNxuncwqCXfIBfCLoUcsYNqEhOrOE8V1hC9vTzqI,158095
257
257
  omdev/scripts/pyproject.py,sha256=qBBXmbdKMYzqxnb0zEWYhCOg9Cy0pWno3wjulICFj_o,267626
258
258
  omdev/scripts/slowcat.py,sha256=lssv4yrgJHiWfOiHkUut2p8E8Tq32zB-ujXESQxFFHY,2728
@@ -303,9 +303,9 @@ omdev/tools/jsonview/resources/jsonview.js,sha256=faDvXDOXKvEvjOuIlz4D3F2ReQXb_b
303
303
  omdev/tools/pawk/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
304
304
  omdev/tools/pawk/__main__.py,sha256=VCqeRVnqT1RPEoIrqHFSu4PXVMg4YEgF4qCQm90-eRI,66
305
305
  omdev/tools/pawk/pawk.py,sha256=ao5mdrpiSU4AZ8mBozoEaV3UVlmVTnRG9wD9XP70MZE,11429
306
- omdev-0.0.0.dev369.dist-info/licenses/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
307
- omdev-0.0.0.dev369.dist-info/METADATA,sha256=usoMV7gPHsZYBgyXp15G7pNeDgrucSp-FU0wgTguhjU,1674
308
- omdev-0.0.0.dev369.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
309
- omdev-0.0.0.dev369.dist-info/entry_points.txt,sha256=dHLXFmq5D9B8qUyhRtFqTGWGxlbx3t5ejedjrnXNYLU,33
310
- omdev-0.0.0.dev369.dist-info/top_level.txt,sha256=1nr7j30fEWgLYHW3lGR9pkdHkb7knv1U1ES1XRNVQ6k,6
311
- omdev-0.0.0.dev369.dist-info/RECORD,,
306
+ omdev-0.0.0.dev370.dist-info/licenses/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
307
+ omdev-0.0.0.dev370.dist-info/METADATA,sha256=UjeIHRSOXiCxWy2H7h6dN8UboN0247bGKM8y4by7gyc,1674
308
+ omdev-0.0.0.dev370.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
309
+ omdev-0.0.0.dev370.dist-info/entry_points.txt,sha256=dHLXFmq5D9B8qUyhRtFqTGWGxlbx3t5ejedjrnXNYLU,33
310
+ omdev-0.0.0.dev370.dist-info/top_level.txt,sha256=1nr7j30fEWgLYHW3lGR9pkdHkb7knv1U1ES1XRNVQ6k,6
311
+ omdev-0.0.0.dev370.dist-info/RECORD,,