omlish 0.0.0.dev284__py3-none-any.whl → 0.0.0.dev285__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.
Files changed (103) hide show
  1. omlish/__about__.py +2 -2
  2. omlish/dataclasses/__init__.py +58 -60
  3. omlish/dataclasses/api/__init__.py +25 -0
  4. omlish/dataclasses/api/classes/__init__.py +0 -0
  5. omlish/dataclasses/api/classes/conversion.py +30 -0
  6. omlish/dataclasses/api/classes/decorator.py +145 -0
  7. omlish/dataclasses/api/classes/make.py +109 -0
  8. omlish/dataclasses/api/classes/metadata.py +133 -0
  9. omlish/dataclasses/api/classes/params.py +78 -0
  10. omlish/dataclasses/api/fields/__init__.py +0 -0
  11. omlish/dataclasses/api/fields/building.py +120 -0
  12. omlish/dataclasses/api/fields/constructor.py +56 -0
  13. omlish/dataclasses/api/fields/conversion.py +191 -0
  14. omlish/dataclasses/api/fields/metadata.py +94 -0
  15. omlish/dataclasses/concerns/__init__.py +17 -0
  16. omlish/dataclasses/concerns/abc.py +15 -0
  17. omlish/dataclasses/concerns/copy.py +63 -0
  18. omlish/dataclasses/concerns/doc.py +53 -0
  19. omlish/dataclasses/concerns/eq.py +60 -0
  20. omlish/dataclasses/concerns/fields.py +119 -0
  21. omlish/dataclasses/concerns/frozen.py +133 -0
  22. omlish/dataclasses/concerns/hash.py +165 -0
  23. omlish/dataclasses/concerns/init.py +453 -0
  24. omlish/dataclasses/concerns/matchargs.py +27 -0
  25. omlish/dataclasses/concerns/mro.py +16 -0
  26. omlish/dataclasses/concerns/order.py +87 -0
  27. omlish/dataclasses/concerns/override.py +98 -0
  28. omlish/dataclasses/concerns/params.py +14 -0
  29. omlish/dataclasses/concerns/replace.py +48 -0
  30. omlish/dataclasses/concerns/repr.py +95 -0
  31. omlish/dataclasses/{impl → concerns}/slots.py +25 -1
  32. omlish/dataclasses/debug.py +2 -0
  33. omlish/dataclasses/errors.py +115 -0
  34. omlish/dataclasses/generation/__init__.py +0 -0
  35. omlish/dataclasses/generation/base.py +38 -0
  36. omlish/dataclasses/generation/compilation.py +258 -0
  37. omlish/dataclasses/generation/execution.py +195 -0
  38. omlish/dataclasses/generation/globals.py +83 -0
  39. omlish/dataclasses/generation/idents.py +6 -0
  40. omlish/dataclasses/generation/mangling.py +18 -0
  41. omlish/dataclasses/generation/manifests.py +20 -0
  42. omlish/dataclasses/generation/ops.py +97 -0
  43. omlish/dataclasses/generation/plans.py +35 -0
  44. omlish/dataclasses/generation/processor.py +174 -0
  45. omlish/dataclasses/generation/registry.py +42 -0
  46. omlish/dataclasses/generation/utils.py +83 -0
  47. omlish/dataclasses/{impl/reflect.py → inspect.py} +53 -90
  48. omlish/dataclasses/{impl/internals.py → internals.py} +26 -32
  49. omlish/dataclasses/metaclass/__init__.py +0 -0
  50. omlish/dataclasses/metaclass/bases.py +69 -0
  51. omlish/dataclasses/metaclass/confer.py +65 -0
  52. omlish/dataclasses/metaclass/meta.py +115 -0
  53. omlish/dataclasses/metaclass/specs.py +38 -0
  54. omlish/dataclasses/processing/__init__.py +0 -0
  55. omlish/dataclasses/processing/base.py +83 -0
  56. omlish/dataclasses/processing/driving.py +45 -0
  57. omlish/dataclasses/processing/priority.py +13 -0
  58. omlish/dataclasses/processing/registry.py +81 -0
  59. omlish/dataclasses/reflection.py +81 -0
  60. omlish/dataclasses/specs.py +224 -0
  61. omlish/dataclasses/tools/__init__.py +0 -0
  62. omlish/dataclasses/{impl → tools}/as_.py +23 -8
  63. omlish/dataclasses/tools/iter.py +27 -0
  64. omlish/dataclasses/tools/modifiers.py +52 -0
  65. omlish/dataclasses/tools/replace.py +17 -0
  66. omlish/dataclasses/tools/repr.py +12 -0
  67. omlish/dataclasses/{static.py → tools/static.py} +25 -4
  68. omlish/dataclasses/utils.py +54 -109
  69. omlish/diag/__init__.py +4 -4
  70. omlish/inject/impl/origins.py +1 -1
  71. omlish/lang/cached/function.py +4 -2
  72. omlish/marshal/objects/dataclasses.py +3 -7
  73. omlish/marshal/objects/helpers.py +3 -3
  74. omlish/secrets/marshal.py +1 -1
  75. omlish/secrets/secrets.py +1 -1
  76. omlish/sql/queries/base.py +1 -1
  77. omlish/typedvalues/marshal.py +2 -2
  78. {omlish-0.0.0.dev284.dist-info → omlish-0.0.0.dev285.dist-info}/METADATA +1 -1
  79. {omlish-0.0.0.dev284.dist-info → omlish-0.0.0.dev285.dist-info}/RECORD +83 -43
  80. omlish/dataclasses/impl/LICENSE +0 -279
  81. omlish/dataclasses/impl/__init__.py +0 -33
  82. omlish/dataclasses/impl/api.py +0 -278
  83. omlish/dataclasses/impl/copy.py +0 -30
  84. omlish/dataclasses/impl/errors.py +0 -53
  85. omlish/dataclasses/impl/fields.py +0 -245
  86. omlish/dataclasses/impl/frozen.py +0 -93
  87. omlish/dataclasses/impl/hashing.py +0 -86
  88. omlish/dataclasses/impl/init.py +0 -199
  89. omlish/dataclasses/impl/main.py +0 -93
  90. omlish/dataclasses/impl/metaclass.py +0 -235
  91. omlish/dataclasses/impl/metadata.py +0 -75
  92. omlish/dataclasses/impl/order.py +0 -57
  93. omlish/dataclasses/impl/overrides.py +0 -53
  94. omlish/dataclasses/impl/params.py +0 -128
  95. omlish/dataclasses/impl/processing.py +0 -24
  96. omlish/dataclasses/impl/replace.py +0 -40
  97. omlish/dataclasses/impl/repr.py +0 -66
  98. omlish/dataclasses/impl/simple.py +0 -50
  99. omlish/dataclasses/impl/utils.py +0 -167
  100. {omlish-0.0.0.dev284.dist-info → omlish-0.0.0.dev285.dist-info}/WHEEL +0 -0
  101. {omlish-0.0.0.dev284.dist-info → omlish-0.0.0.dev285.dist-info}/entry_points.txt +0 -0
  102. {omlish-0.0.0.dev284.dist-info → omlish-0.0.0.dev285.dist-info}/licenses/LICENSE +0 -0
  103. {omlish-0.0.0.dev284.dist-info → omlish-0.0.0.dev285.dist-info}/top_level.txt +0 -0
