omlish 0.0.0.dev43__tar.gz → 0.0.0.dev45__tar.gz
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-0.0.0.dev43/omlish.egg-info → omlish-0.0.0.dev45}/PKG-INFO +1 -1
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/__about__.py +2 -2
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/argparse.py +31 -1
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/lang/descriptors.py +2 -2
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/reflect/__init__.py +1 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/reflect/types.py +18 -8
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/specs/__init__.py +2 -1
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45/omlish.egg-info}/PKG-INFO +1 -1
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/pyproject.toml +1 -1
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/LICENSE +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/MANIFEST.in +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/README.rst +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/.manifests.json +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/__init__.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/asyncs/__init__.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/asyncs/anyio.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/asyncs/asyncio.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/asyncs/asyncs.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/asyncs/bridge.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/asyncs/flavors.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/asyncs/trio.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/asyncs/trio_asyncio.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/bootstrap/__init__.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/bootstrap/__main__.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/bootstrap/base.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/bootstrap/diag.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/bootstrap/harness.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/bootstrap/main.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/bootstrap/marshal.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/bootstrap/sys.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/c3.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/cached.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/check.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/collections/__init__.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/collections/_abc.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/collections/_io_abc.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/collections/cache/__init__.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/collections/cache/descriptor.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/collections/cache/impl.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/collections/cache/types.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/collections/coerce.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/collections/exceptions.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/collections/frozen.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/collections/identity.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/collections/indexed.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/collections/mappings.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/collections/ordered.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/collections/persistent.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/collections/skiplist.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/collections/sorted.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/collections/treap.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/collections/treapmap.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/collections/unmodifiable.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/collections/utils.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/concurrent/__init__.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/concurrent/executors.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/concurrent/futures.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/concurrent/threadlets.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/configs/__init__.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/configs/classes.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/configs/flattening.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/configs/strings.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/dataclasses/__init__.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/dataclasses/impl/LICENSE +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/dataclasses/impl/__init__.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/dataclasses/impl/api.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/dataclasses/impl/as_.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/dataclasses/impl/copy.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/dataclasses/impl/descriptors.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/dataclasses/impl/exceptions.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/dataclasses/impl/fields.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/dataclasses/impl/frozen.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/dataclasses/impl/hashing.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/dataclasses/impl/init.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/dataclasses/impl/internals.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/dataclasses/impl/main.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/dataclasses/impl/metaclass.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/dataclasses/impl/metadata.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/dataclasses/impl/order.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/dataclasses/impl/params.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/dataclasses/impl/processing.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/dataclasses/impl/reflect.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/dataclasses/impl/replace.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/dataclasses/impl/repr.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/dataclasses/impl/simple.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/dataclasses/impl/slots.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/dataclasses/impl/utils.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/dataclasses/utils.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/datetimes.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/defs.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/diag/__init__.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/diag/asts.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/diag/procfs.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/diag/procstats.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/diag/ps.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/diag/pycharm.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/diag/pydevd.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/diag/replserver/__init__.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/diag/replserver/__main__.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/diag/replserver/console.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/diag/replserver/server.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/diag/threads.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/dispatch/__init__.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/dispatch/_dispatch2.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/dispatch/_dispatch3.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/dispatch/dispatch.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/dispatch/functions.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/dispatch/methods.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/docker/__init__.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/docker/cli.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/docker/compose.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/docker/helpers.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/docker/hub.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/docker/manifests.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/dynamic.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/fnpairs.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/fnpipes.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/formats/__init__.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/formats/dotenv.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/formats/json.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/formats/props.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/formats/yaml.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/genmachine.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/graphs/__init__.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/graphs/dags.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/graphs/domination.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/graphs/dot/__init__.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/graphs/dot/items.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/graphs/dot/make.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/graphs/dot/rendering.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/graphs/dot/utils.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/graphs/trees.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/http/__init__.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/http/asgi.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/http/collections.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/http/consts.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/http/cookies.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/http/dates.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/http/encodings.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/http/json.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/http/sessions.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/http/wsgi.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/inject/__init__.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/inject/binder.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/inject/bindings.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/inject/eagers.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/inject/elements.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/inject/exceptions.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/inject/impl/__init__.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/inject/impl/bindings.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/inject/impl/elements.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/inject/impl/injector.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/inject/impl/inspect.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/inject/impl/multis.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/inject/impl/origins.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/inject/impl/privates.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/inject/impl/providers.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/inject/impl/proxy.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/inject/impl/scopes.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/inject/injector.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/inject/inspect.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/inject/keys.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/inject/listeners.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/inject/managed.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/inject/multis.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/inject/origins.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/inject/overrides.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/inject/privates.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/inject/providers.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/inject/scopes.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/inject/types.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/inject/utils.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/iterators.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/lang/__init__.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/lang/cached.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/lang/classes/__init__.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/lang/classes/abstract.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/lang/classes/restrict.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/lang/classes/simple.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/lang/classes/virtual.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/lang/clsdct.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/lang/cmp.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/lang/contextmanagers.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/lang/datetimes.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/lang/exceptions.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/lang/functions.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/lang/imports.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/lang/iterables.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/lang/maybes.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/lang/objects.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/lang/resolving.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/lang/resources.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/lang/strings.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/lang/sys.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/lang/timeouts.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/lang/typing.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/libc.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/lifecycles/__init__.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/lifecycles/abstract.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/lifecycles/base.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/lifecycles/contextmanagers.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/lifecycles/controller.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/lifecycles/manager.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/lifecycles/states.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/lifecycles/transitions.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/lite/__init__.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/lite/cached.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/lite/check.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/lite/contextmanagers.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/lite/json.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/lite/logs.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/lite/marshal.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/lite/reflect.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/lite/runtime.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/lite/secrets.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/lite/strings.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/lite/subprocesses.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/logs/__init__.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/logs/_abc.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/logs/configs.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/logs/formatters.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/logs/handlers.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/logs/noisy.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/logs/utils.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/marshal/__init__.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/marshal/any.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/marshal/base.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/marshal/base64.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/marshal/dataclasses.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/marshal/datetimes.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/marshal/enums.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/marshal/exceptions.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/marshal/factories.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/marshal/forbidden.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/marshal/global_.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/marshal/helpers.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/marshal/iterables.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/marshal/mappings.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/marshal/maybes.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/marshal/naming.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/marshal/numbers.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/marshal/objects.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/marshal/optionals.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/marshal/polymorphism.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/marshal/primitives.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/marshal/registries.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/marshal/standard.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/marshal/unions.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/marshal/utils.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/marshal/uuids.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/marshal/values.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/matchfns.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/math/__init__.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/math/bits.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/math/floats.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/math/stats.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/multiprocessing.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/os.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/reflect/isinstance.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/reflect/ops.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/reflect/subst.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/runmodule.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/secrets/__init__.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/secrets/crypto.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/secrets/marshal.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/secrets/openssl.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/secrets/passwords.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/secrets/secrets.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/secrets/subprocesses.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/specs/jsonrpc/__init__.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/specs/jsonrpc/errors.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/specs/jsonrpc/marshal.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/specs/jsonrpc/types.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/specs/jsonschema/__init__.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/specs/jsonschema/keywords/__init__.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/specs/jsonschema/keywords/base.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/specs/jsonschema/keywords/core.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/specs/jsonschema/keywords/metadata.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/specs/jsonschema/keywords/parse.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/specs/jsonschema/keywords/render.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/specs/jsonschema/keywords/validation.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/specs/jsonschema/schemas/__init__.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/specs/jsonschema/schemas/draft202012/__init__.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/specs/jsonschema/schemas/draft202012/metaschema.json +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/specs/jsonschema/schemas/draft202012/vocabularies/__init__.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/specs/jsonschema/schemas/draft202012/vocabularies/applicator.json +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/specs/jsonschema/schemas/draft202012/vocabularies/content.json +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/specs/jsonschema/schemas/draft202012/vocabularies/core.json +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/specs/jsonschema/schemas/draft202012/vocabularies/format-annotation.json +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/specs/jsonschema/schemas/draft202012/vocabularies/format-assertion.json +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/specs/jsonschema/schemas/draft202012/vocabularies/format.json +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/specs/jsonschema/schemas/draft202012/vocabularies/meta-data.json +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/specs/jsonschema/schemas/draft202012/vocabularies/unevaluated.json +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/specs/jsonschema/schemas/draft202012/vocabularies/validation.json +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/specs/jsonschema/types.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/specs/openapi/__init__.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/specs/openapi/marshal.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/specs/openapi/openapi.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/sql/__init__.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/sql/_abc.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/sql/alchemy/__init__.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/sql/alchemy/asyncs.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/sql/alchemy/duckdb.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/sql/alchemy/exprs.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/sql/alchemy/secrets.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/sql/alchemy/sqlean.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/sql/dbs.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/sql/qualifiedname.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/sync.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/term.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/testing/__init__.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/testing/pytest/__init__.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/testing/pytest/helpers.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/testing/pytest/inject/__init__.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/testing/pytest/inject/harness.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/testing/pytest/marks.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/testing/pytest/plugins/__init__.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/testing/pytest/plugins/_registry.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/testing/pytest/plugins/asyncs.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/testing/pytest/plugins/depskip.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/testing/pytest/plugins/logging.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/testing/pytest/plugins/managermarks.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/testing/pytest/plugins/pydevd.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/testing/pytest/plugins/repeat.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/testing/pytest/plugins/skips.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/testing/pytest/plugins/spacing.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/testing/pytest/plugins/switches.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/testing/pytest/plugins/utils.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/testing/pytest/skip.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/testing/testing.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/text/__init__.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/text/asdl.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/text/delimit.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/text/glyphsplit.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/text/indent.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish/text/parts.py +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish.egg-info/SOURCES.txt +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish.egg-info/dependency_links.txt +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish.egg-info/entry_points.txt +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish.egg-info/requires.txt +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/omlish.egg-info/top_level.txt +0 -0
- {omlish-0.0.0.dev43 → omlish-0.0.0.dev45}/setup.cfg +0 -0
@@ -16,6 +16,9 @@ from . import check
|
|
16
16
|
T = ta.TypeVar('T')
|
17
17
|
|
18
18
|
|
19
|
+
##
|
20
|
+
|
21
|
+
|
19
22
|
SUPPRESS = argparse.SUPPRESS
|
20
23
|
|
21
24
|
OPTIONAL = argparse.OPTIONAL
|
@@ -45,6 +48,9 @@ Namespace = argparse.Namespace
|
|
45
48
|
ArgumentParser = argparse.ArgumentParser
|
46
49
|
|
47
50
|
|
51
|
+
##
|
52
|
+
|
53
|
+
|
48
54
|
@dc.dataclass(eq=False)
|
49
55
|
class Arg:
|
50
56
|
args: ta.Sequence[ta.Any]
|
@@ -61,6 +67,9 @@ def arg(*args, **kwargs) -> Arg:
|
|
61
67
|
return Arg(args, kwargs)
|
62
68
|
|
63
69
|
|
70
|
+
#
|
71
|
+
|
72
|
+
|
64
73
|
CommandFn = ta.Callable[[], None]
|
65
74
|
|
66
75
|
|
@@ -70,6 +79,7 @@ class Command:
|
|
70
79
|
fn: CommandFn
|
71
80
|
args: ta.Sequence[Arg] = ()
|
72
81
|
parent: ta.Optional['Command'] = None
|
82
|
+
accepts_unknown: bool = False
|
73
83
|
|
74
84
|
def __post_init__(self) -> None:
|
75
85
|
check.isinstance(self.name, str)
|
@@ -79,6 +89,7 @@ class Command:
|
|
79
89
|
check.callable(self.fn)
|
80
90
|
check.arg(all(isinstance(a, Arg) for a in self.args))
|
81
91
|
check.isinstance(self.parent, (Command, None))
|
92
|
+
check.isinstance(self.accepts_unknown, bool)
|
82
93
|
|
83
94
|
functools.update_wrapper(self, self.fn)
|
84
95
|
|
@@ -95,6 +106,7 @@ def command(
|
|
95
106
|
*args: Arg,
|
96
107
|
name: str | None = None,
|
97
108
|
parent: Command | None = None,
|
109
|
+
accepts_unknown: bool = False,
|
98
110
|
) -> ta.Any: # ta.Callable[[CommandFn], Command]: # FIXME
|
99
111
|
for arg in args:
|
100
112
|
check.isinstance(arg, Arg)
|
@@ -107,11 +119,15 @@ def command(
|
|
107
119
|
fn,
|
108
120
|
args,
|
109
121
|
parent=parent,
|
122
|
+
accepts_unknown=accepts_unknown,
|
110
123
|
)
|
111
124
|
|
112
125
|
return inner
|
113
126
|
|
114
127
|
|
128
|
+
##
|
129
|
+
|
130
|
+
|
115
131
|
def get_arg_ann_kwargs(ann: ta.Any) -> ta.Mapping[str, ta.Any]:
|
116
132
|
if ann is str:
|
117
133
|
return {}
|
@@ -197,7 +213,8 @@ class Cli(metaclass=_CliMeta):
|
|
197
213
|
super().__init__()
|
198
214
|
|
199
215
|
self._argv = argv if argv is not None else sys.argv[1:]
|
200
|
-
|
216
|
+
|
217
|
+
self._args, self._unknown_args = self.get_parser().parse_known_args(self._argv)
|
201
218
|
|
202
219
|
_parser: ta.ClassVar[ArgumentParser]
|
203
220
|
|
@@ -213,12 +230,25 @@ class Cli(metaclass=_CliMeta):
|
|
213
230
|
def args(self) -> Namespace:
|
214
231
|
return self._args
|
215
232
|
|
233
|
+
@property
|
234
|
+
def unknown_args(self) -> ta.Sequence[str]:
|
235
|
+
return self._unknown_args
|
236
|
+
|
216
237
|
def _run_cmd(self, cmd: Command) -> None:
|
217
238
|
cmd.__get__(self, type(self))()
|
218
239
|
|
219
240
|
def __call__(self) -> None:
|
220
241
|
cmd = getattr(self.args, '_cmd', None)
|
242
|
+
|
243
|
+
if self._unknown_args and not (cmd is not None and cmd.accepts_unknown):
|
244
|
+
msg = f'unrecognized arguments: {" ".join(self._unknown_args)}'
|
245
|
+
if (parser := self.get_parser()).exit_on_error: # type: ignore
|
246
|
+
parser.error(msg)
|
247
|
+
else:
|
248
|
+
raise ArgumentError(None, msg)
|
249
|
+
|
221
250
|
if cmd is None:
|
222
251
|
self.get_parser().print_help()
|
223
252
|
return
|
253
|
+
|
224
254
|
self._run_cmd(cmd)
|
@@ -220,8 +220,8 @@ class AccessForbiddenDescriptor:
|
|
220
220
|
raise AccessForbiddenError(self._name)
|
221
221
|
|
222
222
|
|
223
|
-
def access_forbidden(): # noqa
|
224
|
-
return AccessForbiddenDescriptor()
|
223
|
+
def access_forbidden(name=None): # noqa
|
224
|
+
return AccessForbiddenDescriptor(name)
|
225
225
|
|
226
226
|
|
227
227
|
##
|
@@ -61,6 +61,17 @@ _KNOWN_SPECIAL_TYPE_VARS = tuple(
|
|
61
61
|
##
|
62
62
|
|
63
63
|
|
64
|
+
_SIMPLE_GENERIC_ALIAS_TYPES: set[type] = set()
|
65
|
+
|
66
|
+
|
67
|
+
def is_simple_generic_alias_type(oty: type) -> bool:
|
68
|
+
return (
|
69
|
+
oty is _GenericAlias or
|
70
|
+
oty is ta.GenericAlias or # type: ignore # noqa
|
71
|
+
oty in _SIMPLE_GENERIC_ALIAS_TYPES
|
72
|
+
)
|
73
|
+
|
74
|
+
|
64
75
|
def get_params(obj: ta.Any) -> tuple[ta.TypeVar, ...]:
|
65
76
|
if isinstance(obj, type):
|
66
77
|
if issubclass(obj, ta.Generic): # type: ignore
|
@@ -71,10 +82,7 @@ def get_params(obj: ta.Any) -> tuple[ta.TypeVar, ...]:
|
|
71
82
|
|
72
83
|
oty = type(obj)
|
73
84
|
|
74
|
-
if (
|
75
|
-
oty is _GenericAlias or
|
76
|
-
oty is ta.GenericAlias # type: ignore # noqa
|
77
|
-
):
|
85
|
+
if is_simple_generic_alias_type(oty):
|
78
86
|
return obj.__dict__.get('__parameters__', ()) # noqa
|
79
87
|
|
80
88
|
if oty is _CallableGenericAlias:
|
@@ -91,6 +99,10 @@ def is_union_type(cls: ta.Any) -> bool:
|
|
91
99
|
return ta.get_origin(cls) in {ta.Union}
|
92
100
|
|
93
101
|
|
102
|
+
def get_orig_bases(obj: ta.Any) -> ta.Any:
|
103
|
+
return obj.__orig_bases__ # noqa
|
104
|
+
|
105
|
+
|
94
106
|
def get_orig_class(obj: ta.Any) -> ta.Any:
|
95
107
|
return obj.__orig_class__ # noqa
|
96
108
|
|
@@ -195,8 +207,7 @@ def is_type(obj: ta.Any) -> bool:
|
|
195
207
|
isinstance(obj, ta.NewType) or # noqa
|
196
208
|
|
197
209
|
(
|
198
|
-
oty
|
199
|
-
oty is ta.GenericAlias or # type: ignore # noqa
|
210
|
+
is_simple_generic_alias_type(oty) or
|
200
211
|
oty is _CallableGenericAlias
|
201
212
|
) or
|
202
213
|
|
@@ -222,8 +233,7 @@ def type_(obj: ta.Any) -> Type:
|
|
222
233
|
return NewType(obj)
|
223
234
|
|
224
235
|
if (
|
225
|
-
oty
|
226
|
-
oty is ta.GenericAlias or # type: ignore # noqa
|
236
|
+
is_simple_generic_alias_type(oty) or
|
227
237
|
oty is _CallableGenericAlias
|
228
238
|
):
|
229
239
|
origin = ta.get_origin(obj)
|
@@ -12,7 +12,7 @@ authors = [
|
|
12
12
|
urls = {source = 'https://github.com/wrmsr/omlish'}
|
13
13
|
license = {text = 'BSD-3-Clause'}
|
14
14
|
requires-python = '~=3.12'
|
15
|
-
version = '0.0.0.
|
15
|
+
version = '0.0.0.dev45'
|
16
16
|
classifiers = [
|
17
17
|
'License :: OSI Approved :: BSD License',
|
18
18
|
'Development Status :: 2 - Pre-Alpha',
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|