omlish 0.0.0.dev396__py3-none-any.whl → 0.0.0.dev397__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 CHANGED
@@ -1,5 +1,5 @@
1
- __version__ = '0.0.0.dev396'
2
- __revision__ = '00b57bae472acf724c5154303eaea5f0f847f129'
1
+ __version__ = '0.0.0.dev397'
2
+ __revision__ = '9e68fce944686b71edd6536d7dc62e5d833442ef'
3
3
 
4
4
 
5
5
  #
@@ -175,6 +175,7 @@ class SetuptoolsBase:
175
175
  '*.g4',
176
176
  '*.h',
177
177
 
178
+ '.dataclasses.json',
178
179
  '.manifests.json',
179
180
 
180
181
  'LICENSE',
@@ -1,4 +1,7 @@
1
1
  import dataclasses as dc
2
+ import importlib.resources
3
+ import json
4
+ import typing as ta
2
5
 
3
6
 
4
7
  ##
@@ -10,3 +13,57 @@ PACKAGE_CONFIG_FILE_NAME = '.dataclasses.json'
10
13
  @dc.dataclass(frozen=True, kw_only=True)
11
14
  class PackageConfig:
12
15
  codegen: bool = False
16
+
17
+ def __init_subclass__(cls, **kwargs):
18
+ raise TypeError
19
+
20
+ @classmethod
21
+ def loads(cls, s: str) -> 'PackageConfig':
22
+ return cls(**json.loads(s))
23
+
24
+ def dumps(self) -> str:
25
+ return json.dumps(dc.asdict(self), indent=2)
26
+
27
+
28
+ DEFAULT_PACKAGE_CONFIG = PackageConfig()
29
+
30
+
31
+ ##
32
+
33
+
34
+ class PackageConfigCache:
35
+ def __init__(self) -> None:
36
+ super().__init__()
37
+
38
+ self._dct: dict[str, PackageConfig | None] = {}
39
+
40
+ @ta.overload
41
+ def get(self, pkg: str, default: PackageConfig) -> PackageConfig:
42
+ ...
43
+
44
+ @ta.overload
45
+ def get(self, pkg: str, default: PackageConfig | None = None) -> PackageConfig | None:
46
+ ...
47
+
48
+ def get(self, pkg, default=None):
49
+ try:
50
+ return self._dct[pkg]
51
+ except KeyError:
52
+ pass
53
+
54
+ try:
55
+ s = importlib.resources.read_text(pkg, PACKAGE_CONFIG_FILE_NAME)
56
+ except FileNotFoundError:
57
+ self._dct[pkg] = None
58
+ else:
59
+ c = PackageConfig.loads(s)
60
+ self._dct[pkg] = c
61
+ return c
62
+
63
+ if '.' not in pkg:
64
+ return default
65
+
66
+ return self.get(pkg.rpartition('.')[0], default)
67
+
68
+
69
+ PACKAGE_CONFIG_CACHE = PackageConfigCache()
@@ -5,6 +5,8 @@ import typing as ta
5
5
  from .... import lang
6
6
  from ...specs import ClassSpec
7
7
  from .. import concerns as _concerns # noqa # imported for registration
8
+ from ..configs import DEFAULT_PACKAGE_CONFIG
9
+ from ..configs import PACKAGE_CONFIG_CACHE
8
10
  from ..generation import processor as gp
9
11
  from .base import ProcessingContext
10
12
  from .base import ProcessingOption