@@ -8,9 +8,9 @@ import copy
8
8
  import dataclasses as dc
9
9
  import typing as ta
10
10
 
11
- from .. import lang
12
- from ..lite.dataclasses import is_immediate_dataclass
13
- from .impl.api import dataclass
11
+ from ... import lang
12
+ from ...lite.dataclasses import is_immediate_dataclass
13
+ from ..api.classes.decorator import dataclass
14
14
 
15
15
 
16
16
  ##
@@ -122,6 +122,27 @@ class Static(lang.Abstract):
122
122
  # Use a default_factory to allow unsafe (mutable) values.
123
123
  new_fld.default_factory = (lambda v2: lambda: v2)(v) # noqa
124
124
 
125
+ # FIXME
126
+ from ..api.fields.metadata import _ExtraFieldParamsMetadata # noqa
127
+ from ..specs import FieldSpec
128
+ try:
129
+ x_fs = fld.metadata[FieldSpec]
130
+ except KeyError:
131
+ pass
132
+ else:
133
+ n_md = {
134
+ k: v
135
+ for k, v in fld.metadata.items()
136
+ if k not in (FieldSpec, _ExtraFieldParamsMetadata)
137
+ }
138
+ n_md[_ExtraFieldParamsMetadata] = {
139
+ fs_f.name: getattr(x_fs, fs_f.name)
140
+ for fs_f in dc.fields(FieldSpec) # noqa
141
+ if fs_f not in dc.Field.__slots__ # type: ignore[attr-defined]
142
+ and fs_f.name not in ('default', 'default_factory')
143
+ }
144
+ new_fld.metadata = n_md # type: ignore[assignment]
145
+
125
146
  setattr(cls, fld.name, new_fld)
126
147
  new_anns[fld.name] = fld.type
127
148
 
@@ -144,7 +165,7 @@ class Static(lang.Abstract):
144
165
  )
145
166
 
146
167
  # Explicitly forbid dc transforms that rebuild the class, such as slots.
147
- if (dc_cls := dataclass(cls, frozen=True)) is not cls:
168
+ if (dc_cls := dataclass(frozen=True)(cls)) is not cls:
148
169
  raise TypeError(dc_cls)
149
170
 
150
171
  dc_flds = dc.fields(cls) # type: ignore[arg-type] # noqa
@@ -1,153 +1,98 @@
1
+ import ast
1
2
  import collections
2
- import dataclasses as dc
3
+ import functools
3
4
  import types
4
5
  import typing as ta
5
6
 
6
7
  from .. import check
7
- from .impl.metadata import METADATA_ATTR
8
- from .impl.metadata import UserMetadata
9
- from .impl.params import DEFAULT_FIELD_EXTRAS
10
- from .impl.params import FieldExtras
11
- from .impl.params import get_field_extras
12
8
 
13
9
 
14
10
  T = ta.TypeVar('T')
15
11
 
16
-
17
- ##
18
-
19
-
20
- def opt_repr(o: ta.Any) -> str | None:
21
- return repr(o) if o is not None else None
22
-
23
-
24
- def truthy_repr(o: ta.Any) -> str | None:
25
- return repr(o) if o else None
12
+ K = ta.TypeVar('K')
13
+ V = ta.TypeVar('V')
26
14
 
27
15
 
28
16
  ##
29
17
 
30
18
 
31
- def fields_dict(cls_or_instance: ta.Any) -> dict[str, dc.Field]:
32
- return {f.name: f for f in dc.fields(cls_or_instance)}
19
+ def repr_round_trip_value(v: T) -> T:
20
+ r = repr(v)
21
+ v2 = ast.literal_eval(r)
22
+ if v != v2:
23
+ raise ValueError(v)
24
+ return v2
33
25
 
34
26
 
35
27
  ##
36
28
 
37
29
 
38
- class field_modifier: # noqa
39
- def __init__(self, fn: ta.Callable[[dc.Field], dc.Field]) -> None:
40
- super().__init__()
41
- self.fn = fn
30
+ def set_qualname(cls: type, value: T) -> T:
31
+ if isinstance(value, types.FunctionType):
32
+ value.__qualname__ = f'{cls.__qualname__}.{value.__name__}'
33
+ return value
42
34
 
43
- def __ror__(self, other: T) -> T:
44
- return self(other)
45
35
 
46
- def __call__(self, f: T) -> T:
47
- return check.isinstance(self.fn(check.isinstance(f, dc.Field)), dc.Field) # type: ignore
36
+ def set_new_attribute(cls: type, name: str, value: ta.Any) -> bool:
37
+ if name in cls.__dict__:
38
+ return True
39
+ set_qualname(cls, value)
40
+ setattr(cls, name, value)
41
+ return False
48
42
 
49
43
 
50
- def chain_metadata(*mds: ta.Mapping) -> types.MappingProxyType:
51
- return types.MappingProxyType(collections.ChainMap(*mds)) # type: ignore # noqa
44
+ ##
52
45
 
53
46
 
54
- def update_class_metadata(cls: type[T], *args: ta.Any) -> type[T]:
55
- check.isinstance(cls, type)
56
- setattr(cls, METADATA_ATTR, md := getattr(cls, METADATA_ATTR, {}))
57
- md.setdefault(UserMetadata, []).extend(args)
58
- return cls
47
+ class SealableRegistry(ta.Generic[K, V]):
48
+ def __init__(self) -> None:
49
+ super().__init__()
59
50
 
51
+ self._dct: dict[K, V] = {}
52
+ self._sealed = False
60
53
 
61
- def update_field_metadata(f: dc.Field, nmd: ta.Mapping) -> dc.Field:
62
- check.isinstance(f, dc.Field)
63
- f.metadata = chain_metadata(nmd, f.metadata)
64
- return f
54
+ def seal(self) -> None:
55
+ self._sealed = True
65
56
 
57
+ def __setitem__(self, k: K, v: V) -> None:
58
+ check.state(not self._sealed)
59
+ check.not_in(k, self._dct)
60
+ self._dct[k] = v
66
61
 
67
- def update_field_extras(f: dc.Field, *, unless_non_default: bool = False, **kwargs: ta.Any) -> dc.Field:
68
- fe = get_field_extras(f)
69
- return update_field_metadata(f, {
70
- FieldExtras: dc.replace(fe, **{
71
- k: v
72
- for k, v in kwargs.items()
73
- if not unless_non_default or v != getattr(DEFAULT_FIELD_EXTRAS, k)
74
- }),
75
- })
62
+ def __getitem__(self, k: K) -> V:
63
+ self.seal()
64
+ return self._dct[k]
76
65
 
