omlish 0.0.0.dev433__py3-none-any.whl → 0.0.0.dev434__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 +2 -2
- omlish/asyncs/all.py +0 -13
- omlish/inject/__init__.py +152 -126
- omlish/inject/binder.py +7 -4
- omlish/inject/impl/elements.py +6 -8
- omlish/inject/impl/injector.py +58 -32
- omlish/inject/impl/inspect.py +1 -0
- omlish/inject/impl/maysync.py +44 -0
- omlish/inject/impl/multis.py +5 -5
- omlish/inject/impl/privates.py +8 -8
- omlish/inject/impl/providers.py +24 -31
- omlish/inject/impl/providers2.py +43 -0
- omlish/inject/impl/scopes.py +19 -25
- omlish/inject/impl/sync.py +42 -0
- omlish/inject/injector.py +9 -11
- omlish/inject/inspect.py +1 -3
- omlish/inject/listeners.py +4 -4
- omlish/inject/managed.py +52 -20
- omlish/inject/maysync.py +27 -0
- omlish/inject/providers.py +6 -0
- omlish/inject/scopes.py +38 -10
- omlish/inject/sync.py +46 -0
- omlish/lang/__init__.py +12 -3
- omlish/lang/asyncs.py +18 -0
- omlish/lang/contextmanagers.py +23 -0
- omlish/lite/asyncs.py +21 -0
- omlish/lite/maysync.py +21 -0
- {omlish-0.0.0.dev433.dist-info → omlish-0.0.0.dev434.dist-info}/METADATA +1 -4
- {omlish-0.0.0.dev433.dist-info → omlish-0.0.0.dev434.dist-info}/RECORD +33 -30
- omlish/asyncs/bridge.py +0 -359
- omlish/asyncs/utils.py +0 -18
- {omlish-0.0.0.dev433.dist-info → omlish-0.0.0.dev434.dist-info}/WHEEL +0 -0
- {omlish-0.0.0.dev433.dist-info → omlish-0.0.0.dev434.dist-info}/entry_points.txt +0 -0
- {omlish-0.0.0.dev433.dist-info → omlish-0.0.0.dev434.dist-info}/licenses/LICENSE +0 -0
- {omlish-0.0.0.dev433.dist-info → omlish-0.0.0.dev434.dist-info}/top_level.txt +0 -0
omlish/inject/scopes.py
CHANGED
@@ -7,16 +7,17 @@ from .. import dataclasses as dc
|
|
7
7
|
from .. import lang
|
8
8
|
from .bindings import Binding
|
9
9
|
from .elements import Element
|
10
|
+
from .injector import AsyncInjector
|
10
11
|
from .keys import Key
|
11
12
|
from .keys import as_key
|
12
13
|
from .providers import Provider
|
13
14
|
from .types import Scope
|
14
15
|
|
15
16
|
|
16
|
-
|
17
|
-
from . import injector as
|
18
|
-
|
19
|
-
|
17
|
+
with lang.auto_proxy_import(globals()):
|
18
|
+
from . import injector as _injector
|
19
|
+
from . import maysync as _maysync
|
20
|
+
from . import sync as _sync
|
20
21
|
|
21
22
|
|
22
23
|
##
|
@@ -65,7 +66,7 @@ class SeededScope(Scope, lang.Final):
|
|
65
66
|
|
66
67
|
class Manager(lang.Abstract):
|
67
68
|
@abc.abstractmethod
|
68
|
-
def __call__(self, seeds: ta.Mapping[Key, ta.Any]) -> ta.
|
69
|
+
def __call__(self, seeds: ta.Mapping[Key, ta.Any]) -> ta.AsyncContextManager[None]:
|
69
70
|
raise NotImplementedError
|
70
71
|
|
71
72
|
|
@@ -81,11 +82,38 @@ def bind_scope_seed(k: ta.Any, ss: SeededScope) -> Element:
|
|
81
82
|
return Binding(k, ScopeSeededProvider(ss, k))
|
82
83
|
|
83
84
|
|
84
|
-
|
85
|
-
|
86
|
-
|
85
|
+
##
|
86
|
+
|
87
|
+
|
88
|
+
@contextlib.asynccontextmanager
|
89
|
+
async def async_enter_seeded_scope(
|
90
|
+
i: '_injector.AsyncInjector',
|
87
91
|
ss: SeededScope,
|
88
92
|
keys: ta.Mapping[Key, ta.Any],
|
89
|
-
) -> ta.
|
90
|
-
with i.provide(Key(SeededScope.Manager, tag=ss))(keys):
|
93
|
+
) -> ta.AsyncGenerator[None]:
|
94
|
+
async with (await i.provide(Key(SeededScope.Manager, tag=ss)))(keys):
|
91
95
|
yield
|
96
|
+
|
97
|
+
|
98
|
+
def enter_seeded_scope(
|
99
|
+
i: '_sync.Injector',
|
100
|
+
ss: SeededScope,
|
101
|
+
keys: ta.Mapping[Key, ta.Any],
|
102
|
+
) -> ta.ContextManager[None]:
|
103
|
+
return lang.run_maysync_context_manager(async_enter_seeded_scope(
|
104
|
+
i[AsyncInjector],
|
105
|
+
ss,
|
106
|
+
keys,
|
107
|
+
))
|
108
|
+
|
109
|
+
|
110
|
+
def maysync_enter_seeded_scope(
|
111
|
+
i: '_maysync.MaysyncInjector',
|
112
|
+
ss: SeededScope,
|
113
|
+
keys: ta.Mapping[Key, ta.Any],
|
114
|
+
) -> ta.ContextManager[None]:
|
115
|
+
return lang.sync_async_context_manager(async_enter_seeded_scope(
|
116
|
+
i[AsyncInjector],
|
117
|
+
ss,
|
118
|
+
keys,
|
119
|
+
))
|
omlish/inject/sync.py
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
import abc
|
2
|
+
import typing as ta
|
3
|
+
|
4
|
+
from .. import lang
|
5
|
+
from .elements import Elemental
|
6
|
+
from .elements import as_elements
|
7
|
+
from .inspect import KwargsTarget
|
8
|
+
from .keys import Key
|
9
|
+
|
10
|
+
|
11
|
+
with lang.auto_proxy_import(globals()):
|
12
|
+
from .impl import sync as _sync
|
13
|
+
|
14
|
+
|
15
|
+
T = ta.TypeVar('T')
|
16
|
+
|
17
|
+
|
18
|
+
##
|
19
|
+
|
20
|
+
|
21
|
+
class Injector(lang.Abstract):
|
22
|
+
@abc.abstractmethod
|
23
|
+
def try_provide(self, key: ta.Any) -> lang.Maybe[ta.Any]:
|
24
|
+
raise NotImplementedError
|
25
|
+
|
26
|
+
@abc.abstractmethod
|
27
|
+
def provide(self, key: ta.Any) -> ta.Any:
|
28
|
+
raise NotImplementedError
|
29
|
+
|
30
|
+
@abc.abstractmethod
|
31
|
+
def provide_kwargs(self, kt: KwargsTarget) -> ta.Mapping[str, ta.Any]:
|
32
|
+
raise NotImplementedError
|
33
|
+
|
34
|
+
@abc.abstractmethod
|
35
|
+
def inject(self, obj: ta.Any) -> ta.Any:
|
36
|
+
raise NotImplementedError
|
37
|
+
|
38
|
+
def __getitem__(
|
39
|
+
self,
|
40
|
+
target: Key[T] | type[T],
|
41
|
+
) -> T:
|
42
|
+
return self.provide(target)
|
43
|
+
|
44
|
+
|
45
|
+
def create_injector(*args: Elemental) -> Injector:
|
46
|
+
return _sync.create_injector(as_elements(*args))
|
omlish/lang/__init__.py
CHANGED
@@ -15,6 +15,9 @@ with _auto_proxy_init(
|
|
15
15
|
|
16
16
|
sync_await,
|
17
17
|
sync_async_list,
|
18
|
+
|
19
|
+
SyncAsyncContextManager,
|
20
|
+
sync_async_context_manager,
|
18
21
|
)
|
19
22
|
|
20
23
|
from .attrstorage import ( # noqa
|
@@ -184,6 +187,9 @@ with _auto_proxy_init(
|
|
184
187
|
Timer,
|
185
188
|
|
186
189
|
double_check_setdefault,
|
190
|
+
|
191
|
+
call_with_exit_stack,
|
192
|
+
call_with_async_exit_stack,
|
187
193
|
)
|
188
194
|
|
189
195
|
from .datetimes import ( # noqa
|
@@ -487,9 +493,6 @@ with _auto_proxy_init(
|
|
487
493
|
)
|
488
494
|
|
489
495
|
from ..lite.maysync import ( # noqa
|
490
|
-
mark_maysync,
|
491
|
-
is_maysync,
|
492
|
-
|
493
496
|
AnyMaysyncFn,
|
494
497
|
|
495
498
|
MaywaitableAlreadyConsumedError,
|
@@ -504,6 +507,12 @@ with _auto_proxy_init(
|
|
504
507
|
is_running_maysync,
|
505
508
|
|
506
509
|
run_maysync,
|
510
|
+
|
511
|
+
RunMaysyncContextManager,
|
512
|
+
run_maysync_context_manager,
|
513
|
+
|
514
|
+
mark_maysync,
|
515
|
+
is_maysync,
|
507
516
|
)
|
508
517
|
|
509
518
|
from ..lite.objects import ( # noqa
|
omlish/lang/asyncs.py
CHANGED
@@ -79,3 +79,21 @@ def sync_async_list(
|
|
79
79
|
raise TypeError(lst)
|
80
80
|
|
81
81
|
return lst
|
82
|
+
|
83
|
+
|
84
|
+
@ta.final
|
85
|
+
class SyncAsyncContextManager(ta.Generic[T]):
|
86
|
+
def __init__(self, acm: ta.AsyncContextManager[T]) -> None:
|
87
|
+
self._acm = acm
|
88
|
+
|
89
|
+
def __repr__(self) -> str:
|
90
|
+
return f'{self.__class__.__name__}({self._acm!r})'
|
91
|
+
|
92
|
+
def __enter__(self) -> T:
|
93
|
+
return sync_await(self._acm.__aenter__())
|
94
|
+
|
95
|
+
def __exit__(self, exc_type, exc_val, exc_tb):
|
96
|
+
return sync_await(self._acm.__aexit__(exc_type, exc_val, exc_tb))
|
97
|
+
|
98
|
+
|
99
|
+
sync_async_context_manager = SyncAsyncContextManager
|
omlish/lang/contextmanagers.py
CHANGED
@@ -20,6 +20,8 @@ T = ta.TypeVar('T')
|
|
20
20
|
K = ta.TypeVar('K')
|
21
21
|
V = ta.TypeVar('V')
|
22
22
|
|
23
|
+
P = ta.ParamSpec('P')
|
24
|
+
|
23
25
|
|
24
26
|
##
|
25
27
|
|
@@ -382,3 +384,24 @@ def double_check_setdefault(
|
|
382
384
|
v = fn()
|
383
385
|
dct[k] = v
|
384
386
|
return v
|
387
|
+
|
388
|
+
|
389
|
+
##
|
390
|
+
|
391
|
+
|
392
|
+
def call_with_exit_stack(
|
393
|
+
fn: ta.Callable[ta.Concatenate[contextlib.ExitStack, P], T],
|
394
|
+
*args: ta.Any,
|
395
|
+
**kwargs: ta.Any,
|
396
|
+
) -> T:
|
397
|
+
with contextlib.ExitStack() as es:
|
398
|
+
return fn(es, *args, **kwargs)
|
399
|
+
|
400
|
+
|
401
|
+
async def call_with_async_exit_stack(
|
402
|
+
fn: ta.Callable[ta.Concatenate[contextlib.AsyncExitStack, P], ta.Awaitable[T]],
|
403
|
+
*args: ta.Any,
|
404
|
+
**kwargs: ta.Any,
|
405
|
+
) -> T:
|
406
|
+
async with contextlib.AsyncExitStack() as aes:
|
407
|
+
return await fn(aes, *args, **kwargs)
|
omlish/lite/asyncs.py
CHANGED
@@ -18,3 +18,24 @@ def as_async(fn: ta.Callable[..., T], *, wrap: bool = False) -> ta.Callable[...,
|
|
18
18
|
return fn(*args, **kwargs)
|
19
19
|
|
20
20
|
return functools.wraps(fn)(inner) if wrap else inner
|
21
|
+
|
22
|
+
|
23
|
+
##
|
24
|
+
|
25
|
+
|
26
|
+
@ta.final
|
27
|
+
class SyncToAsyncContextManager(ta.Generic[T]):
|
28
|
+
def __init__(self, cm: ta.ContextManager[T]) -> None:
|
29
|
+
self._cm = cm
|
30
|
+
|
31
|
+
def __repr__(self) -> str:
|
32
|
+
return f'{self.__class__.__name__}({self._cm!r})'
|
33
|
+
|
34
|
+
async def __aenter__(self) -> T:
|
35
|
+
return self._cm.__enter__()
|
36
|
+
|
37
|
+
async def __aexit__(self, exc_type, exc_value, traceback, /):
|
38
|
+
return self._cm.__exit__(exc_type, exc_value, traceback)
|
39
|
+
|
40
|
+
|
41
|
+
as_async_context_manager = SyncToAsyncContextManager
|
omlish/lite/maysync.py
CHANGED
@@ -523,6 +523,27 @@ def run_maysync(m):
|
|
523
523
|
##
|
524
524
|
|
525
525
|
|
526
|
+
@ta.final
|
527
|
+
class RunMaysyncContextManager(ta.Generic[T]):
|
528
|
+
def __init__(self, acm: ta.AsyncContextManager[T]) -> None:
|
529
|
+
self._acm = acm
|
530
|
+
|
531
|
+
def __repr__(self) -> str:
|
532
|
+
return f'{self.__class__.__name__}({self._acm!r})'
|
533
|
+
|
534
|
+
def __enter__(self) -> T:
|
535
|
+
return run_maysync(self._acm.__aenter__())
|
536
|
+
|
537
|
+
def __exit__(self, exc_type, exc_val, exc_tb):
|
538
|
+
return run_maysync(self._acm.__aexit__(exc_type, exc_val, exc_tb))
|
539
|
+
|
540
|
+
|
541
|
+
run_maysync_context_manager = RunMaysyncContextManager
|
542
|
+
|
543
|
+
|
544
|
+
##
|
545
|
+
|
546
|
+
|
526
547
|
_MAYSYNC_MARK_ATTR = '__maysync__'
|
527
548
|
|
528
549
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: omlish
|
3
|
-
Version: 0.0.0.
|
3
|
+
Version: 0.0.0.dev434
|
4
4
|
Summary: omlish
|
5
5
|
Author: wrmsr
|
6
6
|
License-Expression: BSD-3-Clause
|
@@ -294,9 +294,6 @@ examples are:
|
|
294
294
|
- **pytest** - What is used for all standard testing - as lite code has no dependencies of any kind its testing uses
|
295
295
|
stdlib's [unittest](https://docs.python.org/3/library/unittest.html).
|
296
296
|
- **wrapt** - For (optionally-enabled) injector circular proxies.
|
297
|
-
- **greenlet** - For some gnarly stuff like the
|
298
|
-
[sync<->async bridge](https://github.com/wrmsr/omlish/blob/master/omlish/asyncs/bridge.py) and the
|
299
|
-
[io trampoline](https://github.com/wrmsr/omlish/blob/master/omextra/io/trampoline.py).
|
300
297
|
- **sqlalchemy** - Parts of the codebase use SQLAlchemy for db stuff, but it is being migrated away from in favor of the
|
301
298
|
internal api. It will however likely still remain as an optional dep for the api adapter.
|
302
299
|
|
@@ -1,5 +1,5 @@
|
|
1
1
|
omlish/.omlish-manifests.json,sha256=FLw7xkPiSXuImZgqSP8BwrEib2R1doSzUPLUkc-QUIA,8410
|
2
|
-
omlish/__about__.py,sha256=
|
2
|
+
omlish/__about__.py,sha256=m7yiLBUWx0CVlaZfQTSqMs9tncfitfDQ8RfhF4ieLow,3575
|
3
3
|
omlish/__init__.py,sha256=SsyiITTuK0v74XpKV8dqNaCmjOlan1JZKrHQv5rWKPA,253
|
4
4
|
omlish/c3.py,sha256=ZNIMl1kwg3qdei4DiUrJPQe5M81S1e76N-GuNSwLBAE,8683
|
5
5
|
omlish/cached.py,sha256=MLap_p0rdGoDIMVhXVHm1tsbcWobJF0OanoodV03Ju8,542
|
@@ -19,13 +19,11 @@ omlish/argparse/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
19
19
|
omlish/argparse/all.py,sha256=NeeMM5MIebY7XDAHaCxUzeesEoUYwsf5i9PrBUcO1cI,1057
|
20
20
|
omlish/argparse/cli.py,sha256=60cfq_WFLwL3YsIQxGAQ7XDi-LzNjH33RavcKdRnhUU,8737
|
21
21
|
omlish/asyncs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
22
|
-
omlish/asyncs/all.py,sha256=
|
23
|
-
omlish/asyncs/bridge.py,sha256=BPwEeiv3iG0uMk23PIWFkdGLyiBq_x3qnzheV7ysOqY,10129
|
22
|
+
omlish/asyncs/all.py,sha256=zE9zBNepDSczQ-QhnzwFz59IZIex3HuUqfKIgwbJLgY,329
|
24
23
|
omlish/asyncs/buffers.py,sha256=_Ds4Aa1bUWQwQTGmcYsKLjcJ_d5HgbSkPTFrG9y-eMQ,1424
|
25
24
|
omlish/asyncs/flavors.py,sha256=1mNxGNRVmjUHzA13K5ht8vdJv4CLEmzYTQ6BZXr1520,4866
|
26
25
|
omlish/asyncs/trio.py,sha256=fmZ5b_lKdVV8NQ3euCUutWgnkqTFzSnOjvJSA_jvmrE,367
|
27
26
|
omlish/asyncs/trio_asyncio.py,sha256=b6H5H32pB79Uz5xvWEmuhXTJgTAeKFHBHzocv_Rpt5A,1332
|
28
|
-
omlish/asyncs/utils.py,sha256=-oaa6nheDxMOxVDTfRylWZGlyOja3UVJEV2IibJXQv4,369
|
29
27
|
omlish/asyncs/anyio/__init__.py,sha256=AkwRD3XFWmEzBeHV-eAzwpA4F04bl7xyyapigrxMR8g,1747
|
30
28
|
omlish/asyncs/anyio/backends.py,sha256=jJIymWoiedaEJJm82gvKiJ41EWLQZ-bcyNHpbDpKKi4,1584
|
31
29
|
omlish/asyncs/anyio/futures.py,sha256=Nm1gLerZEnHk-rlsmr0UfK168IWIK6zA8EebZFtoY_E,2052
|
@@ -350,38 +348,43 @@ omlish/http/coro/server/fdio.py,sha256=qZE4g5y4XESsTObSKyVggI-yzig57gSGJb4Z0rcHv
|
|
350
348
|
omlish/http/coro/server/server.py,sha256=lkpcx4cb0mwDFYpP3MvW6mX0_1fKXUI8snm_bycyUwo,18681
|
351
349
|
omlish/http/coro/server/simple.py,sha256=j1RZ3niKrgGM2qFnjdYWn_eniZzay5j49Ca4L3u8vO4,3296
|
352
350
|
omlish/http/coro/server/sockets.py,sha256=24gU6wpIZuzYWKQD8UsHyYfTZlbcUFvkqXq5KVgWpQo,2261
|
353
|
-
omlish/inject/__init__.py,sha256=
|
354
|
-
omlish/inject/binder.py,sha256=
|
351
|
+
omlish/inject/__init__.py,sha256=1s_2338tLi2VWKy8HijBSkAlkanVY1uZ8iZec8SOEws,2929
|
352
|
+
omlish/inject/binder.py,sha256=_TNPGcqtaVqCLoxMx2LBVSvZWmAUs4JcxAqnCpy7PG0,5253
|
355
353
|
omlish/inject/bindings.py,sha256=PlvOnUREjvc6F8nOJdzl1k9SAf80icRB4qWFqDop87M,536
|
356
354
|
omlish/inject/eagers.py,sha256=JBY7PcjXt-Rg9scQ1ol9xpcoTLXkXC_Ie9uwTWdzUkA,340
|
357
355
|
omlish/inject/elements.py,sha256=y4luEO_-eOlVnLcUDiNGSyMXee4pusl46ZGr0JFhbcY,1405
|
358
356
|
omlish/inject/errors.py,sha256=_wkN2tF55gQzmMOMKJC_9jYHBZzaBiCDcyqI9Sf2UZs,626
|
359
|
-
omlish/inject/injector.py,sha256=
|
360
|
-
omlish/inject/inspect.py,sha256=
|
357
|
+
omlish/inject/injector.py,sha256=j78j4ArahsY_C3vgOIhzv29pDjp0o97yvmxHIr7jk2E,1125
|
358
|
+
omlish/inject/inspect.py,sha256=FWGEtxiFV_Sqqza9xnbYm4JgV2LE4D0s5iszV9Nd5_M,547
|
361
359
|
omlish/inject/keys.py,sha256=7jnI2cw7cvLlzZAfe5SC50O3oPOpOB6iGZGTigyfQvs,682
|
362
|
-
omlish/inject/listeners.py,sha256=
|
360
|
+
omlish/inject/listeners.py,sha256=bav7-uzfpajFAmH_snM0PW2oCfMavmhbE6R4-gjOmJ8,620
|
363
361
|
omlish/inject/lite.py,sha256=AFOCj_SznDCPjkiVSKdFXL2hH1q2o4kaDnzkxRWDpsI,2615
|
364
|
-
omlish/inject/managed.py,sha256
|
362
|
+
omlish/inject/managed.py,sha256=DKU4f_-20TXM51zrGU2XP-IX6Pzg8H9JfVJTIZH_-T8,2930
|
363
|
+
omlish/inject/maysync.py,sha256=xsVl2p-urkflKTFVQW86c3BJ6bnNeJrWC-u-UcSF1gU,441
|
365
364
|
omlish/inject/multis.py,sha256=Dn63jE8P5ahSKc1IDBdzzx6ByBCgVOth5t4frG9m4UA,3336
|
366
365
|
omlish/inject/origins.py,sha256=-qXa18rIIkNwBdTrvASRDjgPYnoY6n6OPC222jJDrXg,551
|
367
366
|
omlish/inject/overrides.py,sha256=ybEcq9cDf6kvqu5mqnwi6Evj0MFjKNeE3r0oUlGw5E4,546
|
368
367
|
omlish/inject/privates.py,sha256=CyE-hvQ-F_uyCzcwfdiYVtfm9IF1WZvMDOYilFyZmWk,658
|
369
|
-
omlish/inject/providers.py,sha256=
|
370
|
-
omlish/inject/scopes.py,sha256=
|
368
|
+
omlish/inject/providers.py,sha256=Usvi0YgjS5jrAqQFhzeU2artxRSTM4zIoz72lac1PEA,931
|
369
|
+
omlish/inject/scopes.py,sha256=p1uOUMtlzhIWH0HC08HCIxeWYIHb2i9O-Rhgzp32Csw,2576
|
370
|
+
omlish/inject/sync.py,sha256=c60h6CSzk4XDOy4peZ9BuJypsp-OTFh_ZnF50LmxMTg,1007
|
371
371
|
omlish/inject/tags.py,sha256=gRDLa-WdZc9DC7KwwmoIPAi8g_qdGpRWuMT7HCd7CL0,433
|
372
372
|
omlish/inject/types.py,sha256=Z-ZEdgtCpHBNrbxxKaMVvfeD7hYXdL4rC7A9_VGxZ6g,256
|
373
373
|
omlish/inject/utils.py,sha256=Gc2qq45KgkyqDt03WSvOEZBCiuqQ6ESwplx5ZRBcY5M,413
|
374
374
|
omlish/inject/impl/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
375
375
|
omlish/inject/impl/bindings.py,sha256=xSvUcoDz8NH-aNHPwBPEZsFg73K2WcF_A63npVbGt_k,420
|
376
|
-
omlish/inject/impl/elements.py,sha256=
|
377
|
-
omlish/inject/impl/injector.py,sha256=
|
378
|
-
omlish/inject/impl/inspect.py,sha256=
|
379
|
-
omlish/inject/impl/
|
376
|
+
omlish/inject/impl/elements.py,sha256=5wb_JCyfEKrJ1Y6TIZVS-gwgmLTZIUXZ_TV735RKcEM,5901
|
377
|
+
omlish/inject/impl/injector.py,sha256=0e8Il9ObzWMDBJDLQk9RRBkK83mk-nIRlKU_LtmQfLI,8266
|
378
|
+
omlish/inject/impl/inspect.py,sha256=HLhz5DfP9dwvbIYnwqsfR9ADjCoWs9q4Gh7J4BpImf4,3135
|
379
|
+
omlish/inject/impl/maysync.py,sha256=7GWjrvJStOx85BCvk8IJAmmkoGkChFAAi2h7j2pe6Qs,1207
|
380
|
+
omlish/inject/impl/multis.py,sha256=fa31UdkBYdAulfYdrkU1klDZicuQRyaBDbG28kaw8SI,2092
|
380
381
|
omlish/inject/impl/origins.py,sha256=dgGdkoMN6I4DZrWjlpZYijeFsrF6Up1WPq_QSAgTtuQ,1676
|
381
|
-
omlish/inject/impl/privates.py,sha256=
|
382
|
-
omlish/inject/impl/providers.py,sha256=
|
382
|
+
omlish/inject/impl/privates.py,sha256=uxMAl0MOPu-MeLd-q1DySu7J5FcdRVL1B0XgC4dnB6I,2667
|
383
|
+
omlish/inject/impl/providers.py,sha256=qqPUF9qZZ-CGTTc7ZPskjexM2aK8xdY0gLPMshB5VKw,2127
|
384
|
+
omlish/inject/impl/providers2.py,sha256=NOIbX_sTAL8uXf-lMoOiFTFZQMe6ywLU7nIghgF_ISw,1326
|
383
385
|
omlish/inject/impl/proxy.py,sha256=S1qNn-5pbsAj9hhasQZ9nnFSCX8SuAYCcBOZ6BtKxlk,1641
|
384
|
-
omlish/inject/impl/scopes.py,sha256=
|
386
|
+
omlish/inject/impl/scopes.py,sha256=5AMVzO9HgJT7yNwBCG2us9pUxQZpySsalb0qI2ZMeJ4,5876
|
387
|
+
omlish/inject/impl/sync.py,sha256=v0FrcMfEFIT358AmAuERvzJ3o19r6DLZj6_0hjuW5Dk,1090
|
385
388
|
omlish/io/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
386
389
|
omlish/io/abc.py,sha256=M40QB2udYpCEqmlxCcHv6FlJYJY6ymmJQBlaklYv0U8,1256
|
387
390
|
omlish/io/buffers.py,sha256=WRuojN-EICJ9eIhy6U2Tw2-oTBIwHTBhN86wQiD2s88,7293
|
@@ -415,14 +418,14 @@ omlish/iterators/iterators.py,sha256=RxW35yQ5ed8vBQ22IqpDXFx-i5JiLQdp7-pkMZXhJJ8
|
|
415
418
|
omlish/iterators/recipes.py,sha256=wOwOZg-zWG9Zc3wcAxJFSe2rtavVBYwZOfG09qYEx_4,472
|
416
419
|
omlish/iterators/tools.py,sha256=M16LXrJhMdsz5ea2qH0vws30ZvhQuQSCVFSLpRf_gTg,2096
|
417
420
|
omlish/iterators/unique.py,sha256=BSE-eanva8byFCJi09Nt2zzTsVr8LnTqY1PIInGYRs0,1396
|
418
|
-
omlish/lang/__init__.py,sha256=
|
419
|
-
omlish/lang/asyncs.py,sha256=
|
421
|
+
omlish/lang/__init__.py,sha256=HqVWUkrUArOsjGoWrL-Ck6Zz2U6kKpj2DzbpHed-k1o,10431
|
422
|
+
omlish/lang/asyncs.py,sha256=LV_4I3-WbLY8-SUXYJvKlzfL-Hd5ASFOlyPi3uMJYJk,2266
|
420
423
|
omlish/lang/attrstorage.py,sha256=UUnoENCMQF3twBfxBcIKa5mpXsAxWnNYDayhU8xgmpU,5224
|
421
424
|
omlish/lang/casing.py,sha256=3_c7cxQOc4z_YezaU2B4NCTAsPh_kDL4wUTK5kZU6kg,4675
|
422
425
|
omlish/lang/clsdct.py,sha256=HAGIvBSbCefzRjXriwYSBLO7QHKRv2UsE78jixOb-fA,1828
|
423
426
|
omlish/lang/collections.py,sha256=kVMp1JJ6ycvKzuiOmf2ZF5Eg2mm3vJGPjkUcV_IACMk,2528
|
424
427
|
omlish/lang/comparison.py,sha256=MOwEG0Yny-jBPHO9kQto9FSRyeNpQW24UABsghkrHxY,1356
|
425
|
-
omlish/lang/contextmanagers.py,sha256=
|
428
|
+
omlish/lang/contextmanagers.py,sha256=jkQ9YHhQySYHPH0BrWxBrNzMuG7IpSWcPvcdfMIBE4A,9578
|
426
429
|
omlish/lang/datetimes.py,sha256=01tg21QOx-PWDlm-CSFTalym3vpqF0EKzeinmtcVNoU,379
|
427
430
|
omlish/lang/descriptors.py,sha256=sVJ1Pr4ihp26Tu9UCvDSyfSf-DhBnFGnbpYIFF32c7g,6877
|
428
431
|
omlish/lang/enums.py,sha256=F9tflHfaAoV2MpyuhZzpfX9-H55M3zNa9hCszsngEo8,111
|
@@ -473,7 +476,7 @@ omlish/lifecycles/transitions.py,sha256=3IFdWGtAeoy3XRlIyW7yCKV4e4Iof9ytkqklGMRF
|
|
473
476
|
omlish/lite/__init__.py,sha256=cyZEpGob7XjU8DohyNxVe5CQRk4CQ5vrHL42OdhQb8w,148
|
474
477
|
omlish/lite/abstract.py,sha256=Z3kLviPNGLkmA8m8BZILzWxez_sP18OyzgMP3-c2-RI,4068
|
475
478
|
omlish/lite/args.py,sha256=ILJXAiN3KjIoJwY42aKpYPngUdxHIy9ssVIExFVz3fE,978
|
476
|
-
omlish/lite/asyncs.py,sha256=
|
479
|
+
omlish/lite/asyncs.py,sha256=sTXTUTTVI8m1a1P6NxObQKk-NFKlmpcnNbucr4Fg-NU,937
|
477
480
|
omlish/lite/attrops.py,sha256=bUa2ILC4Z89-B1IWSac9XV_VvjKDnQXKDR0mZ6e9SMk,8764
|
478
481
|
omlish/lite/cached.py,sha256=ocQcppTwGdSnKPYMz75VoH526UUT8YtDJeRczBX0-wI,1306
|
479
482
|
omlish/lite/check.py,sha256=ytCkwZoKfOlJqylL-AGm8C2WfsWJd2q3kFbnZCzX3_M,13844
|
@@ -485,7 +488,7 @@ omlish/lite/inject.py,sha256=Z0d3dnjxt9czMFwWk_y-Yl7yItCUa5Nf1YRu4GkMA5k,29045
|
|
485
488
|
omlish/lite/json.py,sha256=m0Ce9eqUZG23-H7-oOp8n1sf4fzno5vtK4AK_4Vc-Mg,706
|
486
489
|
omlish/lite/marshal.py,sha256=J0VNr9_LjGLjxKW0wlZtIFnh_US7zwstCmtpe9Pk_D0,22969
|
487
490
|
omlish/lite/maybes.py,sha256=NusCpK0FVqkIutw6_Wldn69G5VyKYhat7SegBIQmGpk,4412
|
488
|
-
omlish/lite/maysync.py,sha256=
|
491
|
+
omlish/lite/maysync.py,sha256=NiltEfX_mc7jWgWZ9XAqkDzMlLVprTAZvXRObXJT_IE,14926
|
489
492
|
omlish/lite/objects.py,sha256=HzN_4J6w6WDLKDrW8jSNUKgfAR5vUsB42rtSCu04oqQ,1921
|
490
493
|
omlish/lite/pycharm.py,sha256=FRHGcCDo42UzZXqNwW_DkhI-6kb_CmJKPiQ8F6mYkLA,1174
|
491
494
|
omlish/lite/reflect.py,sha256=aTRQJ-hgnyRxr0dFxivUTScmUgP7zcw_iDQZIsarG24,2119
|
@@ -894,9 +897,9 @@ omlish/typedvalues/marshal.py,sha256=AtBz7Jq-BfW8vwM7HSxSpR85JAXmxK2T0xDblmm1HI0
|
|
894
897
|
omlish/typedvalues/of_.py,sha256=UXkxSj504WI2UrFlqdZJbu2hyDwBhL7XVrc2qdR02GQ,1309
|
895
898
|
omlish/typedvalues/reflect.py,sha256=PAvKW6T4cW7u--iX80w3HWwZUS3SmIZ2_lQjT65uAyk,1026
|
896
899
|
omlish/typedvalues/values.py,sha256=ym46I-q2QJ_6l4UlERqv3yj87R-kp8nCKMRph0xQ3UA,1307
|
897
|
-
omlish-0.0.0.
|
898
|
-
omlish-0.0.0.
|
899
|
-
omlish-0.0.0.
|
900
|
-
omlish-0.0.0.
|
901
|
-
omlish-0.0.0.
|
902
|
-
omlish-0.0.0.
|
900
|
+
omlish-0.0.0.dev434.dist-info/licenses/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
|
901
|
+
omlish-0.0.0.dev434.dist-info/METADATA,sha256=fQJYAY6N-2PAgl3mzD4PjfFG_SymockqND184l4ForI,19005
|
902
|
+
omlish-0.0.0.dev434.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
903
|
+
omlish-0.0.0.dev434.dist-info/entry_points.txt,sha256=Lt84WvRZJskWCAS7xnQGZIeVWksprtUHj0llrvVmod8,35
|
904
|
+
omlish-0.0.0.dev434.dist-info/top_level.txt,sha256=pePsKdLu7DvtUiecdYXJ78iO80uDNmBlqe-8hOzOmfs,7
|
905
|
+
omlish-0.0.0.dev434.dist-info/RECORD,,
|