@@ -49,6 +51,14 @@ def drive_cls_processing(
49
51
 
50
52
  #
51
53
 
54
+ pkg_config = DEFAULT_PACKAGE_CONFIG
55
+ cls_mod = cls.__module__
56
+ if '.' in cls_mod:
57
+ cls_pkg = cls_mod.rpartition('.')[0]
58
+ pkg_cfg = PACKAGE_CONFIG_CACHE.get(cls_pkg, pkg_config) # noqa
59
+
60
+ #
61
+
52
62
  ctx = ProcessingContext(
53
63
  cls,
54
64
  cs,
omlish/diag/timers.py CHANGED
@@ -1,3 +1,7 @@
1
+ """
2
+ TODO:
3
+ - quantiles via math.histogram
4
+ """
1
5
  import atexit
2
6
  import contextlib
3
7
  import functools
@@ -0,0 +1,3 @@
1
+ {
2
+ "codegen": true
3
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "codegen": true
3
+ }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: omlish
3
- Version: 0.0.0.dev396
3
+ Version: 0.0.0.dev397
4
4
  Summary: omlish
5
5
  Author: wrmsr
6
6
  License-Expression: BSD-3-Clause
@@ -1,5 +1,5 @@
1
1
  omlish/.manifests.json,sha256=aT8yZ-Zh-9wfHl5Ym5ouiWC1i0cy7Q7RlhzavB6VLPI,8587
2
- omlish/__about__.py,sha256=jJq0cRSEqqPSEtQOLGlVNDiSSFi0eTxgXIOtJFOHIdY,3543
2
+ omlish/__about__.py,sha256=Y09IIgXKv1XD2mBZnp9zvDIHGJ37iCSYjxlzxVDoq1M,3576
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
@@ -144,7 +144,7 @@ omlish/dataclasses/inspect.py,sha256=EpVb50CsEUWpn70gkjBa-hI1mr5_VubHTERsofgE-Lw
144
144
  omlish/dataclasses/reflection.py,sha256=6BD2FUiOEtpi_2JREWyVzemjbBJdBMUm8XxQ9SVIKGs,2799
145
145
  omlish/dataclasses/specs.py,sha256=JFpMILJhxiWYmfTD4TDl03O13o1i0Rwgf14WpI7U9go,6193
146
146
  omlish/dataclasses/impl/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
147
- omlish/dataclasses/impl/configs.py,sha256=ypaKmT7i_wBaS9EfChj1Ve5QySq443TBQLtaAZkDm_k,169
147
+ omlish/dataclasses/impl/configs.py,sha256=n1MOPGTulIVLMR2e4hbtU1FbHJTAVrOFXOCPU-fujVw,1442
148
148
  omlish/dataclasses/impl/utils.py,sha256=jAD6IIILo70aD_s60CaqRU2YvpZxBKy4K5EG-MTiqVo,1871
149
149
  omlish/dataclasses/impl/api/__init__.py,sha256=k5iS9QOwf_f4iOfGffYhnqDOcmEIwEUUTp00u11kIPM,455
150
150
  omlish/dataclasses/impl/api/classes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -190,7 +190,7 @@ omlish/dataclasses/impl/generation/registry.py,sha256=x8E1I5XjAQmTiMr9LsdcQeVc06
190
190
  omlish/dataclasses/impl/generation/utils.py,sha256=u6DWRvzxgqrxqyfAGzNOyDvnOJYdMTYyZ7l1oOOiXrI,2089
191
191
  omlish/dataclasses/impl/processing/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
192
192
  omlish/dataclasses/impl/processing/base.py,sha256=NA2uR2S039cm3yNd3F_PEw9aA2EQFdq0drtheZwdlGo,2000
193
- omlish/dataclasses/impl/processing/driving.py,sha256=08bwCvEGleguN__VHDwhW1P4dT8kQzFI7_IgWKANyLU,1580
193
+ omlish/dataclasses/impl/processing/driving.py,sha256=jCGdOVPM7hpLMZNino81acQ5AwX_e0g0b_CqTpZn8XA,1885
194
194
  omlish/dataclasses/impl/processing/priority.py,sha256=fNyGY2lYXIfTn9klHM86gHOOQpHjdKlCGxO0GfrggLs,265
195
195
  omlish/dataclasses/impl/processing/registry.py,sha256=qTCVUOTYjDKGTxMXYUjvck3SsYXg47HEcxtrKfLWtw8,1886
196
196
  omlish/dataclasses/metaclass/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -217,7 +217,7 @@ omlish/diag/ps.py,sha256=MEpMU6fbkh0bSWrOHh_okOa0JDTUSUQUVSYBdh1TGvE,1672
217
217
  omlish/diag/pycharm.py,sha256=9Mgn5T2ZdlEUL3VV-GzVmCBs_ZtIpLwaUzP6pgHEUEo,4712
218
218
  omlish/diag/pydevd.py,sha256=WPfDgsLe-zCOpnPMlAYEVliTQxk4jmcOKvI19nd-SAI,7589
219
219
  omlish/diag/threads.py,sha256=1-x02VCDZ407gfbtXm1pWK-ubqhqfePm9PMqkHCVoqk,3642
220
- omlish/diag/timers.py,sha256=44zoMx5tulfoWcHfx65ga7_zM8P9fVzBYMka8Elup6w,3785
220
+ omlish/diag/timers.py,sha256=cxX3GgjTIjBx9DI4pzCCO5Hfqb1TM3uo22yim7kjfRU,3831
221
221
  omlish/diag/_pycharm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
222
222
  omlish/diag/_pycharm/runhack.py,sha256=f4R9SOH0nDfO2WqPh0xQ9-45qOLrtTVysS-hSwtbdOA,37864
223
223
  omlish/diag/replserver/__init__.py,sha256=uLo6V2aQ29v9z3IMELlPDSlG3_2iOT4-_X8VniF-EgE,235
@@ -359,6 +359,7 @@ omlish/http/coro/server/fdio.py,sha256=qZE4g5y4XESsTObSKyVggI-yzig57gSGJb4Z0rcHv
359
359
  omlish/http/coro/server/server.py,sha256=5gvueSCUzqBqQRf0GJ6wGroD9DiWxQNi6N17MlEtBLU,18660
360
360
  omlish/http/coro/server/simple.py,sha256=j1RZ3niKrgGM2qFnjdYWn_eniZzay5j49Ca4L3u8vO4,3296
361
361
  omlish/http/coro/server/sockets.py,sha256=24gU6wpIZuzYWKQD8UsHyYfTZlbcUFvkqXq5KVgWpQo,2261
362
+ omlish/inject/.dataclasses.json,sha256=wXWUy_IR8AolAa2RQnqn_mo2QnmVcvUJmayIykdVl0I,22
362
363
  omlish/inject/__init__.py,sha256=Ou6_wAovmxOpbdhGKsV8GbYRH0_S_h0XQSBDPeYpP0g,1978
363
364
  omlish/inject/binder.py,sha256=woOK7I5fk4K4kDF684Ia003jE_lviGQXacNKAmXqx5M,5114
364
365
  omlish/inject/bindings.py,sha256=PlvOnUREjvc6F8nOJdzl1k9SAf80icRB4qWFqDop87M,536
@@ -515,6 +516,7 @@ omlish/manifests/globals.py,sha256=LZm4ueBjlC023uxL8zvivSyzMgx5O8kSbo9oNfhF_DE,2
515
516
  omlish/manifests/loading.py,sha256=S-yEGsnBEu670ya6Bc09QqbRtA5rBp5rA4D3zuJUl9M,8070
516
517
  omlish/manifests/static.py,sha256=7YwOVh_Ek9_aTrWsWNO8kWS10_j4K7yv3TpXZSHsvDY,501
517
518
  omlish/manifests/types.py,sha256=5hQuY-WZ9VMqHZXr-9Dayg380JsnX2vJzXyw6vC6UDs,317
519
+ omlish/marshal/.dataclasses.json,sha256=wXWUy_IR8AolAa2RQnqn_mo2QnmVcvUJmayIykdVl0I,22
518
520
  omlish/marshal/__init__.py,sha256=MtQkMih6iJO0S7tbzVWBUjDr9wQhiCm3poTyLslaPFo,3584
519
521
  omlish/marshal/base.py,sha256=3GMrhJBcnVrVtlQRQLOMgvV66MciAYpHKEQi5Ns3dIk,11853
520
522
  omlish/marshal/errors.py,sha256=g5XJyTHd__8lfwQ4KwgK-E5WR6MoNTMrqKP2U_QRQQQ,307
@@ -900,9 +902,9 @@ omlish/typedvalues/marshal.py,sha256=AtBz7Jq-BfW8vwM7HSxSpR85JAXmxK2T0xDblmm1HI0
900
902
  omlish/typedvalues/of_.py,sha256=UXkxSj504WI2UrFlqdZJbu2hyDwBhL7XVrc2qdR02GQ,1309
901
903
  omlish/typedvalues/reflect.py,sha256=PAvKW6T4cW7u--iX80w3HWwZUS3SmIZ2_lQjT65uAyk,1026
902
904
  omlish/typedvalues/values.py,sha256=ym46I-q2QJ_6l4UlERqv3yj87R-kp8nCKMRph0xQ3UA,1307
903
- omlish-0.0.0.dev396.dist-info/licenses/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
904
- omlish-0.0.0.dev396.dist-info/METADATA,sha256=nrRec2gmc4umIswSuNbUNFqCKwNZmafqZF6S_CsjCsI,18825
905
- omlish-0.0.0.dev396.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
906
- omlish-0.0.0.dev396.dist-info/entry_points.txt,sha256=Lt84WvRZJskWCAS7xnQGZIeVWksprtUHj0llrvVmod8,35
907
- omlish-0.0.0.dev396.dist-info/top_level.txt,sha256=pePsKdLu7DvtUiecdYXJ78iO80uDNmBlqe-8hOzOmfs,7
908
- omlish-0.0.0.dev396.dist-info/RECORD,,
905
+ omlish-0.0.0.dev397.dist-info/licenses/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
906
+ omlish-0.0.0.dev397.dist-info/METADATA,sha256=VlewvZ45-nTzAIIgiVsIOjONizThrASJoM3edySTO9k,18825
907
+ omlish-0.0.0.dev397.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
908
+ omlish-0.0.0.dev397.dist-info/entry_points.txt,sha256=Lt84WvRZJskWCAS7xnQGZIeVWksprtUHj0llrvVmod8,35
909
+ omlish-0.0.0.dev397.dist-info/top_level.txt,sha256=pePsKdLu7DvtUiecdYXJ78iO80uDNmBlqe-8hOzOmfs,7
910
+ omlish-0.0.0.dev397.dist-info/RECORD,,