omlish 0.0.0.dev447__py3-none-any.whl → 0.0.0.dev484__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.
Potentially problematic release.
This version of omlish might be problematic. Click here for more details.
- omlish/.omlish-manifests.json +12 -0
- omlish/__about__.py +15 -15
- omlish/argparse/all.py +17 -9
- omlish/argparse/cli.py +16 -3
- omlish/argparse/utils.py +21 -0
- omlish/asyncs/asyncio/rlock.py +110 -0
- omlish/asyncs/asyncio/sync.py +43 -0
- omlish/asyncs/asyncio/utils.py +2 -0
- omlish/asyncs/sync.py +25 -0
- omlish/bootstrap/_marshal.py +1 -1
- omlish/bootstrap/diag.py +12 -21
- omlish/bootstrap/main.py +2 -5
- omlish/bootstrap/sys.py +27 -28
- omlish/cexts/__init__.py +0 -0
- omlish/cexts/include/omlish/omlish.hh +1 -0
- omlish/collections/__init__.py +13 -1
- omlish/collections/attrregistry.py +210 -0
- omlish/collections/cache/impl.py +1 -0
- omlish/collections/identity.py +1 -0
- omlish/collections/mappings.py +28 -0
- omlish/collections/trie.py +5 -1
- omlish/collections/utils.py +77 -0
- omlish/concurrent/all.py +2 -1
- omlish/concurrent/futures.py +25 -0
- omlish/concurrent/threadlets.py +1 -1
- omlish/daemons/reparent.py +2 -3
- omlish/daemons/spawning.py +2 -3
- omlish/dataclasses/__init__.py +2 -0
- omlish/dataclasses/impl/api/classes/decorator.py +3 -0
- omlish/dataclasses/impl/api/classes/make.py +3 -0
- omlish/dataclasses/impl/concerns/repr.py +15 -2
- omlish/dataclasses/impl/configs.py +97 -37
- omlish/dataclasses/impl/generation/compilation.py +21 -19
- omlish/dataclasses/impl/generation/globals.py +1 -0
- omlish/dataclasses/impl/generation/ops.py +1 -0
- omlish/dataclasses/impl/generation/processor.py +105 -24
- omlish/dataclasses/impl/processing/base.py +8 -0
- omlish/dataclasses/impl/processing/driving.py +8 -8
- omlish/dataclasses/specs.py +1 -0
- omlish/dataclasses/tools/modifiers.py +5 -0
- omlish/diag/cmds/__init__.py +0 -0
- omlish/diag/{lslocks.py → cmds/lslocks.py} +6 -6
- omlish/diag/{lsof.py → cmds/lsof.py} +6 -6
- omlish/diag/{ps.py → cmds/ps.py} +6 -6
- omlish/diag/pycharm.py +16 -2
- omlish/diag/pydevd.py +58 -40
- omlish/diag/replserver/console.py +1 -1
- omlish/dispatch/__init__.py +18 -12
- omlish/dispatch/methods.py +50 -140
- omlish/dom/rendering.py +1 -1
- omlish/formats/dotenv.py +1 -1
- omlish/formats/json/stream/__init__.py +13 -0
- omlish/funcs/guard.py +225 -0
- omlish/graphs/dot/rendering.py +1 -1
- omlish/http/all.py +44 -4
- omlish/http/clients/asyncs.py +33 -27
- omlish/http/clients/base.py +17 -1
- omlish/http/clients/coro/__init__.py +0 -0
- omlish/http/clients/coro/sync.py +171 -0
- omlish/http/clients/default.py +208 -29
- omlish/http/clients/executor.py +56 -0
- omlish/http/clients/httpx.py +72 -11
- omlish/http/clients/middleware.py +181 -0
- omlish/http/clients/sync.py +33 -27
- omlish/http/clients/syncasync.py +49 -0
- omlish/http/clients/urllib.py +6 -3
- omlish/http/coro/client/connection.py +15 -6
- omlish/http/coro/io.py +2 -0
- omlish/http/flasky/__init__.py +40 -0
- omlish/http/flasky/_compat.py +2 -0
- omlish/http/flasky/api.py +82 -0
- omlish/http/flasky/app.py +203 -0
- omlish/http/flasky/cvs.py +59 -0
- omlish/http/flasky/requests.py +20 -0
- omlish/http/flasky/responses.py +23 -0
- omlish/http/flasky/routes.py +23 -0
- omlish/http/flasky/types.py +15 -0
- omlish/http/urls.py +67 -0
- omlish/inject/__init__.py +38 -18
- omlish/inject/_dataclasses.py +4986 -0
- omlish/inject/binder.py +4 -48
- omlish/inject/elements.py +27 -0
- omlish/inject/helpers/__init__.py +0 -0
- omlish/inject/{utils.py → helpers/constfn.py} +3 -3
- omlish/inject/{tags.py → helpers/id.py} +2 -2
- omlish/inject/helpers/multis.py +143 -0
- omlish/inject/helpers/wrappers.py +54 -0
- omlish/inject/impl/elements.py +47 -17
- omlish/inject/impl/injector.py +20 -19
- omlish/inject/impl/inspect.py +10 -1
- omlish/inject/impl/maysync.py +3 -4
- omlish/inject/impl/multis.py +3 -0
- omlish/inject/impl/sync.py +3 -4
- omlish/inject/injector.py +31 -2
- omlish/inject/inspect.py +35 -0
- omlish/inject/maysync.py +2 -4
- omlish/inject/multis.py +8 -0
- omlish/inject/overrides.py +3 -3
- omlish/inject/privates.py +6 -0
- omlish/inject/providers.py +3 -2
- omlish/inject/sync.py +5 -4
- omlish/io/buffers.py +118 -0
- omlish/io/readers.py +29 -0
- omlish/iterators/transforms.py +2 -2
- omlish/lang/__init__.py +178 -97
- omlish/lang/_asyncs.cc +186 -0
- omlish/lang/asyncs.py +17 -0
- omlish/lang/casing.py +11 -0
- omlish/lang/contextmanagers.py +28 -4
- omlish/lang/functions.py +31 -22
- omlish/lang/imports/_capture.cc +11 -9
- omlish/lang/imports/capture.py +363 -170
- omlish/lang/imports/proxy.py +455 -152
- omlish/lang/lazyglobals.py +22 -9
- omlish/lang/params.py +17 -0
- omlish/lang/recursion.py +0 -1
- omlish/lang/sequences.py +124 -0
- omlish/lite/abstract.py +54 -24
- omlish/lite/asyncs.py +2 -2
- omlish/lite/attrops.py +2 -0
- omlish/lite/contextmanagers.py +4 -4
- omlish/lite/dataclasses.py +44 -0
- omlish/lite/maybes.py +8 -0
- omlish/lite/maysync.py +1 -5
- omlish/lite/pycharm.py +1 -1
- omlish/lite/typing.py +6 -0
- omlish/logs/all.py +1 -1
- omlish/logs/utils.py +1 -1
- omlish/manifests/loading.py +2 -1
- omlish/marshal/__init__.py +33 -13
- omlish/marshal/_dataclasses.py +2774 -0
- omlish/marshal/base/configs.py +12 -0
- omlish/marshal/base/contexts.py +36 -21
- omlish/marshal/base/funcs.py +8 -11
- omlish/marshal/base/options.py +8 -0
- omlish/marshal/base/registries.py +146 -44
- omlish/marshal/base/types.py +40 -16
- omlish/marshal/composite/iterables.py +33 -20
- omlish/marshal/composite/literals.py +20 -18
- omlish/marshal/composite/mappings.py +36 -23
- omlish/marshal/composite/maybes.py +29 -19
- omlish/marshal/composite/newtypes.py +16 -16
- omlish/marshal/composite/optionals.py +14 -14
- omlish/marshal/composite/special.py +15 -15
- omlish/marshal/composite/unions/__init__.py +0 -0
- omlish/marshal/composite/unions/literals.py +93 -0
- omlish/marshal/composite/unions/primitives.py +103 -0
- omlish/marshal/factories/invalidate.py +18 -68
- omlish/marshal/factories/method.py +26 -0
- omlish/marshal/factories/moduleimport/factories.py +22 -65
- omlish/marshal/factories/multi.py +13 -25
- omlish/marshal/factories/recursive.py +42 -56
- omlish/marshal/factories/typecache.py +29 -74
- omlish/marshal/factories/typemap.py +42 -43
- omlish/marshal/objects/dataclasses.py +129 -106
- omlish/marshal/objects/marshal.py +18 -14
- omlish/marshal/objects/namedtuples.py +48 -42
- omlish/marshal/objects/unmarshal.py +19 -15
- omlish/marshal/polymorphism/marshal.py +9 -11
- omlish/marshal/polymorphism/metadata.py +16 -5
- omlish/marshal/polymorphism/standard.py +13 -1
- omlish/marshal/polymorphism/unions.py +15 -105
- omlish/marshal/polymorphism/unmarshal.py +9 -10
- omlish/marshal/singular/enums.py +14 -18
- omlish/marshal/standard.py +10 -6
- omlish/marshal/trivial/any.py +1 -1
- omlish/marshal/trivial/forbidden.py +21 -26
- omlish/metadata.py +23 -1
- omlish/os/forkhooks.py +4 -0
- omlish/os/pidfiles/pinning.py +2 -2
- omlish/reflect/types.py +1 -0
- omlish/secrets/marshal.py +1 -1
- omlish/specs/jmespath/__init__.py +12 -3
- omlish/specs/jmespath/_dataclasses.py +2893 -0
- omlish/specs/jmespath/ast.py +1 -1
- omlish/specs/jsonrpc/__init__.py +13 -0
- omlish/specs/jsonrpc/_marshal.py +32 -23
- omlish/specs/jsonrpc/conns.py +10 -7
- omlish/specs/jsonschema/_marshal.py +1 -1
- omlish/specs/jsonschema/keywords/__init__.py +7 -0
- omlish/specs/jsonschema/keywords/_dataclasses.py +1644 -0
- omlish/specs/openapi/_marshal.py +31 -22
- omlish/sql/{tabledefs/alchemy.py → alchemy/tabledefs.py} +2 -2
- omlish/sql/queries/_marshal.py +2 -2
- omlish/sql/queries/rendering.py +1 -1
- omlish/sql/tabledefs/_marshal.py +1 -1
- omlish/subprocesses/base.py +4 -0
- omlish/subprocesses/editor.py +1 -1
- omlish/sync.py +155 -21
- omlish/term/alt.py +60 -0
- omlish/term/confirm.py +8 -8
- omlish/term/pager.py +235 -0
- omlish/term/terminfo.py +935 -0
- omlish/term/termstate.py +67 -0
- omlish/term/vt100/terminal.py +0 -3
- omlish/testing/pytest/plugins/asyncs/fixtures.py +4 -1
- omlish/testing/pytest/plugins/skips.py +2 -1
- omlish/testing/unittest/main.py +3 -3
- omlish/text/docwrap/__init__.py +3 -0
- omlish/text/docwrap/__main__.py +11 -0
- omlish/text/docwrap/api.py +83 -0
- omlish/text/docwrap/cli.py +86 -0
- omlish/text/docwrap/groups.py +84 -0
- omlish/text/docwrap/lists.py +167 -0
- omlish/text/docwrap/parts.py +146 -0
- omlish/text/docwrap/reflowing.py +106 -0
- omlish/text/docwrap/rendering.py +151 -0
- omlish/text/docwrap/utils.py +11 -0
- omlish/text/docwrap/wrapping.py +59 -0
- omlish/text/filecache.py +2 -2
- omlish/text/lorem.py +6 -0
- omlish/text/parts.py +2 -2
- omlish/text/textwrap.py +51 -0
- omlish/typedvalues/marshal.py +85 -59
- omlish/typedvalues/values.py +2 -1
- {omlish-0.0.0.dev447.dist-info → omlish-0.0.0.dev484.dist-info}/METADATA +29 -28
- {omlish-0.0.0.dev447.dist-info → omlish-0.0.0.dev484.dist-info}/RECORD +222 -171
- omlish/dataclasses/impl/generation/mangling.py +0 -18
- omlish/funcs/match.py +0 -227
- omlish/marshal/factories/match.py +0 -34
- omlish/marshal/factories/simple.py +0 -28
- /omlish/inject/impl/{providers2.py → providersmap.py} +0 -0
- {omlish-0.0.0.dev447.dist-info → omlish-0.0.0.dev484.dist-info}/WHEEL +0 -0
- {omlish-0.0.0.dev447.dist-info → omlish-0.0.0.dev484.dist-info}/entry_points.txt +0 -0
- {omlish-0.0.0.dev447.dist-info → omlish-0.0.0.dev484.dist-info}/licenses/LICENSE +0 -0
- {omlish-0.0.0.dev447.dist-info → omlish-0.0.0.dev484.dist-info}/top_level.txt +0 -0
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
from ....text.mangle import StringMangler
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
##
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
ESCAPED_IDENT_CHARS = ''.join(
|
|
8
|
-
chr(i)
|
|
9
|
-
for i in range(128)
|
|
10
|
-
if not (
|
|
11
|
-
chr(i).isalpha() or
|
|
12
|
-
chr(i).isdigit() or
|
|
13
|
-
chr(i) == '_' or
|
|
14
|
-
ord(chr(i)) > 127
|
|
15
|
-
)
|
|
16
|
-
)
|
|
17
|
-
|
|
18
|
-
IDENT_MANGLER = StringMangler.of('_', ESCAPED_IDENT_CHARS)
|
omlish/funcs/match.py
DELETED
|
@@ -1,227 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
Analogous to scala's partial functions ( https://www.scala-lang.org/api/current/scala/PartialFunction.html ).
|
|
3
|
-
|
|
4
|
-
TODO:
|
|
5
|
-
- unify MatchFnClass with dispatch.method?
|
|
6
|
-
- __call__ = mfs.method(); @__call__.register(lambda: ...) def _call_... ?
|
|
7
|
-
- not really the same thing, dispatch is unordered this is necessarily ordered
|
|
8
|
-
"""
|
|
9
|
-
import abc
|
|
10
|
-
import dataclasses as dc
|
|
11
|
-
import typing as ta
|
|
12
|
-
|
|
13
|
-
from .. import lang
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
T = ta.TypeVar('T')
|
|
17
|
-
P = ta.ParamSpec('P')
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
##
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
class MatchGuardError(Exception):
|
|
24
|
-
pass
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
class MatchFn(lang.Abstract, ta.Generic[P, T]):
|
|
28
|
-
@abc.abstractmethod
|
|
29
|
-
def guard(self, *args: P.args, **kwargs: P.kwargs) -> bool:
|
|
30
|
-
raise NotImplementedError
|
|
31
|
-
|
|
32
|
-
@abc.abstractmethod
|
|
33
|
-
def fn(self, *args: P.args, **kwargs: P.kwargs) -> T:
|
|
34
|
-
raise NotImplementedError
|
|
35
|
-
|
|
36
|
-
def __get__(self, instance, owner=None):
|
|
37
|
-
return self
|
|
38
|
-
|
|
39
|
-
@ta.final
|
|
40
|
-
def __call__(self, *args: P.args, **kwargs: P.kwargs) -> T:
|
|
41
|
-
if not self.guard(*args, **kwargs):
|
|
42
|
-
raise MatchGuardError(*args, **kwargs)
|
|
43
|
-
return self.fn(*args, **kwargs)
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
##
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
@dc.dataclass(frozen=True)
|
|
50
|
-
class SimpleMatchFn(MatchFn[P, T]):
|
|
51
|
-
_guard: ta.Callable[P, bool]
|
|
52
|
-
_fn: ta.Callable[P, T]
|
|
53
|
-
|
|
54
|
-
def guard(self, *args: P.args, **kwargs: P.kwargs) -> bool:
|
|
55
|
-
return self._guard(*args, **kwargs)
|
|
56
|
-
|
|
57
|
-
def fn(self, *args: P.args, **kwargs: P.kwargs) -> T:
|
|
58
|
-
return self._fn(*args, **kwargs)
|
|
59
|
-
|
|
60
|
-
def __get__(self, instance, owner=None):
|
|
61
|
-
return self.__class__(
|
|
62
|
-
self._guard.__get__(instance, owner), # noqa
|
|
63
|
-
self._fn.__get__(instance, owner), # noqa
|
|
64
|
-
)
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
@ta.overload
|
|
68
|
-
def simple(guard: ta.Callable[..., bool], fn: ta.Callable[P, T]) -> SimpleMatchFn[P, T]:
|
|
69
|
-
...
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
@ta.overload
|
|
73
|
-
def simple(guard: ta.Callable[..., bool]) -> ta.Callable[[ta.Callable[P, T]], SimpleMatchFn[P, T]]:
|
|
74
|
-
...
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
def simple(guard, fn=None):
|
|
78
|
-
def inner(fn): # noqa
|
|
79
|
-
return SimpleMatchFn(guard, fn)
|
|
80
|
-
if fn is not None:
|
|
81
|
-
return inner(fn)
|
|
82
|
-
else:
|
|
83
|
-
return inner
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
##
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
class AmbiguousMatchesError(Exception):
|
|
90
|
-
pass
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
@dc.dataclass(frozen=True)
|
|
94
|
-
class MultiMatchFn(MatchFn[P, T]):
|
|
95
|
-
children: ta.Sequence[MatchFn[P, T]]
|
|
96
|
-
strict: bool = False
|
|
97
|
-
|
|
98
|
-
def match(self, *args: P.args, **kwargs: P.kwargs) -> MatchFn[P, T] | None:
|
|
99
|
-
matches = []
|
|
100
|
-
for cur in self.children:
|
|
101
|
-
if cur.guard(*args, **kwargs):
|
|
102
|
-
if self.strict:
|
|
103
|
-
matches.append(cur)
|
|
104
|
-
else:
|
|
105
|
-
return cur
|
|
106
|
-
if not matches:
|
|
107
|
-
return None
|
|
108
|
-
elif len(matches) > 1:
|
|
109
|
-
raise AmbiguousMatchesError
|
|
110
|
-
else:
|
|
111
|
-
return matches[0]
|
|
112
|
-
|
|
113
|
-
def guard(self, *args: P.args, **kwargs: P.kwargs) -> bool:
|
|
114
|
-
return self.match(*args, **kwargs) is not None
|
|
115
|
-
|
|
116
|
-
def fn(self, *args: P.args, **kwargs: P.kwargs) -> T:
|
|
117
|
-
if (m := self.match(*args, **kwargs)) is None:
|
|
118
|
-
raise MatchGuardError(*args, **kwargs)
|
|
119
|
-
return m.fn(*args, **kwargs)
|
|
120
|
-
|
|
121
|
-
def __get__(self, instance, owner=None):
|
|
122
|
-
return self.__class__(
|
|
123
|
-
[c.__get__(instance, owner) for c in self.children],
|
|
124
|
-
strict=self.strict,
|
|
125
|
-
)
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
def multi(*children: MatchFn[P, T], strict: bool = False) -> MultiMatchFn: # MultiMatchFn[P[0], T[-1]]
|
|
129
|
-
return MultiMatchFn(children, strict=strict) # noqa
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
##
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
class CachedMatchFn(MatchFn[P, T]):
|
|
136
|
-
@staticmethod
|
|
137
|
-
def _default_key(*args, **kwargs):
|
|
138
|
-
return (args, tuple(sorted(kwargs.items(), key=lambda t: t[0])))
|
|
139
|
-
|
|
140
|
-
def __init__(
|
|
141
|
-
self,
|
|
142
|
-
f: MatchFn[P, T],
|
|
143
|
-
*,
|
|
144
|
-
key: ta.Callable[P, ta.Any] = _default_key,
|
|
145
|
-
lock: lang.DefaultLockable = None,
|
|
146
|
-
) -> None:
|
|
147
|
-
super().__init__()
|
|
148
|
-
|
|
149
|
-
self._f = f
|
|
150
|
-
self._key = key
|
|
151
|
-
self._lock = lock
|
|
152
|
-
self._lock_impl = lang.default_lock(lock)()
|
|
153
|
-
self._dct: dict[ta.Any, lang.Maybe[ta.Any]] = {}
|
|
154
|
-
|
|
155
|
-
def guard(self, *args: P.args, **kwargs: P.kwargs) -> bool:
|
|
156
|
-
with self._lock_impl:
|
|
157
|
-
k = self._key(*args, **kwargs)
|
|
158
|
-
try:
|
|
159
|
-
e = self._dct[k]
|
|
160
|
-
except KeyError:
|
|
161
|
-
if self._f.guard(*args, **kwargs):
|
|
162
|
-
return True
|
|
163
|
-
else:
|
|
164
|
-
self._dct[k] = lang.empty()
|
|
165
|
-
return False
|
|
166
|
-
else:
|
|
167
|
-
return e.present
|
|
168
|
-
|
|
169
|
-
def fn(self, *args: P.args, **kwargs: P.kwargs) -> T:
|
|
170
|
-
with self._lock_impl:
|
|
171
|
-
k = self._key(*args, **kwargs)
|
|
172
|
-
try:
|
|
173
|
-
e = self._dct[k]
|
|
174
|
-
except KeyError:
|
|
175
|
-
try:
|
|
176
|
-
ret = self._f(*args, **kwargs)
|
|
177
|
-
except MatchGuardError:
|
|
178
|
-
self._dct[k] = lang.empty()
|
|
179
|
-
raise
|
|
180
|
-
else:
|
|
181
|
-
self._dct[k] = lang.just(ret)
|
|
182
|
-
return ret
|
|
183
|
-
else:
|
|
184
|
-
if e.present:
|
|
185
|
-
return e.must()
|
|
186
|
-
else:
|
|
187
|
-
raise MatchGuardError(*args, **kwargs)
|
|
188
|
-
|
|
189
|
-
def __get__(self, instance, owner=None):
|
|
190
|
-
return self.__class__(self._f.__get__(instance, owner), key=self._key) # noqa
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
cached = CachedMatchFn
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
##
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
class MatchFnClass(MatchFn[P, T]):
|
|
200
|
-
_cls_match_fn: ta.ClassVar[MultiMatchFn]
|
|
201
|
-
|
|
202
|
-
__match_fn: MatchFn[P, T] | None = None
|
|
203
|
-
|
|
204
|
-
@property
|
|
205
|
-
def _match_fn(self) -> MatchFn[P, T]:
|
|
206
|
-
if (mf := self.__match_fn) is None:
|
|
207
|
-
mf = self.__match_fn = self._cls_match_fn.__get__(self)
|
|
208
|
-
return mf
|
|
209
|
-
|
|
210
|
-
def __init_subclass__(cls, strict: bool = False, **kwargs: ta.Any) -> None:
|
|
211
|
-
super().__init_subclass__(**kwargs)
|
|
212
|
-
|
|
213
|
-
if '_cls_match_fn' in cls.__dict__:
|
|
214
|
-
raise AttributeError('_cls_match_fn')
|
|
215
|
-
|
|
216
|
-
d = {}
|
|
217
|
-
for c in cls.__mro__:
|
|
218
|
-
for a, o in c.__dict__.items():
|
|
219
|
-
if isinstance(o, MatchFn) and a not in d:
|
|
220
|
-
d[a] = o
|
|
221
|
-
cls._cls_match_fn = MultiMatchFn(list(d.values()), strict=strict)
|
|
222
|
-
|
|
223
|
-
def guard(self, *args: P.args, **kwargs: P.kwargs) -> bool:
|
|
224
|
-
return self._match_fn.guard(*args, **kwargs)
|
|
225
|
-
|
|
226
|
-
def fn(self, *args: P.args, **kwargs: P.kwargs) -> T:
|
|
227
|
-
return self._match_fn.fn(*args, **kwargs)
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
from ... import lang
|
|
2
|
-
from ... import reflect as rfl
|
|
3
|
-
from ...funcs import match as mfs
|
|
4
|
-
from ..base.contexts import MarshalContext
|
|
5
|
-
from ..base.contexts import UnmarshalContext
|
|
6
|
-
from ..base.types import Marshaler
|
|
7
|
-
from ..base.types import MarshalerFactory
|
|
8
|
-
from ..base.types import MarshalerMaker
|
|
9
|
-
from ..base.types import Unmarshaler
|
|
10
|
-
from ..base.types import UnmarshalerFactory
|
|
11
|
-
from ..base.types import UnmarshalerMaker
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
##
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
class MarshalerFactoryMatchClass(
|
|
18
|
-
MarshalerFactory,
|
|
19
|
-
mfs.MatchFnClass[[MarshalContext, rfl.Type], Marshaler],
|
|
20
|
-
lang.Abstract,
|
|
21
|
-
):
|
|
22
|
-
@property
|
|
23
|
-
def make_marshaler(self) -> MarshalerMaker:
|
|
24
|
-
return self # noqa
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
class UnmarshalerFactoryMatchClass(
|
|
28
|
-
UnmarshalerFactory,
|
|
29
|
-
mfs.MatchFnClass[[UnmarshalContext, rfl.Type], Unmarshaler],
|
|
30
|
-
lang.Abstract,
|
|
31
|
-
):
|
|
32
|
-
@property
|
|
33
|
-
def make_unmarshaler(self) -> UnmarshalerMaker:
|
|
34
|
-
return self # noqa
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
from ... import lang
|
|
2
|
-
from ..base.types import MarshalerFactory
|
|
3
|
-
from ..base.types import MarshalerMaker
|
|
4
|
-
from ..base.types import UnmarshalerFactory
|
|
5
|
-
from ..base.types import UnmarshalerMaker
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
##
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
class SimpleMarshalerFactory(
|
|
12
|
-
MarshalerFactory,
|
|
13
|
-
MarshalerMaker,
|
|
14
|
-
lang.Abstract,
|
|
15
|
-
):
|
|
16
|
-
@property
|
|
17
|
-
def make_marshaler(self) -> MarshalerMaker:
|
|
18
|
-
return self # noqa
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
class SimpleUnmarshalerFactory(
|
|
22
|
-
UnmarshalerFactory,
|
|
23
|
-
UnmarshalerMaker,
|
|
24
|
-
lang.Abstract,
|
|
25
|
-
):
|
|
26
|
-
@property
|
|
27
|
-
def make_unmarshaler(self) -> UnmarshalerMaker:
|
|
28
|
-
return self # noqa
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|