66
+ def items(self) -> ta.Iterator[tuple[K, V]]:
67
+ self.seal()
68
+ return iter(self._dct.items())
77
69
 
78
- def update_fields(
79
- fn: ta.Callable[[str, dc.Field], dc.Field],
80
- fields: ta.Iterable[str] | None = None,
81
- ) -> ta.Callable[[type[T]], type[T]]:
82
- def inner(cls):
83
- if fields is None:
84
- for a, v in list(cls.__dict__.items()):
85
- if isinstance(v, dc.Field):
86
- setattr(cls, a, fn(a, v))
87
70
 
88
- else:
89
- for a in fields:
90
- try:
91
- v = cls.__dict__[a]
92
- except KeyError:
93
- v = dc.field()
94
- else:
95
- if not isinstance(v, dc.Field):
96
- v = dc.field(default=v)
97
- setattr(cls, a, fn(a, v))
71
+ ##
98
72
 
99
- return cls
100
73
 
101
- check.not_isinstance(fields, str)
74
+ def class_decorator(fn):
75
+ @functools.wraps(fn)
76
+ def inner(cls=None, *args, **kwargs):
77
+ if cls is None:
78
+ return lambda cls: fn(cls, *args, **kwargs) # noqa
79
+ return fn(cls, *args, **kwargs)
102
80
  return inner
103
81
 
104
82
 
105
- def update_fields_metadata(
106
- nmd: ta.Mapping,
107
- fields: ta.Iterable[str] | None = None,
108
- ) -> ta.Callable[[type[T]], type[T]]:
109
- def inner(a: str, f: dc.Field) -> dc.Field:
110
- return update_field_metadata(f, nmd)
111
-
112
- return update_fields(inner, fields)
113
-
114
-
115
83
  ##
116
84
 
117
85
 
118
- def shallow_astuple(o: ta.Any) -> tuple[ta.Any, ...]:
119
- return tuple(getattr(o, f.name) for f in dc.fields(o))
86
+ _EMPTY_MAPPING_PROXY: ta.Mapping = types.MappingProxyType({})
120
87
 
121
88
 
122
- def shallow_asdict(o: ta.Any) -> dict[str, ta.Any]:
123
- return {f.name: getattr(o, f.name) for f in dc.fields(o)}
124
-
125
-
126
- ##
127
-
128
-
129
- def deep_replace(o: T, *args: str | ta.Callable[[ta.Any], ta.Mapping[str, ta.Any]]) -> T:
130
- if not args:
131
- return o
132
- elif len(args) == 1:
133
- return dc.replace(o, **args[0](o)) # type: ignore
89
+ def chain_mapping_proxy(*ms: ta.Mapping) -> types.MappingProxyType:
90
+ m: ta.Any
91
+ if len(ms) > 1:
92
+ m = collections.ChainMap(*ms) # type: ignore[arg-type]
93
+ elif ms:
94
+ [m] = ms
134
95
  else:
135
- return dc.replace(o, **{args[0]: deep_replace(getattr(o, args[0]), *args[1:])}) # type: ignore
136
-
137
-
138
- ##
139
-
140
-
141
- def iter_items(obj: ta.Any) -> ta.Iterator[tuple[str, ta.Any]]:
142
- for f in dc.fields(obj):
143
- yield (f.name, getattr(obj, f.name))
144
-
145
-
146
- def iter_keys(obj: ta.Any) -> ta.Iterator[str]:
147
- for f in dc.fields(obj):
148
- yield f.name
149
-
96
+ m = _EMPTY_MAPPING_PROXY
150
97
 
151
- def iter_values(obj: ta.Any) -> ta.Iterator[ta.Any]:
152
- for f in dc.fields(obj):
153
- yield getattr(obj, f.name)
98
+ return types.MappingProxyType(m)
omlish/diag/__init__.py CHANGED
@@ -17,10 +17,10 @@ Debuggers
17
17
 
18
18
  CPU Profilers
19
19
  - cProfile - https://docs.python.org/3/library/profile.html
20
- - pyinstrument - https://github.com/joerick/pyinstrument
21
- - py-pspy - https://github.com/benfred/py-spy
22
- - austin-dist - https://github.com/P403n1x87/austin
23
- - yappi - https://github.com/sumerc/yappi
20
+ - yappi - https://github.com/sumerc/yappi - tracing
21
+ - pyinstrument - https://github.com/joerick/pyinstrument - pretty
22
+ - py-spy - https://github.com/benfred/py-spy - busted on mac
23
+ - austin-dist - https://github.com/P403n1x87/austin - old
24
24
 
25
25
  Memory Profilers
26
26
  - tracemalloc - https://docs.python.org/3/library/tracemalloc.html
@@ -26,7 +26,7 @@ ORIGIN_IGNORED_PACKAGES = frozenset([
26
26
  lang.functions.__name__,
27
27
 
28
28
  dc.__name__,
29
- dc.impl.__name__, # noqa
29
+ *[m for m in sys.modules if m.startswith(dc.__name__ + '.')],
30
30
  ])
31
31
 
32
32
 
