omlish 0.0.0.dev151__tar.gz → 0.0.0.dev153__tar.gz
Sign up to get free protection for your applications and to get access to all the features.
- {omlish-0.0.0.dev151/omlish.egg-info → omlish-0.0.0.dev153}/PKG-INFO +1 -1
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/__about__.py +2 -2
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/argparse/cli.py +54 -13
- omlish-0.0.0.dev153/omlish/asyncs/asyncio/all.py +7 -0
- omlish-0.0.0.dev153/omlish/asyncs/asyncio/channels.py +40 -0
- omlish-0.0.0.dev151/omlish/lite/asyncio/asyncio.py → omlish-0.0.0.dev153/omlish/asyncs/asyncio/streams.py +2 -20
- omlish-0.0.0.dev153/omlish/asyncs/asyncio/timeouts.py +16 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/bootstrap/sys.py +2 -2
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/diag/procfs.py +8 -8
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/inject/managed.py +2 -2
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/lite/asyncio/subprocesses.py +16 -8
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/lite/subprocesses.py +1 -1
- {omlish-0.0.0.dev151/omlish/lite → omlish-0.0.0.dev153/omlish/os}/deathsig.py +1 -0
- omlish-0.0.0.dev151/omlish/os.py → omlish-0.0.0.dev153/omlish/os/files.py +0 -9
- {omlish-0.0.0.dev151/omlish/lite → omlish-0.0.0.dev153/omlish/os}/journald.py +2 -1
- {omlish-0.0.0.dev151/omlish/lite → omlish-0.0.0.dev153/omlish/os}/pidfile.py +1 -0
- omlish-0.0.0.dev153/omlish/os/sizes.py +9 -0
- omlish-0.0.0.dev153/omlish/specs/jsonschema/schemas/draft202012/__init__.py +0 -0
- omlish-0.0.0.dev153/omlish/specs/jsonschema/schemas/draft202012/vocabularies/__init__.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/sql/alchemy/asyncs.py +1 -1
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/testing/pytest/marks.py +2 -2
- omlish-0.0.0.dev153/omlish/text/__init__.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153/omlish.egg-info}/PKG-INFO +1 -1
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish.egg-info/SOURCES.txt +13 -6
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/pyproject.toml +1 -1
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/LICENSE +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/MANIFEST.in +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/README.rst +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/.manifests.json +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/__init__.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/antlr/__init__.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/antlr/_runtime/BufferedTokenStream.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/antlr/_runtime/CommonTokenFactory.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/antlr/_runtime/CommonTokenStream.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/antlr/_runtime/FileStream.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/antlr/_runtime/InputStream.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/antlr/_runtime/IntervalSet.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/antlr/_runtime/LICENSE.txt +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/antlr/_runtime/LL1Analyzer.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/antlr/_runtime/Lexer.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/antlr/_runtime/ListTokenSource.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/antlr/_runtime/Parser.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/antlr/_runtime/ParserInterpreter.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/antlr/_runtime/ParserRuleContext.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/antlr/_runtime/PredictionContext.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/antlr/_runtime/Recognizer.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/antlr/_runtime/RuleContext.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/antlr/_runtime/StdinStream.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/antlr/_runtime/Token.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/antlr/_runtime/TokenStreamRewriter.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/antlr/_runtime/Utils.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/antlr/_runtime/__init__.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/antlr/_runtime/_pygrun.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/antlr/_runtime/atn/ATN.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/antlr/_runtime/atn/ATNConfig.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/antlr/_runtime/atn/ATNConfigSet.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/antlr/_runtime/atn/ATNDeserializationOptions.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/antlr/_runtime/atn/ATNDeserializer.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/antlr/_runtime/atn/ATNSimulator.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/antlr/_runtime/atn/ATNState.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/antlr/_runtime/atn/ATNType.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/antlr/_runtime/atn/LexerATNSimulator.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/antlr/_runtime/atn/LexerAction.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/antlr/_runtime/atn/LexerActionExecutor.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/antlr/_runtime/atn/ParserATNSimulator.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/antlr/_runtime/atn/PredictionMode.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/antlr/_runtime/atn/SemanticContext.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/antlr/_runtime/atn/Transition.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/antlr/_runtime/atn/__init__.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/antlr/_runtime/dfa/DFA.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/antlr/_runtime/dfa/DFASerializer.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/antlr/_runtime/dfa/DFAState.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/antlr/_runtime/dfa/__init__.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/antlr/_runtime/error/DiagnosticErrorListener.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/antlr/_runtime/error/ErrorListener.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/antlr/_runtime/error/ErrorStrategy.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/antlr/_runtime/error/Errors.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/antlr/_runtime/error/__init__.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/antlr/_runtime/tree/Chunk.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/antlr/_runtime/tree/ParseTreeMatch.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/antlr/_runtime/tree/ParseTreePattern.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/antlr/_runtime/tree/ParseTreePatternMatcher.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/antlr/_runtime/tree/RuleTagToken.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/antlr/_runtime/tree/TokenTagToken.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/antlr/_runtime/tree/Tree.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/antlr/_runtime/tree/Trees.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/antlr/_runtime/tree/__init__.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/antlr/_runtime/xpath/XPath.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/antlr/_runtime/xpath/XPathLexer.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/antlr/_runtime/xpath/__init__.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/argparse/__init__.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/argparse/all.py +0 -0
- {omlish-0.0.0.dev151/omlish/diag/_pycharm → omlish-0.0.0.dev153/omlish/asyncs}/__init__.py +0 -0
- /omlish-0.0.0.dev151/omlish/asyncs/__init__.py → /omlish-0.0.0.dev153/omlish/asyncs/all.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/asyncs/anyio.py +0 -0
- {omlish-0.0.0.dev151/omlish/docker → omlish-0.0.0.dev153/omlish/asyncs/asyncio}/__init__.py +0 -0
- {omlish-0.0.0.dev151/omlish/asyncs → omlish-0.0.0.dev153/omlish/asyncs/asyncio}/asyncio.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/asyncs/asyncs.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/asyncs/bridge.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/asyncs/flavors.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/asyncs/trio.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/asyncs/trio_asyncio.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/bootstrap/__init__.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/bootstrap/__main__.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/bootstrap/base.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/bootstrap/diag.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/bootstrap/harness.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/bootstrap/main.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/bootstrap/marshal.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/c3.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/cached.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/check.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/collections/__init__.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/collections/abc.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/collections/cache/__init__.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/collections/cache/descriptor.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/collections/cache/impl.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/collections/cache/types.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/collections/coerce.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/collections/exceptions.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/collections/frozen.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/collections/hasheq.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/collections/identity.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/collections/indexed.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/collections/mappings.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/collections/ordered.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/collections/persistent.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/collections/skiplist.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/collections/sorted.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/collections/treap.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/collections/treapmap.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/collections/unmodifiable.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/collections/utils.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/concurrent/__init__.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/concurrent/executors.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/concurrent/futures.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/concurrent/threadlets.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/configs/__init__.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/configs/classes.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/configs/flattening.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/configs/strings.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/dataclasses/__init__.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/dataclasses/impl/LICENSE +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/dataclasses/impl/__init__.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/dataclasses/impl/api.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/dataclasses/impl/as_.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/dataclasses/impl/copy.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/dataclasses/impl/descriptors.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/dataclasses/impl/exceptions.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/dataclasses/impl/fields.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/dataclasses/impl/frozen.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/dataclasses/impl/hashing.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/dataclasses/impl/init.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/dataclasses/impl/internals.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/dataclasses/impl/main.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/dataclasses/impl/metaclass.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/dataclasses/impl/metadata.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/dataclasses/impl/order.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/dataclasses/impl/params.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/dataclasses/impl/processing.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/dataclasses/impl/reflect.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/dataclasses/impl/replace.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/dataclasses/impl/repr.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/dataclasses/impl/simple.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/dataclasses/impl/slots.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/dataclasses/impl/utils.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/dataclasses/utils.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/datetimes.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/defs.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/diag/__init__.py +0 -0
- {omlish-0.0.0.dev151/omlish/formats → omlish-0.0.0.dev153/omlish/diag/_pycharm}/__init__.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/diag/_pycharm/runhack.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/diag/asts.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/diag/debug.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/diag/procstats.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/diag/ps.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/diag/pycharm.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/diag/pydevd.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/diag/replserver/__init__.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/diag/replserver/__main__.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/diag/replserver/console.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/diag/replserver/server.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/diag/threads.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/dispatch/__init__.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/dispatch/_dispatch2.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/dispatch/_dispatch3.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/dispatch/dispatch.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/dispatch/functions.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/dispatch/methods.py +0 -0
- {omlish-0.0.0.dev151/omlish/formats/json/stream → omlish-0.0.0.dev153/omlish/docker}/__init__.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/docker/all.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/docker/cli.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/docker/compose.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/docker/consts.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/docker/detect.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/docker/hub.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/docker/manifests.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/docker/timebomb.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/dynamic.py +0 -0
- {omlish-0.0.0.dev151/omlish/funcs → omlish-0.0.0.dev153/omlish/formats}/__init__.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/formats/dotenv.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/formats/json/__init__.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/formats/json/backends/__init__.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/formats/json/backends/base.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/formats/json/backends/default.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/formats/json/backends/jiter.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/formats/json/backends/orjson.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/formats/json/backends/std.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/formats/json/backends/ujson.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/formats/json/consts.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/formats/json/encoding.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/formats/json/json.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/formats/json/literals.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/formats/json/render.py +0 -0
- {omlish-0.0.0.dev151/omlish/graphs → omlish-0.0.0.dev153/omlish/formats/json/stream}/__init__.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/formats/json/stream/build.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/formats/json/stream/errors.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/formats/json/stream/lex.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/formats/json/stream/parse.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/formats/json/stream/render.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/formats/json/types.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/formats/props.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/formats/xml.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/formats/yaml.py +0 -0
- {omlish-0.0.0.dev151/omlish/http → omlish-0.0.0.dev153/omlish/funcs}/__init__.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/funcs/genmachine.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/funcs/match.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/funcs/pairs.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/funcs/pipes.py +0 -0
- {omlish-0.0.0.dev151/omlish/inject/impl → omlish-0.0.0.dev153/omlish/graphs}/__init__.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/graphs/dags.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/graphs/domination.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/graphs/dot/__init__.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/graphs/dot/items.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/graphs/dot/make.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/graphs/dot/rendering.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/graphs/dot/utils.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/graphs/trees.py +0 -0
- {omlish-0.0.0.dev151/omlish/io → omlish-0.0.0.dev153/omlish/http}/__init__.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/http/all.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/http/asgi.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/http/clients.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/http/consts.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/http/cookies.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/http/coroserver.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/http/dates.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/http/encodings.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/http/handlers.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/http/headers.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/http/json.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/http/jwt.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/http/multipart.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/http/parsing.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/http/sessions.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/http/sse.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/http/versions.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/http/wsgi.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/inject/__init__.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/inject/binder.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/inject/bindings.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/inject/eagers.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/inject/elements.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/inject/exceptions.py +0 -0
- {omlish-0.0.0.dev151/omlish/io/fdio → omlish-0.0.0.dev153/omlish/inject/impl}/__init__.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/inject/impl/bindings.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/inject/impl/elements.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/inject/impl/injector.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/inject/impl/inspect.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/inject/impl/multis.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/inject/impl/origins.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/inject/impl/privates.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/inject/impl/providers.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/inject/impl/proxy.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/inject/impl/scopes.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/inject/injector.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/inject/inspect.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/inject/keys.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/inject/listeners.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/inject/multis.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/inject/origins.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/inject/overrides.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/inject/privates.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/inject/providers.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/inject/scopes.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/inject/types.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/inject/utils.py +0 -0
- {omlish-0.0.0.dev151/omlish/lite/asyncio → omlish-0.0.0.dev153/omlish/io}/__init__.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/io/abc.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/io/buffers.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/io/compress/__init__.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/io/compress/abc.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/io/compress/adapters.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/io/compress/base.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/io/compress/brotli.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/io/compress/bz2.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/io/compress/gzip.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/io/compress/lz4.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/io/compress/lzma.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/io/compress/snappy.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/io/compress/zlib.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/io/compress/zstd.py +0 -0
- {omlish-0.0.0.dev151/omlish/math → omlish-0.0.0.dev153/omlish/io/fdio}/__init__.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/io/fdio/corohttp.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/io/fdio/handlers.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/io/fdio/kqueue.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/io/fdio/manager.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/io/fdio/pollers.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/io/generators/__init__.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/io/generators/consts.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/io/generators/direct.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/io/generators/readers.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/io/generators/stepped.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/io/pyio.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/io/trampoline.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/iterators.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/lang/__init__.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/lang/cached.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/lang/classes/__init__.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/lang/classes/abstract.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/lang/classes/restrict.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/lang/classes/simple.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/lang/classes/virtual.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/lang/clsdct.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/lang/cmp.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/lang/contextmanagers.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/lang/datetimes.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/lang/descriptors.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/lang/exceptions.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/lang/functions.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/lang/generators.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/lang/imports.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/lang/iterables.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/lang/maybes.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/lang/objects.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/lang/resolving.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/lang/resources.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/lang/strings.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/lang/sys.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/lang/timeouts.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/lang/typing.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/libc.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/lifecycles/__init__.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/lifecycles/abstract.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/lifecycles/base.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/lifecycles/contextmanagers.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/lifecycles/controller.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/lifecycles/manager.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/lifecycles/states.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/lifecycles/transitions.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/lite/__init__.py +0 -0
- {omlish-0.0.0.dev151/omlish/specs/jsonschema → omlish-0.0.0.dev153/omlish/lite/asyncio}/__init__.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/lite/cached.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/lite/check.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/lite/contextmanagers.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/lite/inject.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/lite/json.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/lite/logs.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/lite/marshal.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/lite/maybes.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/lite/pycharm.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/lite/reflect.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/lite/resources.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/lite/runtime.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/lite/secrets.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/lite/socket.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/lite/socketserver.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/lite/strings.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/lite/typing.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/logs/__init__.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/logs/abc.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/logs/configs.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/logs/formatters.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/logs/handlers.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/logs/noisy.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/logs/utils.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/manifests/__init__.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/manifests/load.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/manifests/types.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/marshal/__init__.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/marshal/any.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/marshal/base.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/marshal/base64.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/marshal/dataclasses.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/marshal/datetimes.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/marshal/enums.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/marshal/exceptions.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/marshal/factories.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/marshal/forbidden.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/marshal/global_.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/marshal/helpers.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/marshal/iterables.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/marshal/mappings.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/marshal/maybes.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/marshal/namedtuples.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/marshal/naming.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/marshal/newtypes.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/marshal/nop.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/marshal/numbers.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/marshal/objects.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/marshal/optionals.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/marshal/polymorphism.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/marshal/primitives.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/marshal/registries.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/marshal/standard.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/marshal/unions.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/marshal/utils.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/marshal/uuids.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/marshal/values.py +0 -0
- {omlish-0.0.0.dev151/omlish/specs/jsonschema/schemas → omlish-0.0.0.dev153/omlish/math}/__init__.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/math/bits.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/math/floats.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/math/stats.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/multiprocessing.py +0 -0
- {omlish-0.0.0.dev151/omlish/specs/jsonschema/schemas/draft202012 → omlish-0.0.0.dev153/omlish/os}/__init__.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/reflect/__init__.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/reflect/inspect.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/reflect/ops.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/reflect/subst.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/reflect/types.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/runmodule.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/secrets/__init__.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/secrets/crypto.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/secrets/marshal.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/secrets/openssl.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/secrets/pwgen.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/secrets/pwhash.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/secrets/secrets.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/secrets/subprocesses.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/specs/__init__.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/specs/jmespath/LICENSE +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/specs/jmespath/__init__.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/specs/jmespath/__main__.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/specs/jmespath/ast.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/specs/jmespath/cli.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/specs/jmespath/exceptions.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/specs/jmespath/functions.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/specs/jmespath/lexer.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/specs/jmespath/parser.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/specs/jmespath/scope.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/specs/jmespath/visitor.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/specs/jsonrpc/__init__.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/specs/jsonrpc/errors.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/specs/jsonrpc/marshal.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/specs/jsonrpc/types.py +0 -0
- {omlish-0.0.0.dev151/omlish/specs/jsonschema/schemas/draft202012/vocabularies → omlish-0.0.0.dev153/omlish/specs/jsonschema}/__init__.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/specs/jsonschema/keywords/__init__.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/specs/jsonschema/keywords/base.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/specs/jsonschema/keywords/core.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/specs/jsonschema/keywords/metadata.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/specs/jsonschema/keywords/parse.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/specs/jsonschema/keywords/render.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/specs/jsonschema/keywords/validation.py +0 -0
- {omlish-0.0.0.dev151/omlish/text → omlish-0.0.0.dev153/omlish/specs/jsonschema/schemas}/__init__.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/specs/jsonschema/schemas/draft202012/metaschema.json +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/specs/jsonschema/schemas/draft202012/vocabularies/applicator.json +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/specs/jsonschema/schemas/draft202012/vocabularies/content.json +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/specs/jsonschema/schemas/draft202012/vocabularies/core.json +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/specs/jsonschema/schemas/draft202012/vocabularies/format-annotation.json +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/specs/jsonschema/schemas/draft202012/vocabularies/format-assertion.json +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/specs/jsonschema/schemas/draft202012/vocabularies/format.json +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/specs/jsonschema/schemas/draft202012/vocabularies/meta-data.json +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/specs/jsonschema/schemas/draft202012/vocabularies/unevaluated.json +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/specs/jsonschema/schemas/draft202012/vocabularies/validation.json +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/specs/jsonschema/types.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/specs/openapi/__init__.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/specs/openapi/marshal.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/specs/openapi/openapi.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/sql/__init__.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/sql/abc.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/sql/alchemy/__init__.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/sql/alchemy/duckdb.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/sql/alchemy/exprs.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/sql/alchemy/secrets.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/sql/alchemy/sqlean.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/sql/dbapi.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/sql/dbs.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/sql/params.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/sql/qualifiedname.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/sql/queries/__init__.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/sql/queries/base.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/sql/queries/binary.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/sql/queries/building.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/sql/queries/exprs.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/sql/queries/idents.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/sql/queries/inserts.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/sql/queries/marshal.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/sql/queries/multi.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/sql/queries/names.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/sql/queries/ops.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/sql/queries/relations.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/sql/queries/rendering.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/sql/queries/selects.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/sql/queries/stmts.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/sql/queries/unary.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/sql/tabledefs/__init__.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/sql/tabledefs/alchemy.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/sql/tabledefs/dtypes.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/sql/tabledefs/elements.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/sql/tabledefs/lower.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/sql/tabledefs/marshal.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/sql/tabledefs/tabledefs.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/sync.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/term.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/testing/__init__.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/testing/pytest/__init__.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/testing/pytest/helpers.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/testing/pytest/inject/__init__.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/testing/pytest/inject/harness.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/testing/pytest/plugins/__init__.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/testing/pytest/plugins/_registry.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/testing/pytest/plugins/asyncs.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/testing/pytest/plugins/depskip.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/testing/pytest/plugins/logging.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/testing/pytest/plugins/managermarks.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/testing/pytest/plugins/pydevd.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/testing/pytest/plugins/repeat.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/testing/pytest/plugins/skips.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/testing/pytest/plugins/spacing.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/testing/pytest/plugins/switches.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/testing/pytest/plugins/utils.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/testing/pytest/skip.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/testing/testing.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/text/asdl.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/text/delimit.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/text/glyphsplit.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/text/indent.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/text/parts.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish/text/random.py +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish.egg-info/dependency_links.txt +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish.egg-info/entry_points.txt +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish.egg-info/requires.txt +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/omlish.egg-info/top_level.txt +0 -0
- {omlish-0.0.0.dev151 → omlish-0.0.0.dev153}/setup.cfg +0 -0
@@ -4,6 +4,8 @@
|
|
4
4
|
TODO:
|
5
5
|
- default command
|
6
6
|
- auto match all underscores to hyphens
|
7
|
+
- pre-run, post-run hooks
|
8
|
+
- exitstack?
|
7
9
|
"""
|
8
10
|
import argparse
|
9
11
|
import dataclasses as dc
|
@@ -136,11 +138,12 @@ class ArgparseCli:
|
|
136
138
|
|
137
139
|
self._args, self._unknown_args = self.get_parser().parse_known_args(self._argv)
|
138
140
|
|
141
|
+
#
|
142
|
+
|
139
143
|
def __init_subclass__(cls, **kwargs: ta.Any) -> None:
|
140
144
|
super().__init_subclass__(**kwargs)
|
141
145
|
|
142
146
|
ns = cls.__dict__
|
143
|
-
|
144
147
|
objs = {}
|
145
148
|
mro = cls.__mro__[::-1]
|
146
149
|
for bns in [bcls.__dict__ for bcls in reversed(mro)] + [ns]:
|
@@ -153,24 +156,33 @@ class ArgparseCli:
|
|
153
156
|
elif k in objs:
|
154
157
|
del [k]
|
155
158
|
|
159
|
+
#
|
160
|
+
|
156
161
|
anns = ta.get_type_hints(_ArgparseCliAnnotationBox({
|
157
162
|
**{k: v for bcls in reversed(mro) for k, v in getattr(bcls, '__annotations__', {}).items()},
|
158
163
|
**ns.get('__annotations__', {}),
|
159
164
|
}), globalns=ns.get('__globals__', {}))
|
160
165
|
|
166
|
+
#
|
167
|
+
|
161
168
|
if '_parser' in ns:
|
162
169
|
parser = check.isinstance(ns['_parser'], argparse.ArgumentParser)
|
163
170
|
else:
|
164
171
|
parser = argparse.ArgumentParser()
|
165
172
|
setattr(cls, '_parser', parser)
|
166
173
|
|
174
|
+
#
|
175
|
+
|
167
176
|
subparsers = parser.add_subparsers()
|
177
|
+
|
168
178
|
for att, obj in objs.items():
|
169
179
|
if isinstance(obj, ArgparseCommand):
|
170
180
|
if obj.parent is not None:
|
171
181
|
raise NotImplementedError
|
182
|
+
|
172
183
|
for cn in [obj.name, *(obj.aliases or [])]:
|
173
|
-
|
184
|
+
subparser = subparsers.add_parser(cn)
|
185
|
+
|
174
186
|
for arg in (obj.args or []):
|
175
187
|
if (
|
176
188
|
len(arg.args) == 1 and
|
@@ -178,29 +190,34 @@ class ArgparseCli:
|
|
178
190
|
not (n := check.isinstance(arg.args[0], str)).startswith('-') and
|
179
191
|
'metavar' not in arg.kwargs
|
180
192
|
):
|
181
|
-
|
193
|
+
subparser.add_argument(
|
182
194
|
n.replace('-', '_'),
|
183
195
|
**arg.kwargs,
|
184
196
|
metavar=n,
|
185
197
|
)
|
186
198
|
else:
|
187
|
-
|
188
|
-
|
199
|
+
subparser.add_argument(*arg.args, **arg.kwargs)
|
200
|
+
|
201
|
+
subparser.set_defaults(_cmd=obj)
|
189
202
|
|
190
203
|
elif isinstance(obj, ArgparseArg):
|
191
204
|
if att in anns:
|
192
|
-
|
193
|
-
obj.kwargs = {**
|
205
|
+
ann_kwargs = _get_argparse_arg_ann_kwargs(anns[att])
|
206
|
+
obj.kwargs = {**ann_kwargs, **obj.kwargs}
|
207
|
+
|
194
208
|
if not obj.dest:
|
195
209
|
if 'dest' in obj.kwargs:
|
196
210
|
obj.dest = obj.kwargs['dest']
|
197
211
|
else:
|
198
212
|
obj.dest = obj.kwargs['dest'] = att # type: ignore
|
213
|
+
|
199
214
|
parser.add_argument(*obj.args, **obj.kwargs)
|
200
215
|
|
201
216
|
else:
|
202
217
|
raise TypeError(obj)
|
203
218
|
|
219
|
+
#
|
220
|
+
|
204
221
|
_parser: ta.ClassVar[argparse.ArgumentParser]
|
205
222
|
|
206
223
|
@classmethod
|
@@ -219,10 +236,12 @@ class ArgparseCli:
|
|
219
236
|
def unknown_args(self) -> ta.Sequence[str]:
|
220
237
|
return self._unknown_args
|
221
238
|
|
222
|
-
|
223
|
-
|
239
|
+
#
|
240
|
+
|
241
|
+
def _bind_cli_cmd(self, cmd: ArgparseCommand) -> ta.Callable:
|
242
|
+
return cmd.__get__(self, type(self))
|
224
243
|
|
225
|
-
def
|
244
|
+
def prepare_cli_run(self) -> ta.Optional[ta.Callable]:
|
226
245
|
cmd = getattr(self.args, '_cmd', None)
|
227
246
|
|
228
247
|
if self._unknown_args and not (cmd is not None and cmd.accepts_unknown):
|
@@ -234,9 +253,31 @@ class ArgparseCli:
|
|
234
253
|
|
235
254
|
if cmd is None:
|
236
255
|
self.get_parser().print_help()
|
256
|
+
return None
|
257
|
+
|
258
|
+
return self._bind_cli_cmd(cmd)
|
259
|
+
|
260
|
+
#
|
261
|
+
|
262
|
+
def cli_run(self) -> ta.Optional[int]:
|
263
|
+
if (fn := self.prepare_cli_run()) is None:
|
237
264
|
return 0
|
238
265
|
|
239
|
-
return
|
266
|
+
return fn()
|
267
|
+
|
268
|
+
def cli_run_and_exit(self) -> ta.NoReturn:
|
269
|
+
sys.exit(rc if isinstance(rc := self.cli_run(), int) else 0)
|
270
|
+
|
271
|
+
def __call__(self, *, exit: bool = False) -> ta.Optional[int]: # noqa
|
272
|
+
if exit:
|
273
|
+
return self.cli_run_and_exit()
|
274
|
+
else:
|
275
|
+
return self.cli_run()
|
276
|
+
|
277
|
+
#
|
278
|
+
|
279
|
+
async def async_cli_run(self) -> ta.Optional[int]:
|
280
|
+
if (fn := self.prepare_cli_run()) is None:
|
281
|
+
return 0
|
240
282
|
|
241
|
-
|
242
|
-
sys.exit(rc if isinstance(rc := self(), int) else 0)
|
283
|
+
return await fn()
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# ruff: noqa: UP006 UP007
|
2
|
+
# @omlish-lite
|
3
|
+
import asyncio
|
4
|
+
import typing as ta
|
5
|
+
|
6
|
+
|
7
|
+
class AsyncioBytesChannelTransport(asyncio.Transport):
|
8
|
+
def __init__(self, reader: asyncio.StreamReader) -> None:
|
9
|
+
super().__init__()
|
10
|
+
|
11
|
+
self.reader = reader
|
12
|
+
self.closed: asyncio.Future = asyncio.Future()
|
13
|
+
|
14
|
+
# @ta.override
|
15
|
+
def write(self, data: bytes) -> None:
|
16
|
+
self.reader.feed_data(data)
|
17
|
+
|
18
|
+
# @ta.override
|
19
|
+
def close(self) -> None:
|
20
|
+
self.reader.feed_eof()
|
21
|
+
if not self.closed.done():
|
22
|
+
self.closed.set_result(True)
|
23
|
+
|
24
|
+
# @ta.override
|
25
|
+
def is_closing(self) -> bool:
|
26
|
+
return self.closed.done()
|
27
|
+
|
28
|
+
|
29
|
+
def asyncio_create_bytes_channel(
|
30
|
+
loop: ta.Any = None,
|
31
|
+
) -> ta.Tuple[asyncio.StreamReader, asyncio.StreamWriter]:
|
32
|
+
if loop is None:
|
33
|
+
loop = asyncio.get_running_loop()
|
34
|
+
|
35
|
+
reader = asyncio.StreamReader()
|
36
|
+
protocol = asyncio.StreamReaderProtocol(reader)
|
37
|
+
transport = AsyncioBytesChannelTransport(reader)
|
38
|
+
writer = asyncio.StreamWriter(transport, protocol, reader, loop)
|
39
|
+
|
40
|
+
return reader, writer
|
@@ -1,15 +1,9 @@
|
|
1
1
|
# ruff: noqa: UP006 UP007
|
2
|
-
|
3
|
-
import asyncio
|
2
|
+
# @omlish-lite
|
3
|
+
import asyncio
|
4
4
|
import typing as ta
|
5
5
|
|
6
6
|
|
7
|
-
AwaitableT = ta.TypeVar('AwaitableT', bound=ta.Awaitable)
|
8
|
-
|
9
|
-
|
10
|
-
##
|
11
|
-
|
12
|
-
|
13
7
|
ASYNCIO_DEFAULT_BUFFER_LIMIT = 2 ** 16
|
14
8
|
|
15
9
|
|
@@ -49,15 +43,3 @@ async def asyncio_open_stream_writer(
|
|
49
43
|
None,
|
50
44
|
loop,
|
51
45
|
)
|
52
|
-
|
53
|
-
|
54
|
-
##
|
55
|
-
|
56
|
-
|
57
|
-
def asyncio_maybe_timeout(
|
58
|
-
fut: AwaitableT,
|
59
|
-
timeout: ta.Optional[float] = None,
|
60
|
-
) -> AwaitableT:
|
61
|
-
if timeout is not None:
|
62
|
-
fut = asyncio.wait_for(fut, timeout) # type: ignore
|
63
|
-
return fut
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# ruff: noqa: UP006 UP007
|
2
|
+
# @omlish-lite
|
3
|
+
import asyncio
|
4
|
+
import typing as ta
|
5
|
+
|
6
|
+
|
7
|
+
AwaitableT = ta.TypeVar('AwaitableT', bound=ta.Awaitable)
|
8
|
+
|
9
|
+
|
10
|
+
def asyncio_maybe_timeout(
|
11
|
+
fut: AwaitableT,
|
12
|
+
timeout: ta.Optional[float] = None,
|
13
|
+
) -> AwaitableT:
|
14
|
+
if timeout is not None:
|
15
|
+
fut = asyncio.wait_for(fut, timeout) # type: ignore
|
16
|
+
return fut
|
@@ -23,13 +23,13 @@ if ta.TYPE_CHECKING:
|
|
23
23
|
from .. import libc
|
24
24
|
from .. import logs
|
25
25
|
from ..formats import dotenv
|
26
|
-
from ..
|
26
|
+
from ..os import pidfile
|
27
27
|
|
28
28
|
else:
|
29
29
|
libc = lang.proxy_import('..libc', __package__)
|
30
30
|
logs = lang.proxy_import('..logs', __package__)
|
31
31
|
dotenv = lang.proxy_import('..formats.dotenv', __package__)
|
32
|
-
pidfile = lang.proxy_import('..
|
32
|
+
pidfile = lang.proxy_import('..os.pidfile', __package__)
|
33
33
|
|
34
34
|
|
35
35
|
##
|
@@ -13,8 +13,8 @@ import typing as ta
|
|
13
13
|
|
14
14
|
from .. import iterators as it
|
15
15
|
from .. import lang
|
16
|
-
from .. import os as oos
|
17
16
|
from ..formats import json
|
17
|
+
from ..os.sizes import PAGE_SIZE
|
18
18
|
from .procstats import ProcStats
|
19
19
|
|
20
20
|
|
@@ -239,8 +239,8 @@ def get_process_range_pagemaps(start: int, end: int, pid: PidLike = 'self') -> t
|
|
239
239
|
"""https://www.kernel.org/doc/Documentation/vm/pagemap.txt"""
|
240
240
|
|
241
241
|
_check_linux()
|
242
|
-
offset = (start //
|
243
|
-
npages = ((end - start) //
|
242
|
+
offset = (start // PAGE_SIZE) * 8
|
243
|
+
npages = ((end - start) // PAGE_SIZE)
|
244
244
|
size = npages * 8
|
245
245
|
with open(f'/proc/{pid}/pagemap', 'rb') as pagemap_file:
|
246
246
|
pagemap_file.seek(offset)
|
@@ -251,7 +251,7 @@ def get_process_range_pagemaps(start: int, end: int, pid: PidLike = 'self') -> t
|
|
251
251
|
for pagenum in range(npages):
|
252
252
|
[packed] = _struct_unpack('Q', pagemap_buf[pagenum * 8:(pagenum + 1) * 8])
|
253
253
|
yield {
|
254
|
-
'address': start + (pagenum *
|
254
|
+
'address': start + (pagenum * PAGE_SIZE),
|
255
255
|
'pfn': (packed & ((1 << (54 + 1)) - 1)),
|
256
256
|
'swap_type': (packed & ((1 << (4 + 1)) - 1)),
|
257
257
|
'swap_offset': (packed & ((1 << (54 + 1)) - 1)) >> 5,
|
@@ -280,7 +280,7 @@ def _dump_cmd(args: ta.Any) -> None:
|
|
280
280
|
sys.stdout.write('\n')
|
281
281
|
for pm in get_process_range_pagemaps(m['address'], m['end_address'], args.pid):
|
282
282
|
if pm['pte_soft_dirty']:
|
283
|
-
dirty_total +=
|
283
|
+
dirty_total += PAGE_SIZE
|
284
284
|
sys.stdout.write(json.dumps({'page': tuple(pm[k] for k in PAGEMAP_KEYS)}))
|
285
285
|
sys.stdout.write('\n')
|
286
286
|
dct = {
|
@@ -326,11 +326,11 @@ def _cmp_cmd(args: ta.Any) -> None:
|
|
326
326
|
r_pages += c_pages
|
327
327
|
dct = {
|
328
328
|
'l_pages': l_pages,
|
329
|
-
'l_bytes': l_pages *
|
329
|
+
'l_bytes': l_pages * PAGE_SIZE,
|
330
330
|
'r_pages': r_pages,
|
331
|
-
'r_bytes': r_pages *
|
331
|
+
'r_bytes': r_pages * PAGE_SIZE,
|
332
332
|
'c_pages': c_pages,
|
333
|
-
'c_bytes': c_pages *
|
333
|
+
'c_bytes': c_pages * PAGE_SIZE,
|
334
334
|
}
|
335
335
|
sys.stdout.write(json.dumps(dct))
|
336
336
|
sys.stdout.write('\n')
|
@@ -14,9 +14,9 @@ from .injector import create_injector
|
|
14
14
|
|
15
15
|
|
16
16
|
if ta.TYPE_CHECKING:
|
17
|
-
from .. import
|
17
|
+
from ..asyncs import all as _asyncs
|
18
18
|
else:
|
19
|
-
_asyncs = lang.proxy_import('..asyncs', __package__)
|
19
|
+
_asyncs = lang.proxy_import('..asyncs.all', __package__)
|
20
20
|
|
21
21
|
|
22
22
|
T = ta.TypeVar('T')
|
@@ -8,12 +8,12 @@ import subprocess
|
|
8
8
|
import sys
|
9
9
|
import typing as ta
|
10
10
|
|
11
|
+
from ...asyncs.asyncio.timeouts import asyncio_maybe_timeout
|
11
12
|
from ..check import check
|
12
13
|
from ..logs import log
|
13
14
|
from ..subprocesses import DEFAULT_SUBPROCESS_TRY_EXCEPTIONS
|
14
15
|
from ..subprocesses import prepare_subprocess_invocation
|
15
16
|
from ..subprocesses import subprocess_common_context
|
16
|
-
from .asyncio import asyncio_maybe_timeout
|
17
17
|
|
18
18
|
|
19
19
|
T = ta.TypeVar('T')
|
@@ -177,22 +177,25 @@ async def asyncio_subprocess_communicate(
|
|
177
177
|
return await AsyncioProcessCommunicator(proc).communicate(input, timeout) # noqa
|
178
178
|
|
179
179
|
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
async def _asyncio_subprocess_check_run(
|
180
|
+
async def asyncio_subprocess_run(
|
184
181
|
*args: str,
|
185
182
|
input: ta.Any = None, # noqa
|
186
183
|
timeout: ta.Optional[float] = None,
|
184
|
+
check: bool = False, # noqa
|
185
|
+
capture_output: ta.Optional[bool] = None,
|
187
186
|
**kwargs: ta.Any,
|
188
187
|
) -> ta.Tuple[ta.Optional[bytes], ta.Optional[bytes]]:
|
188
|
+
if capture_output:
|
189
|
+
kwargs.setdefault('stdout', subprocess.PIPE)
|
190
|
+
kwargs.setdefault('stderr', subprocess.PIPE)
|
191
|
+
|
189
192
|
args, kwargs = prepare_subprocess_invocation(*args, **kwargs)
|
190
193
|
|
191
194
|
proc: asyncio.subprocess.Process
|
192
195
|
async with asyncio_subprocess_popen(*args, **kwargs) as proc:
|
193
196
|
stdout, stderr = await asyncio_subprocess_communicate(proc, input, timeout)
|
194
197
|
|
195
|
-
if proc.returncode:
|
198
|
+
if check and proc.returncode:
|
196
199
|
raise subprocess.CalledProcessError(
|
197
200
|
proc.returncode,
|
198
201
|
args,
|
@@ -203,6 +206,9 @@ async def _asyncio_subprocess_check_run(
|
|
203
206
|
return stdout, stderr
|
204
207
|
|
205
208
|
|
209
|
+
##
|
210
|
+
|
211
|
+
|
206
212
|
async def asyncio_subprocess_check_call(
|
207
213
|
*args: str,
|
208
214
|
stdout: ta.Any = sys.stderr,
|
@@ -210,11 +216,12 @@ async def asyncio_subprocess_check_call(
|
|
210
216
|
timeout: ta.Optional[float] = None,
|
211
217
|
**kwargs: ta.Any,
|
212
218
|
) -> None:
|
213
|
-
_, _ = await
|
219
|
+
_, _ = await asyncio_subprocess_run(
|
214
220
|
*args,
|
215
221
|
stdout=stdout,
|
216
222
|
input=input,
|
217
223
|
timeout=timeout,
|
224
|
+
check=True,
|
218
225
|
**kwargs,
|
219
226
|
)
|
220
227
|
|
@@ -225,11 +232,12 @@ async def asyncio_subprocess_check_output(
|
|
225
232
|
timeout: ta.Optional[float] = None,
|
226
233
|
**kwargs: ta.Any,
|
227
234
|
) -> bytes:
|
228
|
-
stdout, stderr = await
|
235
|
+
stdout, stderr = await asyncio_subprocess_run(
|
229
236
|
*args,
|
230
237
|
stdout=asyncio.subprocess.PIPE,
|
231
238
|
input=input,
|
232
239
|
timeout=timeout,
|
240
|
+
check=True,
|
233
241
|
**kwargs,
|
234
242
|
)
|
235
243
|
|
@@ -1,19 +1,10 @@
|
|
1
1
|
import contextlib
|
2
2
|
import os
|
3
|
-
import resource
|
4
3
|
import shutil
|
5
4
|
import tempfile
|
6
5
|
import typing as ta
|
7
6
|
|
8
7
|
|
9
|
-
PAGE_SIZE = resource.getpagesize()
|
10
|
-
|
11
|
-
|
12
|
-
def round_to_page_size(sz: int) -> int:
|
13
|
-
sz += PAGE_SIZE - 1
|
14
|
-
return sz - (sz % PAGE_SIZE)
|
15
|
-
|
16
|
-
|
17
8
|
@contextlib.contextmanager
|
18
9
|
def tmp_dir(
|
19
10
|
root_dir: str | None = None,
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# ruff: noqa: UP007 UP012
|
2
|
+
# @omlish-lite
|
2
3
|
import ctypes as ct
|
3
4
|
import logging
|
4
5
|
import sys
|
@@ -6,7 +7,7 @@ import syslog
|
|
6
7
|
import threading
|
7
8
|
import typing as ta
|
8
9
|
|
9
|
-
from .cached import cached_nullary
|
10
|
+
from ..lite.cached import cached_nullary
|
10
11
|
|
11
12
|
|
12
13
|
##
|
File without changes
|
File without changes
|
@@ -7,9 +7,9 @@ from .plugins.managermarks import ManagerMark # noqa
|
|
7
7
|
|
8
8
|
|
9
9
|
if ta.TYPE_CHECKING:
|
10
|
-
from ...asyncs import
|
10
|
+
from ...asyncs.asyncio import all as aiu
|
11
11
|
else:
|
12
|
-
aiu = lang.proxy_import('...asyncs.asyncio', __package__)
|
12
|
+
aiu = lang.proxy_import('...asyncs.asyncio.all', __package__)
|
13
13
|
|
14
14
|
|
15
15
|
class drain_asyncio(ManagerMark): # noqa
|
File without changes
|
@@ -14,7 +14,6 @@ omlish/dynamic.py
|
|
14
14
|
omlish/iterators.py
|
15
15
|
omlish/libc.py
|
16
16
|
omlish/multiprocessing.py
|
17
|
-
omlish/os.py
|
18
17
|
omlish/runmodule.py
|
19
18
|
omlish/sync.py
|
20
19
|
omlish/term.py
|
@@ -88,13 +87,19 @@ omlish/argparse/__init__.py
|
|
88
87
|
omlish/argparse/all.py
|
89
88
|
omlish/argparse/cli.py
|
90
89
|
omlish/asyncs/__init__.py
|
90
|
+
omlish/asyncs/all.py
|
91
91
|
omlish/asyncs/anyio.py
|
92
|
-
omlish/asyncs/asyncio.py
|
93
92
|
omlish/asyncs/asyncs.py
|
94
93
|
omlish/asyncs/bridge.py
|
95
94
|
omlish/asyncs/flavors.py
|
96
95
|
omlish/asyncs/trio.py
|
97
96
|
omlish/asyncs/trio_asyncio.py
|
97
|
+
omlish/asyncs/asyncio/__init__.py
|
98
|
+
omlish/asyncs/asyncio/all.py
|
99
|
+
omlish/asyncs/asyncio/asyncio.py
|
100
|
+
omlish/asyncs/asyncio/channels.py
|
101
|
+
omlish/asyncs/asyncio/streams.py
|
102
|
+
omlish/asyncs/asyncio/timeouts.py
|
98
103
|
omlish/bootstrap/__init__.py
|
99
104
|
omlish/bootstrap/__main__.py
|
100
105
|
omlish/bootstrap/base.py
|
@@ -341,14 +346,11 @@ omlish/lite/__init__.py
|
|
341
346
|
omlish/lite/cached.py
|
342
347
|
omlish/lite/check.py
|
343
348
|
omlish/lite/contextmanagers.py
|
344
|
-
omlish/lite/deathsig.py
|
345
349
|
omlish/lite/inject.py
|
346
|
-
omlish/lite/journald.py
|
347
350
|
omlish/lite/json.py
|
348
351
|
omlish/lite/logs.py
|
349
352
|
omlish/lite/marshal.py
|
350
353
|
omlish/lite/maybes.py
|
351
|
-
omlish/lite/pidfile.py
|
352
354
|
omlish/lite/pycharm.py
|
353
355
|
omlish/lite/reflect.py
|
354
356
|
omlish/lite/resources.py
|
@@ -360,7 +362,6 @@ omlish/lite/strings.py
|
|
360
362
|
omlish/lite/subprocesses.py
|
361
363
|
omlish/lite/typing.py
|
362
364
|
omlish/lite/asyncio/__init__.py
|
363
|
-
omlish/lite/asyncio/asyncio.py
|
364
365
|
omlish/lite/asyncio/subprocesses.py
|
365
366
|
omlish/logs/__init__.py
|
366
367
|
omlish/logs/abc.py
|
@@ -406,6 +407,12 @@ omlish/math/__init__.py
|
|
406
407
|
omlish/math/bits.py
|
407
408
|
omlish/math/floats.py
|
408
409
|
omlish/math/stats.py
|
410
|
+
omlish/os/__init__.py
|
411
|
+
omlish/os/deathsig.py
|
412
|
+
omlish/os/files.py
|
413
|
+
omlish/os/journald.py
|
414
|
+
omlish/os/pidfile.py
|
415
|
+
omlish/os/sizes.py
|
409
416
|
omlish/reflect/__init__.py
|
410
417
|
omlish/reflect/inspect.py
|
411
418
|
omlish/reflect/ops.py
|
@@ -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.dev153'
|
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
|