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
omlish/specs/jmespath/ast.py
CHANGED
omlish/specs/jsonrpc/__init__.py
CHANGED
|
@@ -36,6 +36,19 @@ from .types import ( # noqa
|
|
|
36
36
|
##
|
|
37
37
|
|
|
38
38
|
|
|
39
|
+
from ... import lang as _lang
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
with _lang.auto_proxy_init(globals()):
|
|
43
|
+
from .conns import ( # noqa
|
|
44
|
+
JsonrpcConnection as Connection,
|
|
45
|
+
)
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
##
|
|
49
|
+
|
|
50
|
+
|
|
39
51
|
from ... import marshal as _msh
|
|
40
52
|
|
|
53
|
+
|
|
41
54
|
_msh.register_global_module_import('._marshal', __package__)
|
omlish/specs/jsonrpc/_marshal.py
CHANGED
|
@@ -5,7 +5,6 @@ from ... import dataclasses as dc
|
|
|
5
5
|
from ... import lang
|
|
6
6
|
from ... import marshal as msh
|
|
7
7
|
from ... import reflect as rfl
|
|
8
|
-
from ...funcs import match as mfs
|
|
9
8
|
from .types import NotSpecified
|
|
10
9
|
|
|
11
10
|
|
|
@@ -25,33 +24,43 @@ class NotSpecifiedUnionMarshaler(msh.Marshaler):
|
|
|
25
24
|
return self.m.marshal(ctx, o)
|
|
26
25
|
|
|
27
26
|
|
|
28
|
-
class NotSpecifiedUnionMarshalerFactory(msh.
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
nty = rfl.type_(ta.Union[*args])
|
|
37
|
-
m = ctx.make(nty)
|
|
38
|
-
return NotSpecifiedUnionMarshaler(m)
|
|
27
|
+
class NotSpecifiedUnionMarshalerFactory(msh.MarshalerFactory):
|
|
28
|
+
def make_marshaler(self, ctx: msh.MarshalFactoryContext, rty: rfl.Type) -> ta.Callable[[], msh.Marshaler] | None:
|
|
29
|
+
if not (
|
|
30
|
+
isinstance(rty, rfl.Union) and
|
|
31
|
+
not rty.is_optional and
|
|
32
|
+
_NOT_SPECIFIED_RTY in rty.args
|
|
33
|
+
):
|
|
34
|
+
return None
|
|
39
35
|
|
|
36
|
+
def inner() -> msh.Marshaler:
|
|
37
|
+
args = set(check.isinstance(rty, rfl.Union).args) - {_NOT_SPECIFIED_RTY}
|
|
38
|
+
nty = rfl.type_(ta.Union[*args])
|
|
39
|
+
m = ctx.make_marshaler(nty)
|
|
40
|
+
return NotSpecifiedUnionMarshaler(m)
|
|
40
41
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
42
|
+
return inner
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
class NotSpecifiedUnionUnmarshalerFactory(msh.UnmarshalerFactory):
|
|
46
|
+
def make_unmarshaler(self, ctx: msh.UnmarshalFactoryContext, rty: rfl.Type) -> ta.Callable[[], msh.Unmarshaler] | None: # noqa
|
|
47
|
+
if not (
|
|
48
|
+
isinstance(rty, rfl.Union) and
|
|
49
|
+
not rty.is_optional and
|
|
50
|
+
_NOT_SPECIFIED_RTY in rty.args
|
|
51
|
+
):
|
|
52
|
+
return None
|
|
53
|
+
|
|
54
|
+
def inner() -> msh.Unmarshaler:
|
|
55
|
+
args = set(check.isinstance(rty, rfl.Union).args) - {_NOT_SPECIFIED_RTY}
|
|
56
|
+
nty = rfl.type_(ta.Union[*args])
|
|
57
|
+
return ctx.make_unmarshaler(nty)
|
|
58
|
+
|
|
59
|
+
return inner
|
|
51
60
|
|
|
52
61
|
|
|
53
62
|
@lang.static_init
|
|
54
|
-
def
|
|
63
|
+
def _install_standard_marshaling() -> None:
|
|
55
64
|
msh.install_standard_factories(
|
|
56
65
|
msh.ForbiddenTypeMarshalerFactory({_NOT_SPECIFIED_RTY}),
|
|
57
66
|
msh.ForbiddenTypeUnmarshalerFactory({_NOT_SPECIFIED_RTY}),
|
omlish/specs/jsonrpc/conns.py
CHANGED
|
@@ -26,11 +26,6 @@ from .types import request
|
|
|
26
26
|
##
|
|
27
27
|
|
|
28
28
|
|
|
29
|
-
@lang.cached_function
|
|
30
|
-
def _create_id() -> str:
|
|
31
|
-
return str(uuid.uuid4())
|
|
32
|
-
|
|
33
|
-
|
|
34
29
|
class JsonrpcConnection:
|
|
35
30
|
def __init__(
|
|
36
31
|
self,
|
|
@@ -40,6 +35,7 @@ class JsonrpcConnection:
|
|
|
40
35
|
request_handler: ta.Callable[['JsonrpcConnection', Request], ta.Awaitable[None]] | None = None,
|
|
41
36
|
notification_handler: ta.Callable[['JsonrpcConnection', Request], ta.Awaitable[None]] | None = None,
|
|
42
37
|
default_timeout: float | None = 30.,
|
|
38
|
+
id_creator: ta.Callable[[], Id] | None = None,
|
|
43
39
|
) -> None:
|
|
44
40
|
super().__init__()
|
|
45
41
|
|
|
@@ -48,6 +44,9 @@ class JsonrpcConnection:
|
|
|
48
44
|
self._request_handler = request_handler
|
|
49
45
|
self._notification_handler = notification_handler
|
|
50
46
|
self._default_timeout = default_timeout
|
|
47
|
+
if id_creator is None:
|
|
48
|
+
id_creator = self.default_create_id
|
|
49
|
+
self._create_id = id_creator
|
|
51
50
|
|
|
52
51
|
self._buf = DelimitingBuffer(b'\n')
|
|
53
52
|
self._response_futures_by_id: dict[Id, aiu.Future[Response]] = {}
|
|
@@ -55,6 +54,10 @@ class JsonrpcConnection:
|
|
|
55
54
|
self._shutdown_event = anyio.Event()
|
|
56
55
|
self._received_eof = False
|
|
57
56
|
|
|
57
|
+
@classmethod
|
|
58
|
+
def default_create_id(cls) -> Id:
|
|
59
|
+
return str(uuid.uuid4())
|
|
60
|
+
|
|
58
61
|
#
|
|
59
62
|
|
|
60
63
|
class Error(Exception):
|
|
@@ -191,7 +194,7 @@ class JsonrpcConnection:
|
|
|
191
194
|
async def send_message(self, msg: Message) -> None:
|
|
192
195
|
async with self._send_lock:
|
|
193
196
|
try:
|
|
194
|
-
await self._stream.send(json.dumps(msh.marshal(msg)).encode() + b'\n')
|
|
197
|
+
await self._stream.send(json.dumps(msh.marshal(msg)).encode() + b'\n') # noqa
|
|
195
198
|
except self.ERROR_EXCEPTIONS as e:
|
|
196
199
|
raise ConnectionError('Failed to send message') from e
|
|
197
200
|
|
|
@@ -204,7 +207,7 @@ class JsonrpcConnection:
|
|
|
204
207
|
*,
|
|
205
208
|
timeout: lang.TimeoutLike | None = lang.Timeout.DEFAULT,
|
|
206
209
|
) -> ta.Any:
|
|
207
|
-
msg_id = _create_id()
|
|
210
|
+
msg_id = self._create_id()
|
|
208
211
|
req = request(msg_id, method, params)
|
|
209
212
|
|
|
210
213
|
fut = aiu.create_future[Response]()
|
|
@@ -22,7 +22,7 @@ class _KeywordsUnmarshaler(msh.Unmarshaler):
|
|
|
22
22
|
|
|
23
23
|
|
|
24
24
|
@lang.static_init
|
|
25
|
-
def
|
|
25
|
+
def _install_standard_marshaling() -> None:
|
|
26
26
|
msh.install_standard_factories(
|
|
27
27
|
msh.TypeMapMarshalerFactory({Keywords: _KeywordsMarshaler()}),
|
|
28
28
|
msh.TypeMapUnmarshalerFactory({Keywords: _KeywordsUnmarshaler()}),
|