@@ -151,11 +151,12 @@ def _make_cache_key_maker(
151
151
 
152
152
 
153
153
  class _CachedFunction(ta.Generic[T], Abstract):
154
- @dc.dataclass(frozen=True)
154
+ @dc.dataclass(frozen=True, kw_only=True)
155
155
  class Opts:
156
156
  map_maker: ta.Callable[[], ta.MutableMapping] = dict
157
157
  lock: DefaultLockable = None
158
158
  transient: bool = False
159
+ no_wrapper_update: bool = False
159
160
 
160
161
  def __init__(
161
162
  self,
@@ -175,7 +176,8 @@ class _CachedFunction(ta.Generic[T], Abstract):
175
176
  self._lock = default_lock(opts.lock, False)() if opts.lock is not None else None
176
177
  self._values = values if values is not None else opts.map_maker()
177
178
  self._value_fn = value_fn if value_fn is not None else fn
178
- functools.update_wrapper(self, fn)
179
+ if not self._opts.no_wrapper_update:
180
+ functools.update_wrapper(self, fn)
179
181
 
180
182
  @property
181
183
  def _fn(self):
@@ -34,11 +34,7 @@ from .unmarshal import ObjectUnmarshaler
34
34
 
35
35
 
36
36
  def get_dataclass_metadata(ty: type) -> ObjectMetadata:
37
- return check.opt_single(
38
- e
39
- for e in dc.get_merged_metadata(ty).get(dc.UserMetadata, [])
40
- if isinstance(e, ObjectMetadata)
41
- ) or ObjectMetadata()
37
+ return check.single(dc.reflect(ty).spec.metadata_by_type.get(ObjectMetadata) or [ObjectMetadata()])
42
38
 
43
39
 
44
40
  def get_dataclass_field_infos(
@@ -76,10 +72,10 @@ def get_dataclass_field_infos(
76
72
 
77
73
  f_ty: ta.Any
78
74
  if (
79
- ((cpx := dc_rfl.cls_params_extras) is not None and cpx.generic_init) or
75
+ dc_rfl.spec.generic_init or
80
76
  (fmd is not None and fmd.options.generic_replace)
81
77
  ):
82
- f_ty = rfl.to_annotation(dc_rfl.generic_replaced_field_type(field.name))
78
+ f_ty = rfl.to_annotation(dc_rfl.fields_inspection.generic_replaced_field_type(field.name))
83
79
  else:
84
80
  f_ty = type_hints[field.name]
85
81
 
@@ -14,7 +14,7 @@ T = ta.TypeVar('T')
14
14
  def update_field_metadata(**kwargs: ta.Any) -> dc.field_modifier:
15
15
  @dc.field_modifier
16
16
  def inner(f: dc.Field) -> dc.Field:
17
- return dc.update_field_metadata(f, {
17
+ return dc.set_field_metadata(f, {
18
18
  FieldMetadata: f.metadata.get(FieldMetadata, FieldMetadata()).update(**kwargs),
19
19
  })
20
20
  return inner
@@ -25,7 +25,7 @@ def update_fields_metadata(
25
25
  **kwargs: ta.Any,
26
26
  ) -> ta.Callable[[type[T]], type[T]]:
27
27
  def inner(a: str, f: dc.Field) -> dc.Field:
28
- return dc.update_field_metadata(f, {
28
+ return dc.set_field_metadata(f, {
29
29
  FieldMetadata: f.metadata.get(FieldMetadata, FieldMetadata()).update(**kwargs),
30
30
  })
31
31
 
@@ -37,7 +37,7 @@ def update_object_metadata(
37
37
  **kwargs: ta.Any,
38
38
  ):
39
39
  def inner(cls):
40
- return dc.update_class_metadata(cls, ObjectMetadata(**kwargs))
40
+ return dc.append_class_metadata(cls, ObjectMetadata(**kwargs))
41
41
 
42
42
  if cls is not None:
43
43
  inner(cls)
omlish/secrets/marshal.py CHANGED
@@ -44,7 +44,7 @@ class StrOrSecretRefMarshalerUnmarshaler(msh.Marshaler, msh.Unmarshaler):
44
44
  def marshal_secret_field(f: dc.Field) -> dc.Field:
45
45
  """Mostly obsolete with auto-registration below."""
46
46
 
47
- return dc.update_field_metadata(f, {
47
+ return dc.set_field_metadata(f, {
48
48
  msh.FieldMetadata: dc.replace(
49
49
  f.metadata.get(msh.FieldMetadata, msh.FieldMetadata()),
50
50
  marshaler=StrOrSecretRefMarshalerUnmarshaler(),
omlish/secrets/secrets.py CHANGED
@@ -79,7 +79,7 @@ def secret_repr(o: SecretRefOrStr | None) -> str | None:
79
79
 
80
80
  @dc.field_modifier
81
81
  def secret_field(f: dc.Field) -> dc.Field:
82
- return dc.update_field_extras(
82
+ return dc.update_extra_field_params(
83
83
  f,
84
84
  repr_fn=secret_repr,
85
85
  unless_non_default=True,
@@ -29,7 +29,7 @@ class Node(
29
29
  lang.Abstract,
30
30
  eq=False,
31
31
  confer=frozenset([
32
- *dc.get_metaclass_params(dc.Frozen).confer,
32
+ *dc.get_metaclass_spec(dc.Frozen).confer,
33
33
  'eq',
34
34
  ]),
35
35
  ):
@@ -32,7 +32,7 @@ class TypedValueMarshalerFactory(msh.MarshalerFactoryMatchClass):
32
32
  ))
33
33
  def _build_scalar(self, ctx: msh.MarshalContext, rty: rfl.Type) -> msh.Marshaler:
34
34
  dc_rfl = dc.reflect(check.isinstance(rty, type))
35
- v_rty = check.single(dc_rfl.generic_replaced_field_annotations.values())
35
+ v_rty = check.single(dc_rfl.fields_inspection.generic_replaced_field_annotations.values())
36
36
  v_m = ctx.make(v_rty)
37
37
  return msh.WrappedMarshaler(lambda _, o: o.v, v_m)
38
38
 
@@ -58,7 +58,7 @@ class TypedValueUnmarshalerFactory(msh.UnmarshalerFactoryMatchClass):
58
58
  def _build_scalar(self, ctx: msh.UnmarshalContext, rty: rfl.Type) -> msh.Unmarshaler:
59
59
  rty = check.isinstance(rty, type)
60
60
  dc_rfl = dc.reflect(rty)
61
- v_rty = check.single(dc_rfl.generic_replaced_field_annotations.values())
61
+ v_rty = check.single(dc_rfl.fields_inspection.generic_replaced_field_annotations.values())
62
62
  v_u = ctx.make(v_rty)
63
63
  return msh.WrappedUnmarshaler(lambda _, v: rty(v), v_u)
64
64
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: omlish
3
- Version: 0.0.0.dev284
3
+ Version: 0.0.0.dev285
4
4
  Summary: omlish
5
5
  Author: wrmsr
6
6
  License: BSD-3-Clause
@@ -1,5 +1,5 @@
1
1
  omlish/.manifests.json,sha256=pjGUyLHaoWpPqRP3jz2u1fC1qoRc2lvrEcpU_Ax2tdg,8253
2
- omlish/__about__.py,sha256=dKiKmm0e4VLsAkPFstjb0fKd9_2ulpG5GqwUNof8Oas,3380
2
+ omlish/__about__.py,sha256=HdBvgJvGybfoC0HT12EdWHXOYyK8r8Y4UmpMPI4FqC0,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
@@ -202,34 +202,74 @@ omlish/daemons/services.py,sha256=YYp2SMkJ71WgzOcYSXjWHeAyKKxu3j1dfuJvWkl0Dgw,34
202
202
  omlish/daemons/spawning.py,sha256=psR73zOYjMKTqNpx1bMib8uU9wAZz62tw5TaWHrTdyY,5337
203
203
  omlish/daemons/targets.py,sha256=00KmtlknMhQ5PyyVAhWl3rpeTMPym0GxvHHq6mYPZ7c,3051
204
204
  omlish/daemons/waiting.py,sha256=RfgD1L33QQVbD2431dkKZGE4w6DUcGvYeRXXi8puAP4,1676
205
- omlish/dataclasses/__init__.py,sha256=ESQFwRKhBVu9b8372Kc9IQL_VxbvYD70YpuvRMiVtvI,1731
206
- omlish/dataclasses/static.py,sha256=6pZG2iTR9NN8pKm-5ukDABnaVlTKFOzMwkg-rbxURoo,7691
207
- omlish/dataclasses/utils.py,sha256=BTXYyH0enSEP5kWxMnPTJ8_UPd7h4wF2RVPITNC8H4M,3872
208
- omlish/dataclasses/impl/LICENSE,sha256=Oy-B_iHRgcSZxZolbI4ZaEVdZonSaaqFNzv7avQdo78,13936
209
- omlish/dataclasses/impl/__init__.py,sha256=zqGBC5gSbjJxaqG_zS1LL1PX-zAfhIua8UqOE4IwO2k,789
210
- omlish/dataclasses/impl/api.py,sha256=eIWSmgsjEnstK6jkyygpJwEY7x6VU8_pJ_XltpalqD0,7013
211
- omlish/dataclasses/impl/as_.py,sha256=CD-t7hkC1EP2F_jvZKIA_cVoDuwZ-Ln_xC4fJumPYX0,2598
212
- omlish/dataclasses/impl/copy.py,sha256=Tn8_n6Vohs-w4otbGdubBEvhd3TsSTaM3EfNGdS2LYo,591
213
- omlish/dataclasses/impl/errors.py,sha256=vL1VKqbjQXGPfvYUz7gQfhnWJKe7JJqUN4QK96pitPA,1280
214
- omlish/dataclasses/impl/fields.py,sha256=TLhHUvEX9P8cxwkLlB6jbIpRlQYaqCnVUaaP8VSUNJk,6893
215
- omlish/dataclasses/impl/frozen.py,sha256=x87DSM8FIMZ3c_BIUE8NooCkExFjPsabeqIueEP5qKs,2988
216
- omlish/dataclasses/impl/hashing.py,sha256=0Gr6XIRkKy4pr-mdHblIlQCy3mBxycjMqJk3oZDw43s,3215
217
- omlish/dataclasses/impl/init.py,sha256=7pC392bJD-yzlerO1DlvTUtOPsVvGmlPWIv_zTylTto,6405
218
- omlish/dataclasses/impl/internals.py,sha256=UvZYjrLT1S8ntyxJ_vRPIkPOF00K8HatGAygErgoXTU,2990
219
- omlish/dataclasses/impl/main.py,sha256=bWnqEDOfITjEwkLokTvOegp88KaQXJFun3krgxt3aE0,2647
220
- omlish/dataclasses/impl/metaclass.py,sha256=rhcMHNJYISgMkC95Yq14aLEs48iK9Rzma5yb7-4mPIk,4965
221
- omlish/dataclasses/impl/metadata.py,sha256=4veWwTr-aA0KP-Y1cPEeOcXHup9EKJTYNJ0ozIxtzD4,1401
222
- omlish/dataclasses/impl/order.py,sha256=dPmSNDBQAAVu_UPMZODjlT5mSBJIbPCCJ8bwbxrmkJ8,1587
223
- omlish/dataclasses/impl/overrides.py,sha256=g9aCzaDDKyek8-yXRvtAcu1B1nCphWDYr4InHDlgbKk,1732
224
- omlish/dataclasses/impl/params.py,sha256=HMhvtsPup6WQOPLEVXTHgVvDWHk-kX-E2GAZxWXa6R0,3009
225
- omlish/dataclasses/impl/processing.py,sha256=DFxyFjL_h3awRyF_5eyTnB8QkuApx7Zc4QFnVoltlao,459
226
- omlish/dataclasses/impl/reflect.py,sha256=ndX22d9bd9m_GAajPFQdnrw98AGw75lH9_tb-kdHwAs,5597
227
- omlish/dataclasses/impl/replace.py,sha256=wS9GHX4fIwaPv1JBJzIewdBfXyK3X3V7_t55Da87dYo,1217
228
- omlish/dataclasses/impl/repr.py,sha256=hk6HwKTLA0tb698CfiO8RYAqtpHQbGCpymm_Eo-B-2Y,1876
229
- omlish/dataclasses/impl/simple.py,sha256=Q272TYXifB5iKtydByxyzraeQHX6aXDY0VKO1-AKBF4,1771
230
- omlish/dataclasses/impl/slots.py,sha256=uiUB391b2WG9Xak8ckXeGawhpc38dZEhEp60uQgiY-w,5275
231
- omlish/dataclasses/impl/utils.py,sha256=aER2iL3UAtgS1BdLuEvTr9Tr2wC28wk1kiOeO-jIymw,6138
232
- omlish/diag/__init__.py,sha256=4S8v0myJM4Zld6_FV6cPe_nSv0aJb6kXftEit0HkiGE,1141
205
+ omlish/dataclasses/__init__.py,sha256=xo5rJYrQ2JE5jcX4fHv5e9bC6RIXFd-K8yurUP20oO8,1834
206
+ omlish/dataclasses/debug.py,sha256=giBiv6aXvX0IagwNCW64qBzNjfOFr3-VmgDy_KYlb-k,29
207
+ omlish/dataclasses/errors.py,sha256=tyv3WR6az66uGGiq9FIuCHvy1Ef-G7zeMY7mMG6hy2Y,2527
208
+ omlish/dataclasses/inspect.py,sha256=BlpPghVCU3w_YDnONEqqE99YHzJM2q3eoqe39YX25Ko,4596
209
+ omlish/dataclasses/internals.py,sha256=qFSDQzBtukvYO5QMoZx83nwyNA53S-8jJyB9l1e1oZ0,2975
210
+ omlish/dataclasses/reflection.py,sha256=5N4acL27xwSnQJvoks6ts2JseGfwL_P9D2gM9vqtAFM,2243
211
+ omlish/dataclasses/specs.py,sha256=h9qD2xAijKAS95Iw3GUPx3mj1peoUOlgh7aXtqVfmDU,6073
212
+ omlish/dataclasses/utils.py,sha256=_1B6tEkkcxHVoLBEo34ebR_0E-iZW7W0zFTo27EdSqY,1854
213
+ omlish/dataclasses/api/__init__.py,sha256=GFodt19CKrfuBpdv1EUqVUCPAFIlHPnabE2G8QJElBY,426
214
+ omlish/dataclasses/api/classes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
215
+ omlish/dataclasses/api/classes/conversion.py,sha256=x1Ayo5W3t8lVh10KGH_ZBJ_kK7HqcdI2LdJA6mR_WXQ,810
216
+ omlish/dataclasses/api/classes/decorator.py,sha256=4IiMWsCeXD7lubTZC_becVsi8zsIIH8fN2PbP-fFZE0,2990
217
+ omlish/dataclasses/api/classes/make.py,sha256=O3iWvCMHW4XJXmHHDvNsh5rhkPh9VQ-iCPMUGPWETAM,2629
218
+ omlish/dataclasses/api/classes/metadata.py,sha256=2YafXunxqbqnHIdp5gsiGLyH7cWg9FR5wCwcxlLFd20,2685
219
+ omlish/dataclasses/api/classes/params.py,sha256=qmHuGC4vB8o-7cnRXllVz_WNprx2fsyrNzPY2mYC5FM,1680
220
+ omlish/dataclasses/api/fields/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
221
+ omlish/dataclasses/api/fields/building.py,sha256=YVAJZ2c318vK0YWz9VU8_MdjA5qNjqsI3N85K-bD0TI,3314
222
+ omlish/dataclasses/api/fields/constructor.py,sha256=dRnVR5srD-8nNaMxdkWh0oFPINwOu-D7n4QItI6AWPs,1310
223
+ omlish/dataclasses/api/fields/conversion.py,sha256=Pye4KOON78CBgDzwTqNb5fx8wE7uvlKcwVfQ2nhDzrM,5134
224
+ omlish/dataclasses/api/fields/metadata.py,sha256=4hGRvG96qPNeipbnHlnbDNWqCANGCuE9BmjKUzTEzRQ,1689
225
+ omlish/dataclasses/concerns/__init__.py,sha256=4Goga5wAOAbK6KcoHWC8jDC8M9ywgH7PfmXXxgCYCC8,208
226
+ omlish/dataclasses/concerns/abc.py,sha256=ok2qE9ltgZXdf34YtLElTr7A-IYErJvVfP1-G2t2Sbc,391
227
+ omlish/dataclasses/concerns/copy.py,sha256=U8kSHEvVupvXArS3OPB7GK_M7aPO9R3_Uk1nqHqxmJ8,1761
228
+ omlish/dataclasses/concerns/doc.py,sha256=SL0hj4EzXrVOhaDzHVDGnzylkOU7mcXtr9Tm3wuZnQQ,1344
229
+ omlish/dataclasses/concerns/eq.py,sha256=PI0KKzJyIziRLgcjl8efjapf8baaRCdcuyGW83bCpEo,1720
230
+ omlish/dataclasses/concerns/fields.py,sha256=-VnI7al9sKRs0xTCy-IUhl3EgCKBX5vczDUZNu72_KY,3311
231
+ omlish/dataclasses/concerns/frozen.py,sha256=IWfar9VIkMezE8Bh9duB5vVXy1qyABa1YEOwHVJOCqE,3872
232
+ omlish/dataclasses/concerns/hash.py,sha256=ouX8zyae_IUAMEd-0dvUAPO9bbp5AM1evumyUSr5inY,4815
233
+ omlish/dataclasses/concerns/init.py,sha256=_Yv4g7paBtkxnm3CgglBSAOQnoRAULv9HwvZg_od3WM,14542
234
+ omlish/dataclasses/concerns/matchargs.py,sha256=maHlfPCcHvAOGuXoLGu66ZizHdizU-UIrFCYbNMPR5g,748
235
+ omlish/dataclasses/concerns/mro.py,sha256=8bonGwAkNUazM_Wea6saW02S3gvGy5eGWKouOb9hvUw,407
236
+ omlish/dataclasses/concerns/order.py,sha256=f1JVDkeTWllO9Tu79xKkjHul-_rpsYZXHMTnca8Di30,2469
237
+ omlish/dataclasses/concerns/override.py,sha256=eegJ4KRs-p3Oj5ipY1eySwXJ3vFyVXG5gWRQZcsmvUQ,2810
238
+ omlish/dataclasses/concerns/params.py,sha256=ZrNGBUp87YkrOMW7bYn0GdYk9PuDHzxdwKn477lqUyE,404
239
+ omlish/dataclasses/concerns/replace.py,sha256=Q11NjVMMHVh9MjJ6osaXNFG5HuGWQM6qDgWK7IN0IIc,1501
240
+ omlish/dataclasses/concerns/repr.py,sha256=Ft8V0aqxNHz29fOAQsRoFTlLybbgGeT2QbSxXJa7Gyc,2855
241
+ omlish/dataclasses/concerns/slots.py,sha256=xg6346UT_oUlb0kYaWFbeJUKzZcpQx4nJkT86CXfI5c,5922
242
+ omlish/dataclasses/generation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
243
+ omlish/dataclasses/generation/base.py,sha256=adi68lJogtjx1SoxGJ5hqC-f-CMX2gWi8iALmucIwKo,686
244
+ omlish/dataclasses/generation/compilation.py,sha256=IRvt8AJlLdyq3boTs0e1V0U8Dkf85V1wmKNPl82ZnCQ,6995
245
+ omlish/dataclasses/generation/execution.py,sha256=ygCGB_88cluih-Q3H1toxOgabyTzHyO4WNUZNkrDtBc,4818
246
+ omlish/dataclasses/generation/globals.py,sha256=vN41vhYJ6P8fmxajSjHs3ic3yuE-ZctwQHmixRV6RNg,2674
247
+ omlish/dataclasses/generation/idents.py,sha256=GHvfuZMmmibJNxAM-8pZPTSy1kCC4oLx8Lb-jgriZsc,182
248
+ omlish/dataclasses/generation/mangling.py,sha256=AUtTMjAAuQ_kUfE-CypnpRsiM10EAkMkUMyouud2qs0,302
249
+ omlish/dataclasses/generation/manifests.py,sha256=tRLO59eysC13z_lbPxaErPy-xM3BIBRpj8MhmbYoGnE,309
250
+ omlish/dataclasses/generation/ops.py,sha256=dWse_SsoXtpDqXzDPJOqBeb9G5F7RrEChfGl4iTL0QE,1718
251
+ omlish/dataclasses/generation/plans.py,sha256=c3TRwa20quN-DrM-eI2KoTG4XVyL3n12RcwZoJxEgB0,536
252
+ omlish/dataclasses/generation/processor.py,sha256=Va-8RV19jIzqreXCUeP4nFMPglAfIxeIaGOzgYTU_IY,4496
253
+ omlish/dataclasses/generation/registry.py,sha256=_Cfvs9QY6f8Pvf9cKUi-OTI-qaDem3z5jcWkSDNk3kQ,1006
254
+ omlish/dataclasses/generation/utils.py,sha256=u6DWRvzxgqrxqyfAGzNOyDvnOJYdMTYyZ7l1oOOiXrI,2089
255
+ omlish/dataclasses/metaclass/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
256
+ omlish/dataclasses/metaclass/bases.py,sha256=OSvFRx1PZ1HoBzT0YpsXy-AwAdWnNrcQ5p-teTIr7nY,1196
257
+ omlish/dataclasses/metaclass/confer.py,sha256=yj31r3Vi1bdEvBRBjQML5IBzqEtDpzH3xC3LGkUAkKI,1327
258
+ omlish/dataclasses/metaclass/meta.py,sha256=0MQG7Sl1y8QccGRgLOC0VoLDTMBG6VoyT-wZdthO1zI,2639
259
+ omlish/dataclasses/metaclass/specs.py,sha256=djzkHK95h06Cgrx8rr3SGkv2gOvL-fPOhWOBWbbN8h4,789
260
+ omlish/dataclasses/processing/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
261
+ omlish/dataclasses/processing/base.py,sha256=wkPDfeojZ2mg72yifMW7VNpJBEgEbaC3Qr_bd8_aV5E,1827
262
+ omlish/dataclasses/processing/driving.py,sha256=k3SrbY1fAvRegYs_OorOeh3f5j6O7NEmL7yL7RnwVic,1033
263
+ omlish/dataclasses/processing/priority.py,sha256=57jdwUZ29Z9ZtKWIzyar4raNLHNrWd0c29ZLv2hcfjo,260
264
+ omlish/dataclasses/processing/registry.py,sha256=iNDHwW1gsq8gTMi4XvNBBzab0OYdSKvDLQw9gCBt2FI,1884
265
+ omlish/dataclasses/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
266
+ omlish/dataclasses/tools/as_.py,sha256=3mTFXf563Z4ZZnbCzJHv83WizOYBs2mpigJCamxTlpQ,2893
267
+ omlish/dataclasses/tools/iter.py,sha256=JQUFG4Gn-xthhJ3OEqXLOWkq2KhRMuIqvEow0HcFPZg,540
268
+ omlish/dataclasses/tools/modifiers.py,sha256=xo6D4yl58HhJrFwV1JeoNrLrgC4MUA6SAXCGoyV-gnM,1212
269
+ omlish/dataclasses/tools/replace.py,sha256=izM9lPT6AhEtjqn22auqaofa0j69KO7iootF-2Uj4cY,396
270
+ omlish/dataclasses/tools/repr.py,sha256=KFvF6uv2YYIKq8O3ZNbEAS1tqRQALsJ-SUlBNPd5_GI,190
271
+ omlish/dataclasses/tools/static.py,sha256=4TOwUmSthWUin0UMtZYw0O8APJYRAD39O3TW7WZShic,8665
272
+ omlish/diag/__init__.py,sha256=c1q8vuapGH1YiYdU300FIJXMI1MOcnLNBZXr-zc8BXk,1181
233
273
  omlish/diag/asts.py,sha256=MWh9XAG3m9L10FIJCyoNT2aU4Eft6tun_x9K0riq6Dk,3332
234
274
  omlish/diag/debug.py,sha256=ClED7kKXeVMyKrjGIxcq14kXk9kvUJfytBQwK9y7c4Q,1637
235
275
  omlish/diag/lslocks.py,sha256=fWI3SZwgEkhipVfSqvzVzREJRShcDYmlYByHBT0LToc,1744
@@ -380,7 +420,7 @@ omlish/inject/impl/elements.py,sha256=PM_055moROskSTQqmohEa6I0tt1OQ-VRNArXCMG6vy
380
420
  omlish/inject/impl/injector.py,sha256=LJGmK1g6fiLSE1AFc6lTzgmvA-IQ11dlsKkGcMR7uKQ,7557
381
421
  omlish/inject/impl/inspect.py,sha256=reXkNsjyvJXva5379tHTWklVK0vzqGLP0BgI_4VVPgQ,3116
382
422
  omlish/inject/impl/multis.py,sha256=j2QHSpJp0jPv10yZEZJwi0w62kXFQ25gkHa026xv4-Q,2053
383
- omlish/inject/impl/origins.py,sha256=-cdcwz3BWb5LuC9Yn5ynYOwyPsKH06-kCc-3U0PxZ5w,1640
423
+ omlish/inject/impl/origins.py,sha256=dgGdkoMN6I4DZrWjlpZYijeFsrF6Up1WPq_QSAgTtuQ,1676
384
424
  omlish/inject/impl/privates.py,sha256=alpCYyk5VJ9lJknbRH2nLVNFYVvFhkj-VC1Vco3zCFQ,2613
385
425
  omlish/inject/impl/providers.py,sha256=QnwhsujJFIHC0JTgd2Wlo1kP53i3CWTrj1nKU2DNxwg,2375
386
426
  omlish/inject/impl/proxy.py,sha256=gyCME_W48Zrl7QJMKiIPwGpSctf5fhvh4ZldgtA9MEE,1641
@@ -442,7 +482,7 @@ omlish/lang/strings.py,sha256=egdv8PxLNG40-5V93agP5j2rBUDIsahCx048zV7uEbU,4690
442
482
  omlish/lang/sys.py,sha256=b4qOPiJZQru_mbb04FNfOjYWUxlV2becZOoc-yya_rQ,411
443
483
  omlish/lang/typing.py,sha256=Zdad9Zv0sa-hIaUXPrzPidT7sDVpRcussAI7D-j-I1c,3296
444
484
  omlish/lang/cached/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
445
- omlish/lang/cached/function.py,sha256=s0GImf5JUfjQd1FERSsuM2-AQqdY2a05tozEcNIUk7w,9457
485
+ omlish/lang/cached/function.py,sha256=Nqr7XDVQdD21TawF-O9YG4jU4RwlBri-E1SusrDrmzo,9560
446
486
  omlish/lang/cached/property.py,sha256=WHYyg4-6EA86TcNMfbXTjVhjEZPc0kngt9hfY3WN5w8,2768
447
487
  omlish/lang/classes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
448
488
  omlish/lang/classes/abstract.py,sha256=n4rDlDraUKxPF0GtOWEFZ6mEzEDmP7Z8LSI6Jww_thw,3715
@@ -519,8 +559,8 @@ omlish/marshal/composite/newtypes.py,sha256=5-te247TiPYf84oFhf59tqIOOByXj8i9KaHT
519
559
  omlish/marshal/composite/optionals.py,sha256=MnecrmrJYjQvYJipIHNCDq78oH09dOjnw5pvaMKqoeU,1537
520
560
  omlish/marshal/composite/wrapped.py,sha256=jOsn3h1vLIqcoSTB-0KObnsdbV8jSVWJYbf7Kg9AUwg,750
521
561
  omlish/marshal/objects/__init__.py,sha256=F4wej8L_tedC8ETYxAnmKfdPR9TjsqIus9Z3nZofYuc,182
522
- omlish/marshal/objects/dataclasses.py,sha256=egC4dSInycPZuvPGW9-f4AyC1nw2gaN_tS8LvoRVAuM,9050
523
- omlish/marshal/objects/helpers.py,sha256=85GZp4h3Yo0GYGmnZpKgNxkWnSk8h2R21nfDLU2DtM0,1110
562
+ omlish/marshal/objects/dataclasses.py,sha256=klXXY1zOKh_FYlw6L5ZNPjpXSk0ntUGxSOrm309WoiY,8953
563
+ omlish/marshal/objects/helpers.py,sha256=H3K0J4fsJTaBVi7m6Be066YmlsRmOet48sop3LBr1wU,1104
524
564
  omlish/marshal/objects/marshal.py,sha256=JarKGecMgaFYSUHUj-ZUYVP9HK6u2rjpBb3DWX9Uhh0,2648
525
565
  omlish/marshal/objects/metadata.py,sha256=2_rESnslP5fwtEW1xy9ECJg64uA4cQBuYcGkRfPElts,3342
526
566
  omlish/marshal/objects/namedtuples.py,sha256=8de8L7rwmvr_LLBHHfOl2wHObxc_1yZ8fC_J25yZi7Q,2866
@@ -580,11 +620,11 @@ omlish/reflect/types.py,sha256=Cn9FYGoiCNt0FS0YLiTTAR12WKcesWMapCrVYcb8IDo,9225
580
620
  omlish/secrets/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
581
621
  omlish/secrets/all.py,sha256=SGB1KrlNrxlNpazEHYy95NTzteLi8ndoEgMhU7luBl8,420
582
622
  omlish/secrets/crypto.py,sha256=9D21lnvPhStwu8arD4ssT0ih0bDG-nlqIRdVgYL40xA,3708
583
- omlish/secrets/marshal.py,sha256=Jat6jTr0Fv3YBwqmq_DO2xahwn9qIeILrIybJ0vk34U,1989
623
+ omlish/secrets/marshal.py,sha256=u90n1OfRfdpH1T2F0xK_pAPH1ENYL6acFt6XdVd3KvI,1986
584
624
  omlish/secrets/openssl.py,sha256=UT_dXJ4zA1s9e-UHoW_NLGHQO7iouUNPnJNkkpuw3JI,6213
585
625
  omlish/secrets/pwgen.py,sha256=5k7QMSysUfv9F65TDMdDlrhTIKy6QbMG3KT2HNVmnVg,1712
586
626
  omlish/secrets/pwhash.py,sha256=Jctv3QzcMvVPXJsWA3w3LDUlzmyUDGEWG9sLiJz1xaw,4107
587
- omlish/secrets/secrets.py,sha256=QNgOmRcIRK2fx49bIbBBM2rYbe6IhhLgk8fKvq8guoI,7963
627
+ omlish/secrets/secrets.py,sha256=mRajnNFbrHPLSz21OEinE_k-FjirXARIxFLOq2JbPAo,7969
588
628
  omlish/secrets/ssl.py,sha256=_72xTNP6a1Xw0Pweuow9WK5yveqJ7hmjhala9iMnrAk,152
589
629
  omlish/secrets/subprocesses.py,sha256=ZdShw4jrGDdyQW8mRMgl106-9qpCEq2J6w_x7ruz1wk,1217
590
630
  omlish/secrets/tempssl.py,sha256=X_cAQbeaz-YcH8SzQ0luYTktIGJv4KMpfTD3t9l9Gqk,1879
@@ -702,7 +742,7 @@ omlish/sql/parsing/_antlr/MinisqlParser.py,sha256=y9SFjXdQlWYJa2PbPm30d5SfcYM_8M
702
742
  omlish/sql/parsing/_antlr/MinisqlVisitor.py,sha256=NCPorucLLOZ-Q99BtNbDOAfHytQl8wyroR8pI1uVovg,10030
703
743
  omlish/sql/parsing/_antlr/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
704
744
  omlish/sql/queries/__init__.py,sha256=2Wb05RFCKYZR3wO5YM60txNgjiDLJMYXC4gKAIUSsmc,1415
705
- omlish/sql/queries/base.py,sha256=eFYRjPXjXf0ntcDcMQ3x14BgQNp1MDPKKBNNF7oMe8E,3231
745
+ omlish/sql/queries/base.py,sha256=pQ6p8dSsHwsWa-lmK2h8RY2UJ1mwJRhByOgrCIW3dBs,3229
706
746
  omlish/sql/queries/binary.py,sha256=dcEzeEn104AMPuQ7QrJU2O-YCN3SUdxB5S4jaWKOUqY,2253
707
747
  omlish/sql/queries/exprs.py,sha256=dG9L218QtJM1HtDYIMWqHimK03N6AL1WONk3FvVRcXY,1480
708
748
  omlish/sql/queries/idents.py,sha256=w2RxO6SR3K-u30S259OtnAZaPv7YA70PzY9R7RtuCQ8,891
@@ -786,12 +826,12 @@ omlish/typedvalues/accessor.py,sha256=0k21N-CkjGaY6zCwugsRfOC_CDkqk7wNz4oxO1_6EE
786
826
  omlish/typedvalues/collection.py,sha256=jsXSggmMMvGATcJgQkUXt5Guwq8aquw73_OIC-e6U0I,5300
787
827
  omlish/typedvalues/generic.py,sha256=byWG_gMXhNelckUwdmOoJE9FKkL71Q4BSi4ZLyy0XZ0,788
788
828
  omlish/typedvalues/holder.py,sha256=4SwRezsmuDDEO5gENGx8kTm30pblF5UktoEAu02i-Gk,1554
789
- omlish/typedvalues/marshal.py,sha256=eWMrmuzPk3pX5AlILc5YBvuJBUHRQA_vwkxRm5aHiGs,4209
829
+ omlish/typedvalues/marshal.py,sha256=Rr-4DZ90BoD5Z9gT18QhZH2yMA3-gPJBK8GUrGkp8VA,4245
790
830
  omlish/typedvalues/reflect.py,sha256=y_7IY8_4cLVRvD3ug-_-cDaO5RtzC1rLVFzkeAPALf8,683
791
831
  omlish/typedvalues/values.py,sha256=Q_5IiQM3Vka4wGVd-scaslb4-oCMjFcIOksIrKE-JIM,1229
792
- omlish-0.0.0.dev284.dist-info/licenses/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
793
- omlish-0.0.0.dev284.dist-info/METADATA,sha256=bHeP3QMi-PvToEI46Ha5Gt_1dVI5uXLwIP1lrp8Rjms,4198
794
- omlish-0.0.0.dev284.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
795
- omlish-0.0.0.dev284.dist-info/entry_points.txt,sha256=Lt84WvRZJskWCAS7xnQGZIeVWksprtUHj0llrvVmod8,35
796
- omlish-0.0.0.dev284.dist-info/top_level.txt,sha256=pePsKdLu7DvtUiecdYXJ78iO80uDNmBlqe-8hOzOmfs,7
797
- omlish-0.0.0.dev284.dist-info/RECORD,,
832
+ omlish-0.0.0.dev285.dist-info/licenses/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
833
+ omlish-0.0.0.dev285.dist-info/METADATA,sha256=i6luxJ7Bytyt00Qr_PwO9pmz0PIFJcjUNOnpdl-6g0U,4198
834
+ omlish-0.0.0.dev285.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
835
+ omlish-0.0.0.dev285.dist-info/entry_points.txt,sha256=Lt84WvRZJskWCAS7xnQGZIeVWksprtUHj0llrvVmod8,35
836
+ omlish-0.0.0.dev285.dist-info/top_level.txt,sha256=pePsKdLu7DvtUiecdYXJ78iO80uDNmBlqe-8hOzOmfs,7
837
+ omlish-0.0.0.dev285.dist-info/RECORD,,