omdev 0.0.0.dev452__py3-none-any.whl → 0.0.0.dev454__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.
@@ -8,7 +8,6 @@ import typing as ta
8
8
  from omlish import lang
9
9
  from omlish import marshal as msh
10
10
  from omlish import reflect as rfl
11
- from omlish.funcs import match as mfs
12
11
 
13
12
  from .requires import RequiresMarkerItem
14
13
  from .requires import RequiresMarkerList
@@ -43,10 +42,11 @@ class RequiresMarkerListMarshaler(msh.Marshaler):
43
42
  return [inner(e) for e in o]
44
43
 
45
44
 
46
- class RequiresMarkerListMarshalerFactory(msh.MarshalerFactoryMatchClass):
47
- @mfs.simple(lambda _, ctx, rty: rty is MarshalRequiresMarkerList)
48
- def _build(self, ctx: msh.MarshalContext, rty: rfl.Type) -> msh.Marshaler:
49
- return RequiresMarkerListMarshaler(
45
+ class RequiresMarkerListMarshalerFactory(msh.MarshalerFactory):
46
+ def make_marshaler(self, ctx: msh.MarshalContext, rty: rfl.Type) -> ta.Callable[[], msh.Marshaler] | None:
47
+ if rty is not MarshalRequiresMarkerList:
48
+ return None
49
+ return lambda: RequiresMarkerListMarshaler(
50
50
  ctx.make(RequiresMarkerItem),
51
51
  ctx.make(RequiresNode),
52
52
  )
omdev/scripts/ci.py CHANGED
@@ -49,6 +49,7 @@ import io
49
49
  import itertools
50
50
  import json
51
51
  import logging
52
+ import operator
52
53
  import os
53
54
  import os.path
54
55
  import re
@@ -1515,6 +1516,36 @@ def dataclass_repr_omit_falsey(obj: ta.Any) -> str:
1515
1516
  ##
1516
1517
 
1517
1518
 
1519
+ def dataclass_descriptor_method(*bind_attrs: str, bind_owner: bool = False) -> ta.Callable:
1520
+ if not bind_attrs:
1521
+ def __get__(self, instance, owner=None): # noqa
1522
+ return self
1523
+
1524
+ elif bind_owner:
1525
+ def __get__(self, instance, owner=None): # noqa
1526
+ # Guaranteed to return a new instance even with no attrs
1527
+ return dc.replace(self, **{
1528
+ a: v.__get__(instance, owner) if (v := getattr(self, a)) is not None else None
1529
+ for a in bind_attrs
1530
+ })
1531
+
1532
+ else:
1533
+ def __get__(self, instance, owner=None): # noqa
1534
+ if instance is None:
1535
+ return self
1536
+
1537
+ # Guaranteed to return a new instance even with no attrs
1538
+ return dc.replace(self, **{
1539
+ a: v.__get__(instance, owner) if (v := getattr(self, a)) is not None else None
1540
+ for a in bind_attrs
1541
+ })
1542
+
1543
+ return __get__
1544
+
1545
+
1546
+ ##
1547
+
1548
+
1518
1549
  def dataclass_kw_only_init():
1519
1550
  def inner(cls):
1520
1551
  if not isinstance(cls, type) and dc.is_dataclass(cls):
@@ -4775,6 +4806,13 @@ class _EmptyMaybe(_Maybe[T]):
4775
4806
  Maybe._empty = _EmptyMaybe() # noqa
4776
4807
 
4777
4808
 
4809
+ ##
4810
+
4811
+
4812
+ setattr(Maybe, 'just', _JustMaybe) # noqa
4813
+ setattr(Maybe, 'empty', functools.partial(operator.attrgetter('_empty'), Maybe))
4814
+
4815
+
4778
4816
  ########################################
4779
4817
  # ../../../omlish/lite/runtime.py
4780
4818
 
omdev/scripts/interp.py CHANGED
@@ -27,6 +27,7 @@ import inspect
27
27
  import itertools
28
28
  import json
29
29
  import logging
30
+ import operator
30
31
  import os
31
32
  import os.path
32
33
  import re
@@ -2687,6 +2688,13 @@ class _EmptyMaybe(_Maybe[T]):
2687
2688
  Maybe._empty = _EmptyMaybe() # noqa
2688
2689
 
2689
2690
 
2691
+ ##
2692
+
2693
+
2694
+ setattr(Maybe, 'just', _JustMaybe) # noqa
2695
+ setattr(Maybe, 'empty', functools.partial(operator.attrgetter('_empty'), Maybe))
2696
+
2697
+
2690
2698
  ########################################
2691
2699
  # ../../../omlish/lite/runtime.py
2692
2700
 
@@ -13,6 +13,7 @@ import contextvars
13
13
  import dataclasses as dc
14
14
  import functools
15
15
  import inspect
16
+ import operator
16
17
  import sys
17
18
  import threading
18
19
  import types
@@ -953,6 +954,13 @@ class _EmptyMaybe(_Maybe[T]):
953
954
  Maybe._empty = _EmptyMaybe() # noqa
954
955
 
955
956
 
957
+ ##
958
+
959
+
960
+ setattr(Maybe, 'just', _JustMaybe) # noqa
961
+ setattr(Maybe, 'empty', functools.partial(operator.attrgetter('_empty'), Maybe))
962
+
963
+
956
964
  ########################################
957
965
  # inject.py
958
966
 
@@ -53,6 +53,7 @@ import itertools
53
53
  import json
54
54
  import logging
55
55
  import multiprocessing as mp
56
+ import operator
56
57
  import os
57
58
  import os.path
58
59
  import re
@@ -5284,6 +5285,13 @@ class _EmptyMaybe(_Maybe[T]):
5284
5285
  Maybe._empty = _EmptyMaybe() # noqa
5285
5286
 
5286
5287
 
5288
+ ##
5289
+
5290
+
5291
+ setattr(Maybe, 'just', _JustMaybe) # noqa
5292
+ setattr(Maybe, 'empty', functools.partial(operator.attrgetter('_empty'), Maybe))
5293
+
5294
+
5287
5295
  ########################################
5288
5296
  # ../../../omlish/lite/runtime.py
5289
5297
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: omdev
3
- Version: 0.0.0.dev452
3
+ Version: 0.0.0.dev454
4
4
  Summary: omdev
5
5
  Author: wrmsr
6
6
  License-Expression: BSD-3-Clause
@@ -14,7 +14,7 @@ Classifier: Programming Language :: Python :: 3.13
14
14
  Requires-Python: >=3.13
15
15
  Description-Content-Type: text/markdown
16
16
  License-File: LICENSE
17
- Requires-Dist: omlish==0.0.0.dev452
17
+ Requires-Dist: omlish==0.0.0.dev454
18
18
  Provides-Extra: all
19
19
  Requires-Dist: black~=25.1; extra == "all"
20
20
  Requires-Dist: pycparser~=2.23; extra == "all"
@@ -206,7 +206,7 @@ omdev/oci/pack/packing.py,sha256=zsvQN-VD-7MaMjiylUpg_jXicp1YDbtyUktrR7ek6Ug,541
206
206
  omdev/oci/pack/repositories.py,sha256=Ogh4Wj2ySvIMnuDFb2OeBc67hHtc0WWkAfBxOkNE5aA,4954
207
207
  omdev/oci/pack/unpacking.py,sha256=tVYw8REKuYd4ciGXwMmXxlp4CRLHdET_gB9ShYh1d_M,6003
208
208
  omdev/packaging/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
209
- omdev/packaging/marshal.py,sha256=Cmn9TJ3-XToKU3zh8mk2dSUZekjww5Zprw_ayXVkrTw,2354
209
+ omdev/packaging/marshal.py,sha256=2wgzvAhKopHh3L5cb03zRCA99ieC25ajmGDiJDRT8fc,2349
210
210
  omdev/packaging/names.py,sha256=-orp16m20gSFeKRiGkRNyqFVV4S1y_Djvjdq_5hNwpY,2533
211
211
  omdev/packaging/requires.py,sha256=nn4ff8mlgfsdZooKzQjhASFS7mMVUCCmcb-150F0Lcg,15739
212
212
  omdev/packaging/revisions.py,sha256=tLNDVtPiygB8mSxwp-kDxeEHhpBzD0jayndjsgUOfkM,5055
@@ -274,13 +274,13 @@ omdev/pyproject/resources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJW
274
274
  omdev/pyproject/resources/docker-dev.sh,sha256=DHkz5D18jok_oDolfg2mqrvGRWFoCe9GQo04dR1czcc,838
275
275
  omdev/pyproject/resources/python.sh,sha256=rFaN4SiJ9hdLDXXsDTwugI6zsw6EPkgYMmtacZeTbvw,749
276
276
  omdev/scripts/__init__.py,sha256=MKCvUAEQwsIvwLixwtPlpBqmkMXLCnjjXyAXvVpDwVk,91
277
- omdev/scripts/ci.py,sha256=0mb5CkL2y6_ZkMM5xXLEoVkPlh-c5_mb-Ezk45xYdCI,426377
278
- omdev/scripts/interp.py,sha256=EaKZtDiopNF0i8Wf_DSYyM8c10aAGL41_1FUxCpSjxE,168417
279
- omdev/scripts/pyproject.py,sha256=vwsxUUITXH_ouIWwrd-XXIny75dArsaL_bG--fe0h7M,349088
277
+ omdev/scripts/ci.py,sha256=dmpJXF0mS37K6psivRDukXEBF8Z6CAuK_PQERDBzFgE,427466
278
+ omdev/scripts/interp.py,sha256=GELa1TPg0tStMbofHpEYetMrAl3YnInehwler2gdE2I,168564
279
+ omdev/scripts/pyproject.py,sha256=wf3hKkkAjQn7qwnY6cHTRJg3_duUi2R8a3foFaNuehQ,349235
280
280
  omdev/scripts/slowcat.py,sha256=PwdT-pg62imEEb6kcOozl9_YUi-4KopvjvzWT1OmGb0,2717
281
281
  omdev/scripts/tmpexec.py,sha256=t0nErDRALjTk7H0X8ADjZUIDFjlPNzOOokmjCjBHdzs,1431
282
282
  omdev/scripts/lib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
283
- omdev/scripts/lib/inject.py,sha256=dregGw2IK_yBHR8rUKamV-sRx4YW_NUZAy-xrnfyie0,53675
283
+ omdev/scripts/lib/inject.py,sha256=RLaY0ngSAI54p4BskEWBznKhoqs2kO2U1TKd373SezQ,53822
284
284
  omdev/scripts/lib/logs.py,sha256=zRZYc-P9B0-uSETpIXNkNmb874jVvTfKtmUSJ47yZFw,63073
285
285
  omdev/scripts/lib/marshal.py,sha256=DOsUKJ1U3mwsNN1Et20cqJUBlzZZcmAv1m-zxMKHYEQ,46835
286
286
  omdev/tokens/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -324,9 +324,9 @@ omdev/tools/jsonview/resources/jsonview.js,sha256=faDvXDOXKvEvjOuIlz4D3F2ReQXb_b
324
324
  omdev/tools/pawk/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
325
325
  omdev/tools/pawk/__main__.py,sha256=VCqeRVnqT1RPEoIrqHFSu4PXVMg4YEgF4qCQm90-eRI,66
326
326
  omdev/tools/pawk/pawk.py,sha256=ao5mdrpiSU4AZ8mBozoEaV3UVlmVTnRG9wD9XP70MZE,11429
327
- omdev-0.0.0.dev452.dist-info/licenses/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
328
- omdev-0.0.0.dev452.dist-info/METADATA,sha256=-J9rJD1XgfVcxwgJjjLDimXq1_PHk4yLQn-N0E9Km6M,5100
329
- omdev-0.0.0.dev452.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
330
- omdev-0.0.0.dev452.dist-info/entry_points.txt,sha256=dHLXFmq5D9B8qUyhRtFqTGWGxlbx3t5ejedjrnXNYLU,33
331
- omdev-0.0.0.dev452.dist-info/top_level.txt,sha256=1nr7j30fEWgLYHW3lGR9pkdHkb7knv1U1ES1XRNVQ6k,6
332
- omdev-0.0.0.dev452.dist-info/RECORD,,
327
+ omdev-0.0.0.dev454.dist-info/licenses/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
328
+ omdev-0.0.0.dev454.dist-info/METADATA,sha256=Ks_c2Y-FgpxM2pNG7p9KMdxtFFnnA6M2mwMUIXCWCgs,5100
329
+ omdev-0.0.0.dev454.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
330
+ omdev-0.0.0.dev454.dist-info/entry_points.txt,sha256=dHLXFmq5D9B8qUyhRtFqTGWGxlbx3t5ejedjrnXNYLU,33
331
+ omdev-0.0.0.dev454.dist-info/top_level.txt,sha256=1nr7j30fEWgLYHW3lGR9pkdHkb7knv1U1ES1XRNVQ6k,6
332
+ omdev-0.0.0.dev454.dist-info/RECORD,,