omlish 0.0.0.dev57__tar.gz → 0.0.0.dev58__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.dev57/omlish.egg-info → omlish-0.0.0.dev58}/PKG-INFO +1 -1
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/__about__.py +2 -2
- omlish-0.0.0.dev58/omlish/antlr/_runtime/BufferedTokenStream.py +305 -0
- omlish-0.0.0.dev58/omlish/antlr/_runtime/CommonTokenFactory.py +64 -0
- omlish-0.0.0.dev58/omlish/antlr/_runtime/CommonTokenStream.py +90 -0
- omlish-0.0.0.dev58/omlish/antlr/_runtime/FileStream.py +30 -0
- omlish-0.0.0.dev58/omlish/antlr/_runtime/InputStream.py +90 -0
- omlish-0.0.0.dev58/omlish/antlr/_runtime/IntervalSet.py +183 -0
- omlish-0.0.0.dev58/omlish/antlr/_runtime/LL1Analyzer.py +176 -0
- omlish-0.0.0.dev58/omlish/antlr/_runtime/Lexer.py +332 -0
- omlish-0.0.0.dev58/omlish/antlr/_runtime/ListTokenSource.py +147 -0
- omlish-0.0.0.dev58/omlish/antlr/_runtime/Parser.py +583 -0
- omlish-0.0.0.dev58/omlish/antlr/_runtime/ParserInterpreter.py +173 -0
- omlish-0.0.0.dev58/omlish/antlr/_runtime/ParserRuleContext.py +189 -0
- omlish-0.0.0.dev58/omlish/antlr/_runtime/PredictionContext.py +632 -0
- omlish-0.0.0.dev58/omlish/antlr/_runtime/Recognizer.py +150 -0
- omlish-0.0.0.dev58/omlish/antlr/_runtime/RuleContext.py +230 -0
- omlish-0.0.0.dev58/omlish/antlr/_runtime/StdinStream.py +14 -0
- omlish-0.0.0.dev58/omlish/antlr/_runtime/Token.py +158 -0
- omlish-0.0.0.dev58/omlish/antlr/_runtime/TokenStreamRewriter.py +258 -0
- omlish-0.0.0.dev58/omlish/antlr/_runtime/Utils.py +36 -0
- omlish-0.0.0.dev58/omlish/antlr/_runtime/__init__.py +24 -0
- omlish-0.0.0.dev58/omlish/antlr/_runtime/_pygrun.py +174 -0
- omlish-0.0.0.dev58/omlish/antlr/_runtime/atn/ATN.py +135 -0
- omlish-0.0.0.dev58/omlish/antlr/_runtime/atn/ATNConfig.py +162 -0
- omlish-0.0.0.dev58/omlish/antlr/_runtime/atn/ATNConfigSet.py +215 -0
- omlish-0.0.0.dev58/omlish/antlr/_runtime/atn/ATNDeserializationOptions.py +27 -0
- omlish-0.0.0.dev58/omlish/antlr/_runtime/atn/ATNDeserializer.py +449 -0
- omlish-0.0.0.dev58/omlish/antlr/_runtime/atn/ATNSimulator.py +50 -0
- omlish-0.0.0.dev58/omlish/antlr/_runtime/atn/ATNState.py +267 -0
- omlish-0.0.0.dev58/omlish/antlr/_runtime/atn/ATNType.py +20 -0
- omlish-0.0.0.dev58/omlish/antlr/_runtime/atn/LexerATNSimulator.py +573 -0
- omlish-0.0.0.dev58/omlish/antlr/_runtime/atn/LexerAction.py +301 -0
- omlish-0.0.0.dev58/omlish/antlr/_runtime/atn/LexerActionExecutor.py +146 -0
- omlish-0.0.0.dev58/omlish/antlr/_runtime/atn/ParserATNSimulator.py +1664 -0
- omlish-0.0.0.dev58/omlish/antlr/_runtime/atn/PredictionMode.py +502 -0
- omlish-0.0.0.dev58/omlish/antlr/_runtime/atn/SemanticContext.py +333 -0
- omlish-0.0.0.dev58/omlish/antlr/_runtime/atn/Transition.py +271 -0
- omlish-0.0.0.dev58/omlish/antlr/_runtime/atn/__init__.py +4 -0
- omlish-0.0.0.dev58/omlish/antlr/_runtime/dfa/DFA.py +136 -0
- omlish-0.0.0.dev58/omlish/antlr/_runtime/dfa/DFASerializer.py +76 -0
- omlish-0.0.0.dev58/omlish/antlr/_runtime/dfa/DFAState.py +129 -0
- omlish-0.0.0.dev58/omlish/antlr/_runtime/dfa/__init__.py +4 -0
- omlish-0.0.0.dev58/omlish/antlr/_runtime/error/DiagnosticErrorListener.py +110 -0
- omlish-0.0.0.dev58/omlish/antlr/_runtime/error/ErrorListener.py +75 -0
- omlish-0.0.0.dev58/omlish/antlr/_runtime/error/ErrorStrategy.py +712 -0
- omlish-0.0.0.dev58/omlish/antlr/_runtime/error/Errors.py +176 -0
- omlish-0.0.0.dev58/omlish/antlr/_runtime/error/__init__.py +4 -0
- omlish-0.0.0.dev58/omlish/antlr/_runtime/tree/Chunk.py +33 -0
- omlish-0.0.0.dev58/omlish/antlr/_runtime/tree/ParseTreeMatch.py +121 -0
- omlish-0.0.0.dev58/omlish/antlr/_runtime/tree/ParseTreePattern.py +75 -0
- omlish-0.0.0.dev58/omlish/antlr/_runtime/tree/ParseTreePatternMatcher.py +377 -0
- omlish-0.0.0.dev58/omlish/antlr/_runtime/tree/RuleTagToken.py +53 -0
- omlish-0.0.0.dev58/omlish/antlr/_runtime/tree/TokenTagToken.py +50 -0
- omlish-0.0.0.dev58/omlish/antlr/_runtime/tree/Tree.py +194 -0
- omlish-0.0.0.dev58/omlish/antlr/_runtime/tree/Trees.py +114 -0
- omlish-0.0.0.dev58/omlish/antlr/_runtime/tree/__init__.py +2 -0
- omlish-0.0.0.dev58/omlish/antlr/_runtime/xpath/XPath.py +272 -0
- omlish-0.0.0.dev58/omlish/antlr/_runtime/xpath/XPathLexer.py +98 -0
- omlish-0.0.0.dev58/omlish/antlr/_runtime/xpath/__init__.py +4 -0
- omlish-0.0.0.dev58/omlish/text/__init__.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58/omlish.egg-info}/PKG-INFO +1 -1
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish.egg-info/SOURCES.txt +59 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/pyproject.toml +1 -1
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/LICENSE +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/MANIFEST.in +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/README.rst +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/.manifests.json +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/__init__.py +0 -0
- {omlish-0.0.0.dev57/omlish/formats → omlish-0.0.0.dev58/omlish/antlr}/__init__.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/argparse.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/asyncs/__init__.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/asyncs/anyio.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/asyncs/asyncio.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/asyncs/asyncs.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/asyncs/bridge.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/asyncs/flavors.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/asyncs/trio.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/asyncs/trio_asyncio.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/bootstrap/__init__.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/bootstrap/__main__.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/bootstrap/base.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/bootstrap/diag.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/bootstrap/harness.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/bootstrap/main.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/bootstrap/marshal.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/bootstrap/sys.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/c3.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/cached.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/check.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/collections/__init__.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/collections/_abc.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/collections/_io_abc.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/collections/cache/__init__.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/collections/cache/descriptor.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/collections/cache/impl.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/collections/cache/types.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/collections/coerce.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/collections/exceptions.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/collections/frozen.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/collections/identity.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/collections/indexed.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/collections/mappings.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/collections/ordered.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/collections/persistent.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/collections/skiplist.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/collections/sorted.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/collections/treap.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/collections/treapmap.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/collections/unmodifiable.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/collections/utils.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/concurrent/__init__.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/concurrent/executors.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/concurrent/futures.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/concurrent/threadlets.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/configs/__init__.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/configs/classes.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/configs/flattening.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/configs/strings.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/dataclasses/__init__.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/dataclasses/impl/LICENSE +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/dataclasses/impl/__init__.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/dataclasses/impl/api.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/dataclasses/impl/as_.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/dataclasses/impl/copy.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/dataclasses/impl/descriptors.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/dataclasses/impl/exceptions.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/dataclasses/impl/fields.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/dataclasses/impl/frozen.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/dataclasses/impl/hashing.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/dataclasses/impl/init.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/dataclasses/impl/internals.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/dataclasses/impl/main.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/dataclasses/impl/metaclass.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/dataclasses/impl/metadata.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/dataclasses/impl/order.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/dataclasses/impl/params.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/dataclasses/impl/processing.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/dataclasses/impl/reflect.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/dataclasses/impl/replace.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/dataclasses/impl/repr.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/dataclasses/impl/simple.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/dataclasses/impl/slots.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/dataclasses/impl/utils.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/dataclasses/utils.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/datetimes.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/defs.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/diag/__init__.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/diag/asts.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/diag/procfs.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/diag/procstats.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/diag/ps.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/diag/pycharm.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/diag/pydevd.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/diag/replserver/__init__.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/diag/replserver/__main__.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/diag/replserver/console.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/diag/replserver/server.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/diag/threads.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/dispatch/__init__.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/dispatch/_dispatch2.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/dispatch/_dispatch3.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/dispatch/dispatch.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/dispatch/functions.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/dispatch/methods.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/docker/__init__.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/docker/cli.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/docker/compose.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/docker/helpers.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/docker/hub.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/docker/manifests.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/dynamic.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/fnpairs.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/fnpipes.py +0 -0
- {omlish-0.0.0.dev57/omlish/formats/json/backends → omlish-0.0.0.dev58/omlish/formats}/__init__.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/formats/dotenv.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/formats/json/__init__.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/formats/json/__main__.py +0 -0
- {omlish-0.0.0.dev57/omlish/graphs → omlish-0.0.0.dev58/omlish/formats/json/backends}/__init__.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/formats/json/backends/orjson.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/formats/json/backends/std.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/formats/json/backends/ujson.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/formats/json/cli.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/formats/json/json.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/formats/json/render.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/formats/props.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/formats/yaml.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/genmachine.py +0 -0
- {omlish-0.0.0.dev57/omlish/inject/impl → omlish-0.0.0.dev58/omlish/graphs}/__init__.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/graphs/dags.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/graphs/domination.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/graphs/dot/__init__.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/graphs/dot/items.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/graphs/dot/make.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/graphs/dot/rendering.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/graphs/dot/utils.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/graphs/trees.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/http/__init__.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/http/asgi.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/http/collections.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/http/consts.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/http/cookies.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/http/dates.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/http/encodings.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/http/json.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/http/sessions.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/http/wsgi.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/inject/__init__.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/inject/binder.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/inject/bindings.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/inject/eagers.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/inject/elements.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/inject/exceptions.py +0 -0
- {omlish-0.0.0.dev57/omlish/math → omlish-0.0.0.dev58/omlish/inject/impl}/__init__.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/inject/impl/bindings.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/inject/impl/elements.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/inject/impl/injector.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/inject/impl/inspect.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/inject/impl/multis.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/inject/impl/origins.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/inject/impl/privates.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/inject/impl/providers.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/inject/impl/proxy.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/inject/impl/scopes.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/inject/injector.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/inject/inspect.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/inject/keys.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/inject/listeners.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/inject/managed.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/inject/multis.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/inject/origins.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/inject/overrides.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/inject/privates.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/inject/providers.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/inject/scopes.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/inject/types.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/inject/utils.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/iterators.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/lang/__init__.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/lang/cached.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/lang/classes/__init__.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/lang/classes/abstract.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/lang/classes/restrict.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/lang/classes/simple.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/lang/classes/virtual.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/lang/clsdct.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/lang/cmp.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/lang/contextmanagers.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/lang/datetimes.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/lang/descriptors.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/lang/exceptions.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/lang/functions.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/lang/imports.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/lang/iterables.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/lang/maybes.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/lang/objects.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/lang/resolving.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/lang/resources.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/lang/strings.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/lang/sys.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/lang/timeouts.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/lang/typing.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/libc.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/lifecycles/__init__.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/lifecycles/abstract.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/lifecycles/base.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/lifecycles/contextmanagers.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/lifecycles/controller.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/lifecycles/manager.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/lifecycles/states.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/lifecycles/transitions.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/lite/__init__.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/lite/cached.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/lite/check.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/lite/contextmanagers.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/lite/json.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/lite/logs.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/lite/marshal.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/lite/reflect.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/lite/runtime.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/lite/secrets.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/lite/strings.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/lite/subprocesses.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/logs/__init__.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/logs/_abc.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/logs/configs.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/logs/formatters.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/logs/handlers.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/logs/noisy.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/logs/utils.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/marshal/__init__.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/marshal/any.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/marshal/base.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/marshal/base64.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/marshal/dataclasses.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/marshal/datetimes.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/marshal/enums.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/marshal/exceptions.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/marshal/factories.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/marshal/forbidden.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/marshal/global_.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/marshal/helpers.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/marshal/iterables.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/marshal/mappings.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/marshal/maybes.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/marshal/naming.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/marshal/numbers.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/marshal/objects.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/marshal/optionals.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/marshal/polymorphism.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/marshal/primitives.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/marshal/registries.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/marshal/standard.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/marshal/unions.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/marshal/utils.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/marshal/uuids.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/marshal/values.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/matchfns.py +0 -0
- {omlish-0.0.0.dev57/omlish/specs/jsonschema → omlish-0.0.0.dev58/omlish/math}/__init__.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/math/bits.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/math/floats.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/math/stats.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/multiprocessing.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/os.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/reflect/__init__.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/reflect/isinstance.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/reflect/ops.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/reflect/subst.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/reflect/types.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/runmodule.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/secrets/__init__.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/secrets/crypto.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/secrets/marshal.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/secrets/openssl.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/secrets/passwords.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/secrets/secrets.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/secrets/subprocesses.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/specs/__init__.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/specs/jmespath/LICENSE +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/specs/jmespath/__init__.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/specs/jmespath/__main__.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/specs/jmespath/ast.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/specs/jmespath/cli.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/specs/jmespath/exceptions.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/specs/jmespath/functions.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/specs/jmespath/lexer.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/specs/jmespath/parser.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/specs/jmespath/scope.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/specs/jmespath/visitor.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/specs/jsonrpc/__init__.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/specs/jsonrpc/errors.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/specs/jsonrpc/marshal.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/specs/jsonrpc/types.py +0 -0
- {omlish-0.0.0.dev57/omlish/specs/jsonschema/schemas → omlish-0.0.0.dev58/omlish/specs/jsonschema}/__init__.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/specs/jsonschema/keywords/__init__.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/specs/jsonschema/keywords/base.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/specs/jsonschema/keywords/core.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/specs/jsonschema/keywords/metadata.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/specs/jsonschema/keywords/parse.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/specs/jsonschema/keywords/render.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/specs/jsonschema/keywords/validation.py +0 -0
- {omlish-0.0.0.dev57/omlish/specs/jsonschema/schemas/draft202012 → omlish-0.0.0.dev58/omlish/specs/jsonschema/schemas}/__init__.py +0 -0
- {omlish-0.0.0.dev57/omlish/specs/jsonschema/schemas/draft202012/vocabularies → omlish-0.0.0.dev58/omlish/specs/jsonschema/schemas/draft202012}/__init__.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/specs/jsonschema/schemas/draft202012/metaschema.json +0 -0
- {omlish-0.0.0.dev57/omlish/text → omlish-0.0.0.dev58/omlish/specs/jsonschema/schemas/draft202012/vocabularies}/__init__.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/specs/jsonschema/schemas/draft202012/vocabularies/applicator.json +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/specs/jsonschema/schemas/draft202012/vocabularies/content.json +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/specs/jsonschema/schemas/draft202012/vocabularies/core.json +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/specs/jsonschema/schemas/draft202012/vocabularies/format-annotation.json +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/specs/jsonschema/schemas/draft202012/vocabularies/format-assertion.json +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/specs/jsonschema/schemas/draft202012/vocabularies/format.json +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/specs/jsonschema/schemas/draft202012/vocabularies/meta-data.json +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/specs/jsonschema/schemas/draft202012/vocabularies/unevaluated.json +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/specs/jsonschema/schemas/draft202012/vocabularies/validation.json +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/specs/jsonschema/types.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/specs/openapi/__init__.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/specs/openapi/marshal.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/specs/openapi/openapi.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/sql/__init__.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/sql/_abc.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/sql/alchemy/__init__.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/sql/alchemy/asyncs.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/sql/alchemy/duckdb.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/sql/alchemy/exprs.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/sql/alchemy/secrets.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/sql/alchemy/sqlean.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/sql/dbs.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/sql/qualifiedname.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/sync.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/term.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/testing/__init__.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/testing/pytest/__init__.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/testing/pytest/helpers.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/testing/pytest/inject/__init__.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/testing/pytest/inject/harness.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/testing/pytest/marks.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/testing/pytest/plugins/__init__.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/testing/pytest/plugins/_registry.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/testing/pytest/plugins/asyncs.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/testing/pytest/plugins/depskip.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/testing/pytest/plugins/logging.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/testing/pytest/plugins/managermarks.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/testing/pytest/plugins/pydevd.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/testing/pytest/plugins/repeat.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/testing/pytest/plugins/skips.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/testing/pytest/plugins/spacing.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/testing/pytest/plugins/switches.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/testing/pytest/plugins/utils.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/testing/pytest/skip.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/testing/testing.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/text/asdl.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/text/delimit.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/text/glyphsplit.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/text/indent.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish/text/parts.py +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish.egg-info/dependency_links.txt +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish.egg-info/entry_points.txt +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish.egg-info/requires.txt +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/omlish.egg-info/top_level.txt +0 -0
- {omlish-0.0.0.dev57 → omlish-0.0.0.dev58}/setup.cfg +0 -0
@@ -0,0 +1,305 @@
|
|
1
|
+
# type: ignore
|
2
|
+
# ruff: noqa
|
3
|
+
# flake8: noqa
|
4
|
+
#
|
5
|
+
# Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.
|
6
|
+
# Use of this file is governed by the BSD 3-clause license that
|
7
|
+
# can be found in the LICENSE.txt file in the project root.
|
8
|
+
|
9
|
+
# This implementation of {@link TokenStream} loads tokens from a
|
10
|
+
# {@link TokenSource} on-demand, and places the tokens in a buffer to provide
|
11
|
+
# access to any previous token by index.
|
12
|
+
#
|
13
|
+
# <p>
|
14
|
+
# This token stream ignores the value of {@link Token#getChannel}. If your
|
15
|
+
# parser requires the token stream filter tokens to only those on a particular
|
16
|
+
# channel, such as {@link Token#DEFAULT_CHANNEL} or
|
17
|
+
# {@link Token#HIDDEN_CHANNEL}, use a filtering token stream such a
|
18
|
+
# {@link CommonTokenStream}.</p>
|
19
|
+
from io import StringIO
|
20
|
+
from .Token import Token
|
21
|
+
from .error.Errors import IllegalStateException
|
22
|
+
|
23
|
+
# need forward declaration
|
24
|
+
Lexer = None
|
25
|
+
|
26
|
+
# this is just to keep meaningful parameter types to Parser
|
27
|
+
class TokenStream(object):
|
28
|
+
|
29
|
+
pass
|
30
|
+
|
31
|
+
|
32
|
+
class BufferedTokenStream(TokenStream):
|
33
|
+
__slots__ = ('tokenSource', 'tokens', 'index', 'fetchedEOF')
|
34
|
+
|
35
|
+
def __init__(self, tokenSource:Lexer):
|
36
|
+
# The {@link TokenSource} from which tokens for this stream are fetched.
|
37
|
+
self.tokenSource = tokenSource
|
38
|
+
|
39
|
+
# A collection of all tokens fetched from the token source. The list is
|
40
|
+
# considered a complete view of the input once {@link #fetchedEOF} is set
|
41
|
+
# to {@code true}.
|
42
|
+
self.tokens = []
|
43
|
+
|
44
|
+
# The index into {@link #tokens} of the current token (next token to
|
45
|
+
# {@link #consume}). {@link #tokens}{@code [}{@link #p}{@code ]} should be
|
46
|
+
# {@link #LT LT(1)}.
|
47
|
+
#
|
48
|
+
# <p>This field is set to -1 when the stream is first constructed or when
|
49
|
+
# {@link #setTokenSource} is called, indicating that the first token has
|
50
|
+
# not yet been fetched from the token source. For additional information,
|
51
|
+
# see the documentation of {@link IntStream} for a description of
|
52
|
+
# Initializing Methods.</p>
|
53
|
+
self.index = -1
|
54
|
+
|
55
|
+
# Indicates whether the {@link Token#EOF} token has been fetched from
|
56
|
+
# {@link #tokenSource} and added to {@link #tokens}. This field improves
|
57
|
+
# performance for the following cases:
|
58
|
+
#
|
59
|
+
# <ul>
|
60
|
+
# <li>{@link #consume}: The lookahead check in {@link #consume} to prevent
|
61
|
+
# consuming the EOF symbol is optimized by checking the values of
|
62
|
+
# {@link #fetchedEOF} and {@link #p} instead of calling {@link #LA}.</li>
|
63
|
+
# <li>{@link #fetch}: The check to prevent adding multiple EOF symbols into
|
64
|
+
# {@link #tokens} is trivial with this field.</li>
|
65
|
+
# <ul>
|
66
|
+
self.fetchedEOF = False
|
67
|
+
|
68
|
+
def mark(self):
|
69
|
+
return 0
|
70
|
+
|
71
|
+
def release(self, marker:int):
|
72
|
+
# no resources to release
|
73
|
+
pass
|
74
|
+
|
75
|
+
def reset(self):
|
76
|
+
self.seek(0)
|
77
|
+
|
78
|
+
def seek(self, index:int):
|
79
|
+
self.lazyInit()
|
80
|
+
self.index = self.adjustSeekIndex(index)
|
81
|
+
|
82
|
+
def get(self, index:int):
|
83
|
+
self.lazyInit()
|
84
|
+
return self.tokens[index]
|
85
|
+
|
86
|
+
def consume(self):
|
87
|
+
skipEofCheck = False
|
88
|
+
if self.index >= 0:
|
89
|
+
if self.fetchedEOF:
|
90
|
+
# the last token in tokens is EOF. skip check if p indexes any
|
91
|
+
# fetched token except the last.
|
92
|
+
skipEofCheck = self.index < len(self.tokens) - 1
|
93
|
+
else:
|
94
|
+
# no EOF token in tokens. skip check if p indexes a fetched token.
|
95
|
+
skipEofCheck = self.index < len(self.tokens)
|
96
|
+
else:
|
97
|
+
# not yet initialized
|
98
|
+
skipEofCheck = False
|
99
|
+
|
100
|
+
if not skipEofCheck and self.LA(1) == Token.EOF:
|
101
|
+
raise IllegalStateException("cannot consume EOF")
|
102
|
+
|
103
|
+
if self.sync(self.index + 1):
|
104
|
+
self.index = self.adjustSeekIndex(self.index + 1)
|
105
|
+
|
106
|
+
# Make sure index {@code i} in tokens has a token.
|
107
|
+
#
|
108
|
+
# @return {@code true} if a token is located at index {@code i}, otherwise
|
109
|
+
# {@code false}.
|
110
|
+
# @see #get(int i)
|
111
|
+
#/
|
112
|
+
def sync(self, i:int):
|
113
|
+
n = i - len(self.tokens) + 1 # how many more elements we need?
|
114
|
+
if n > 0 :
|
115
|
+
fetched = self.fetch(n)
|
116
|
+
return fetched >= n
|
117
|
+
return True
|
118
|
+
|
119
|
+
# Add {@code n} elements to buffer.
|
120
|
+
#
|
121
|
+
# @return The actual number of elements added to the buffer.
|
122
|
+
#/
|
123
|
+
def fetch(self, n:int):
|
124
|
+
if self.fetchedEOF:
|
125
|
+
return 0
|
126
|
+
for i in range(0, n):
|
127
|
+
t = self.tokenSource.nextToken()
|
128
|
+
t.tokenIndex = len(self.tokens)
|
129
|
+
self.tokens.append(t)
|
130
|
+
if t.type==Token.EOF:
|
131
|
+
self.fetchedEOF = True
|
132
|
+
return i + 1
|
133
|
+
return n
|
134
|
+
|
135
|
+
|
136
|
+
# Get all tokens from start..stop inclusively#/
|
137
|
+
def getTokens(self, start:int, stop:int, types:set=None):
|
138
|
+
if start<0 or stop<0:
|
139
|
+
return None
|
140
|
+
self.lazyInit()
|
141
|
+
subset = []
|
142
|
+
if stop >= len(self.tokens):
|
143
|
+
stop = len(self.tokens)-1
|
144
|
+
for i in range(start, stop):
|
145
|
+
t = self.tokens[i]
|
146
|
+
if t.type==Token.EOF:
|
147
|
+
break
|
148
|
+
if types is None or t.type in types:
|
149
|
+
subset.append(t)
|
150
|
+
return subset
|
151
|
+
|
152
|
+
def LA(self, i:int):
|
153
|
+
return self.LT(i).type
|
154
|
+
|
155
|
+
def LB(self, k:int):
|
156
|
+
if (self.index-k) < 0:
|
157
|
+
return None
|
158
|
+
return self.tokens[self.index-k]
|
159
|
+
|
160
|
+
def LT(self, k:int):
|
161
|
+
self.lazyInit()
|
162
|
+
if k==0:
|
163
|
+
return None
|
164
|
+
if k < 0:
|
165
|
+
return self.LB(-k)
|
166
|
+
i = self.index + k - 1
|
167
|
+
self.sync(i)
|
168
|
+
if i >= len(self.tokens): # return EOF token
|
169
|
+
# EOF must be last token
|
170
|
+
return self.tokens[len(self.tokens)-1]
|
171
|
+
return self.tokens[i]
|
172
|
+
|
173
|
+
# Allowed derived classes to modify the behavior of operations which change
|
174
|
+
# the current stream position by adjusting the target token index of a seek
|
175
|
+
# operation. The default implementation simply returns {@code i}. If an
|
176
|
+
# exception is thrown in this method, the current stream index should not be
|
177
|
+
# changed.
|
178
|
+
#
|
179
|
+
# <p>For example, {@link CommonTokenStream} overrides this method to ensure that
|
180
|
+
# the seek target is always an on-channel token.</p>
|
181
|
+
#
|
182
|
+
# @param i The target token index.
|
183
|
+
# @return The adjusted target token index.
|
184
|
+
|
185
|
+
def adjustSeekIndex(self, i:int):
|
186
|
+
return i
|
187
|
+
|
188
|
+
def lazyInit(self):
|
189
|
+
if self.index == -1:
|
190
|
+
self.setup()
|
191
|
+
|
192
|
+
def setup(self):
|
193
|
+
self.sync(0)
|
194
|
+
self.index = self.adjustSeekIndex(0)
|
195
|
+
|
196
|
+
# Reset this token stream by setting its token source.#/
|
197
|
+
def setTokenSource(self, tokenSource:Lexer):
|
198
|
+
self.tokenSource = tokenSource
|
199
|
+
self.tokens = []
|
200
|
+
self.index = -1
|
201
|
+
self.fetchedEOF = False
|
202
|
+
|
203
|
+
|
204
|
+
# Given a starting index, return the index of the next token on channel.
|
205
|
+
# Return i if tokens[i] is on channel. Return the index of the EOF token
|
206
|
+
# if there are no tokens on channel between i and EOF.
|
207
|
+
#/
|
208
|
+
def nextTokenOnChannel(self, i:int, channel:int):
|
209
|
+
self.sync(i)
|
210
|
+
if i>=len(self.tokens):
|
211
|
+
return len(self.tokens) - 1
|
212
|
+
token = self.tokens[i]
|
213
|
+
while token.channel!=channel:
|
214
|
+
if token.type==Token.EOF:
|
215
|
+
return i
|
216
|
+
i += 1
|
217
|
+
self.sync(i)
|
218
|
+
token = self.tokens[i]
|
219
|
+
return i
|
220
|
+
|
221
|
+
# Given a starting index, return the index of the previous token on channel.
|
222
|
+
# Return i if tokens[i] is on channel. Return -1 if there are no tokens
|
223
|
+
# on channel between i and 0.
|
224
|
+
def previousTokenOnChannel(self, i:int, channel:int):
|
225
|
+
while i>=0 and self.tokens[i].channel!=channel:
|
226
|
+
i -= 1
|
227
|
+
return i
|
228
|
+
|
229
|
+
# Collect all tokens on specified channel to the right of
|
230
|
+
# the current token up until we see a token on DEFAULT_TOKEN_CHANNEL or
|
231
|
+
# EOF. If channel is -1, find any non default channel token.
|
232
|
+
def getHiddenTokensToRight(self, tokenIndex:int, channel:int=-1):
|
233
|
+
self.lazyInit()
|
234
|
+
if tokenIndex<0 or tokenIndex>=len(self.tokens):
|
235
|
+
raise Exception(str(tokenIndex) + " not in 0.." + str(len(self.tokens)-1))
|
236
|
+
from .Lexer import Lexer
|
237
|
+
nextOnChannel = self.nextTokenOnChannel(tokenIndex + 1, Lexer.DEFAULT_TOKEN_CHANNEL)
|
238
|
+
from_ = tokenIndex+1
|
239
|
+
# if none onchannel to right, nextOnChannel=-1 so set to = last token
|
240
|
+
to = (len(self.tokens)-1) if nextOnChannel==-1 else nextOnChannel
|
241
|
+
return self.filterForChannel(from_, to, channel)
|
242
|
+
|
243
|
+
|
244
|
+
# Collect all tokens on specified channel to the left of
|
245
|
+
# the current token up until we see a token on DEFAULT_TOKEN_CHANNEL.
|
246
|
+
# If channel is -1, find any non default channel token.
|
247
|
+
def getHiddenTokensToLeft(self, tokenIndex:int, channel:int=-1):
|
248
|
+
self.lazyInit()
|
249
|
+
if tokenIndex<0 or tokenIndex>=len(self.tokens):
|
250
|
+
raise Exception(str(tokenIndex) + " not in 0.." + str(len(self.tokens)-1))
|
251
|
+
from .Lexer import Lexer
|
252
|
+
prevOnChannel = self.previousTokenOnChannel(tokenIndex - 1, Lexer.DEFAULT_TOKEN_CHANNEL)
|
253
|
+
if prevOnChannel == tokenIndex - 1:
|
254
|
+
return None
|
255
|
+
# if none on channel to left, prevOnChannel=-1 then from=0
|
256
|
+
from_ = prevOnChannel+1
|
257
|
+
to = tokenIndex-1
|
258
|
+
return self.filterForChannel(from_, to, channel)
|
259
|
+
|
260
|
+
|
261
|
+
def filterForChannel(self, left:int, right:int, channel:int):
|
262
|
+
hidden = []
|
263
|
+
for i in range(left, right+1):
|
264
|
+
t = self.tokens[i]
|
265
|
+
if channel==-1:
|
266
|
+
from .Lexer import Lexer
|
267
|
+
if t.channel!= Lexer.DEFAULT_TOKEN_CHANNEL:
|
268
|
+
hidden.append(t)
|
269
|
+
elif t.channel==channel:
|
270
|
+
hidden.append(t)
|
271
|
+
if len(hidden)==0:
|
272
|
+
return None
|
273
|
+
return hidden
|
274
|
+
|
275
|
+
def getSourceName(self):
|
276
|
+
return self.tokenSource.getSourceName()
|
277
|
+
|
278
|
+
# Get the text of all tokens in this buffer.#/
|
279
|
+
def getText(self, start:int=None, stop:int=None):
|
280
|
+
self.lazyInit()
|
281
|
+
self.fill()
|
282
|
+
if isinstance(start, Token):
|
283
|
+
start = start.tokenIndex
|
284
|
+
elif start is None:
|
285
|
+
start = 0
|
286
|
+
if isinstance(stop, Token):
|
287
|
+
stop = stop.tokenIndex
|
288
|
+
elif stop is None or stop >= len(self.tokens):
|
289
|
+
stop = len(self.tokens) - 1
|
290
|
+
if start < 0 or stop < 0 or stop < start:
|
291
|
+
return ""
|
292
|
+
with StringIO() as buf:
|
293
|
+
for i in range(start, stop+1):
|
294
|
+
t = self.tokens[i]
|
295
|
+
if t.type==Token.EOF:
|
296
|
+
break
|
297
|
+
buf.write(t.text)
|
298
|
+
return buf.getvalue()
|
299
|
+
|
300
|
+
|
301
|
+
# Get all tokens from lexer until EOF#/
|
302
|
+
def fill(self):
|
303
|
+
self.lazyInit()
|
304
|
+
while self.fetch(1000)==1000:
|
305
|
+
pass
|
@@ -0,0 +1,64 @@
|
|
1
|
+
# type: ignore
|
2
|
+
# ruff: noqa
|
3
|
+
# flake8: noqa
|
4
|
+
#
|
5
|
+
# Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.
|
6
|
+
# Use of this file is governed by the BSD 3-clause license that
|
7
|
+
# can be found in the LICENSE.txt file in the project root.
|
8
|
+
#
|
9
|
+
|
10
|
+
#
|
11
|
+
# This default implementation of {@link TokenFactory} creates
|
12
|
+
# {@link CommonToken} objects.
|
13
|
+
#
|
14
|
+
from .Token import CommonToken
|
15
|
+
|
16
|
+
class TokenFactory(object):
|
17
|
+
|
18
|
+
pass
|
19
|
+
|
20
|
+
class CommonTokenFactory(TokenFactory):
|
21
|
+
__slots__ = 'copyText'
|
22
|
+
|
23
|
+
#
|
24
|
+
# The default {@link CommonTokenFactory} instance.
|
25
|
+
#
|
26
|
+
# <p>
|
27
|
+
# This token factory does not explicitly copy token text when constructing
|
28
|
+
# tokens.</p>
|
29
|
+
#
|
30
|
+
DEFAULT = None
|
31
|
+
|
32
|
+
def __init__(self, copyText:bool=False):
|
33
|
+
# Indicates whether {@link CommonToken#setText} should be called after
|
34
|
+
# constructing tokens to explicitly set the text. This is useful for cases
|
35
|
+
# where the input stream might not be able to provide arbitrary substrings
|
36
|
+
# of text from the input after the lexer creates a token (e.g. the
|
37
|
+
# implementation of {@link CharStream#getText} in
|
38
|
+
# {@link UnbufferedCharStream} throws an
|
39
|
+
# {@link UnsupportedOperationException}). Explicitly setting the token text
|
40
|
+
# allows {@link Token#getText} to be called at any time regardless of the
|
41
|
+
# input stream implementation.
|
42
|
+
#
|
43
|
+
# <p>
|
44
|
+
# The default value is {@code false} to avoid the performance and memory
|
45
|
+
# overhead of copying text for every token unless explicitly requested.</p>
|
46
|
+
#
|
47
|
+
self.copyText = copyText
|
48
|
+
|
49
|
+
def create(self, source, type:int, text:str, channel:int, start:int, stop:int, line:int, column:int):
|
50
|
+
t = CommonToken(source, type, channel, start, stop)
|
51
|
+
t.line = line
|
52
|
+
t.column = column
|
53
|
+
if text is not None:
|
54
|
+
t.text = text
|
55
|
+
elif self.copyText and source[1] is not None:
|
56
|
+
t.text = source[1].getText(start,stop)
|
57
|
+
return t
|
58
|
+
|
59
|
+
def createThin(self, type:int, text:str):
|
60
|
+
t = CommonToken(type=type)
|
61
|
+
t.text = text
|
62
|
+
return t
|
63
|
+
|
64
|
+
CommonTokenFactory.DEFAULT = CommonTokenFactory()
|
@@ -0,0 +1,90 @@
|
|
1
|
+
# type: ignore
|
2
|
+
# ruff: noqa
|
3
|
+
# flake8: noqa
|
4
|
+
#
|
5
|
+
# Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.
|
6
|
+
# Use of this file is governed by the BSD 3-clause license that
|
7
|
+
# can be found in the LICENSE.txt file in the project root.
|
8
|
+
#/
|
9
|
+
|
10
|
+
#
|
11
|
+
# This class extends {@link BufferedTokenStream} with functionality to filter
|
12
|
+
# token streams to tokens on a particular channel (tokens where
|
13
|
+
# {@link Token#getChannel} returns a particular value).
|
14
|
+
#
|
15
|
+
# <p>
|
16
|
+
# This token stream provides access to all tokens by index or when calling
|
17
|
+
# methods like {@link #getText}. The channel filtering is only used for code
|
18
|
+
# accessing tokens via the lookahead methods {@link #LA}, {@link #LT}, and
|
19
|
+
# {@link #LB}.</p>
|
20
|
+
#
|
21
|
+
# <p>
|
22
|
+
# By default, tokens are placed on the default channel
|
23
|
+
# ({@link Token#DEFAULT_CHANNEL}), but may be reassigned by using the
|
24
|
+
# {@code ->channel(HIDDEN)} lexer command, or by using an embedded action to
|
25
|
+
# call {@link Lexer#setChannel}.
|
26
|
+
# </p>
|
27
|
+
#
|
28
|
+
# <p>
|
29
|
+
# Note: lexer rules which use the {@code ->skip} lexer command or call
|
30
|
+
# {@link Lexer#skip} do not produce tokens at all, so input text matched by
|
31
|
+
# such a rule will not be available as part of the token stream, regardless of
|
32
|
+
# channel.</p>
|
33
|
+
#/
|
34
|
+
|
35
|
+
from .BufferedTokenStream import BufferedTokenStream
|
36
|
+
from .Lexer import Lexer
|
37
|
+
from .Token import Token
|
38
|
+
|
39
|
+
|
40
|
+
class CommonTokenStream(BufferedTokenStream):
|
41
|
+
__slots__ = 'channel'
|
42
|
+
|
43
|
+
def __init__(self, lexer:Lexer, channel:int=Token.DEFAULT_CHANNEL):
|
44
|
+
super().__init__(lexer)
|
45
|
+
self.channel = channel
|
46
|
+
|
47
|
+
def adjustSeekIndex(self, i:int):
|
48
|
+
return self.nextTokenOnChannel(i, self.channel)
|
49
|
+
|
50
|
+
def LB(self, k:int):
|
51
|
+
if k==0 or (self.index-k)<0:
|
52
|
+
return None
|
53
|
+
i = self.index
|
54
|
+
n = 1
|
55
|
+
# find k good tokens looking backwards
|
56
|
+
while n <= k:
|
57
|
+
# skip off-channel tokens
|
58
|
+
i = self.previousTokenOnChannel(i - 1, self.channel)
|
59
|
+
n += 1
|
60
|
+
if i < 0:
|
61
|
+
return None
|
62
|
+
return self.tokens[i]
|
63
|
+
|
64
|
+
def LT(self, k:int):
|
65
|
+
self.lazyInit()
|
66
|
+
if k == 0:
|
67
|
+
return None
|
68
|
+
if k < 0:
|
69
|
+
return self.LB(-k)
|
70
|
+
i = self.index
|
71
|
+
n = 1 # we know tokens[pos] is a good one
|
72
|
+
# find k good tokens
|
73
|
+
while n < k:
|
74
|
+
# skip off-channel tokens, but make sure to not look past EOF
|
75
|
+
if self.sync(i + 1):
|
76
|
+
i = self.nextTokenOnChannel(i + 1, self.channel)
|
77
|
+
n += 1
|
78
|
+
return self.tokens[i]
|
79
|
+
|
80
|
+
# Count EOF just once.#/
|
81
|
+
def getNumberOfOnChannelTokens(self):
|
82
|
+
n = 0
|
83
|
+
self.fill()
|
84
|
+
for i in range(0, len(self.tokens)):
|
85
|
+
t = self.tokens[i]
|
86
|
+
if t.channel==self.channel:
|
87
|
+
n += 1
|
88
|
+
if t.type==Token.EOF:
|
89
|
+
break
|
90
|
+
return n
|
@@ -0,0 +1,30 @@
|
|
1
|
+
# type: ignore
|
2
|
+
# ruff: noqa
|
3
|
+
# flake8: noqa
|
4
|
+
#
|
5
|
+
# Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.
|
6
|
+
# Use of this file is governed by the BSD 3-clause license that
|
7
|
+
# can be found in the LICENSE.txt file in the project root.
|
8
|
+
#
|
9
|
+
|
10
|
+
#
|
11
|
+
# This is an InputStream that is loaded from a file all at once
|
12
|
+
# when you construct the object.
|
13
|
+
#
|
14
|
+
|
15
|
+
import codecs
|
16
|
+
from .InputStream import InputStream
|
17
|
+
|
18
|
+
|
19
|
+
class FileStream(InputStream):
|
20
|
+
__slots__ = 'fileName'
|
21
|
+
|
22
|
+
def __init__(self, fileName:str, encoding:str='ascii', errors:str='strict'):
|
23
|
+
super().__init__(self.readDataFrom(fileName, encoding, errors))
|
24
|
+
self.fileName = fileName
|
25
|
+
|
26
|
+
def readDataFrom(self, fileName:str, encoding:str, errors:str='strict'):
|
27
|
+
# read binary to avoid line ending conversion
|
28
|
+
with open(fileName, 'rb') as file:
|
29
|
+
bytes = file.read()
|
30
|
+
return codecs.decode(bytes, encoding, errors)
|
@@ -0,0 +1,90 @@
|
|
1
|
+
# type: ignore
|
2
|
+
# ruff: noqa
|
3
|
+
# flake8: noqa
|
4
|
+
#
|
5
|
+
# Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.
|
6
|
+
# Use of this file is governed by the BSD 3-clause license that
|
7
|
+
# can be found in the LICENSE.txt file in the project root.
|
8
|
+
#
|
9
|
+
|
10
|
+
|
11
|
+
#
|
12
|
+
# Vacuum all input from a string and then treat it like a buffer.
|
13
|
+
#
|
14
|
+
from .Token import Token
|
15
|
+
|
16
|
+
|
17
|
+
class InputStream (object):
|
18
|
+
__slots__ = ('name', 'strdata', '_index', 'data', '_size')
|
19
|
+
|
20
|
+
def __init__(self, data: str):
|
21
|
+
self.name = "<empty>"
|
22
|
+
self.strdata = data
|
23
|
+
self._loadString()
|
24
|
+
|
25
|
+
def _loadString(self):
|
26
|
+
self._index = 0
|
27
|
+
self.data = [ord(c) for c in self.strdata]
|
28
|
+
self._size = len(self.data)
|
29
|
+
|
30
|
+
@property
|
31
|
+
def index(self):
|
32
|
+
return self._index
|
33
|
+
|
34
|
+
@property
|
35
|
+
def size(self):
|
36
|
+
return self._size
|
37
|
+
|
38
|
+
# Reset the stream so that it's in the same state it was
|
39
|
+
# when the object was created *except* the data array is not
|
40
|
+
# touched.
|
41
|
+
#
|
42
|
+
def reset(self):
|
43
|
+
self._index = 0
|
44
|
+
|
45
|
+
def consume(self):
|
46
|
+
if self._index >= self._size:
|
47
|
+
assert self.LA(1) == Token.EOF
|
48
|
+
raise Exception("cannot consume EOF")
|
49
|
+
self._index += 1
|
50
|
+
|
51
|
+
def LA(self, offset: int):
|
52
|
+
if offset==0:
|
53
|
+
return 0 # undefined
|
54
|
+
if offset<0:
|
55
|
+
offset += 1 # e.g., translate LA(-1) to use offset=0
|
56
|
+
pos = self._index + offset - 1
|
57
|
+
if pos < 0 or pos >= self._size: # invalid
|
58
|
+
return Token.EOF
|
59
|
+
return self.data[pos]
|
60
|
+
|
61
|
+
def LT(self, offset: int):
|
62
|
+
return self.LA(offset)
|
63
|
+
|
64
|
+
# mark/release do nothing; we have entire buffer
|
65
|
+
def mark(self):
|
66
|
+
return -1
|
67
|
+
|
68
|
+
def release(self, marker: int):
|
69
|
+
pass
|
70
|
+
|
71
|
+
# consume() ahead until p==_index; can't just set p=_index as we must
|
72
|
+
# update line and column. If we seek backwards, just set p
|
73
|
+
#
|
74
|
+
def seek(self, _index: int):
|
75
|
+
if _index<=self._index:
|
76
|
+
self._index = _index # just jump; don't update stream state (line, ...)
|
77
|
+
return
|
78
|
+
# seek forward
|
79
|
+
self._index = min(_index, self._size)
|
80
|
+
|
81
|
+
def getText(self, start :int, stop: int):
|
82
|
+
if stop >= self._size:
|
83
|
+
stop = self._size-1
|
84
|
+
if start >= self._size:
|
85
|
+
return ""
|
86
|
+
else:
|
87
|
+
return self.strdata[start:stop+1]
|
88
|
+
|
89
|
+
def __str__(self):
|
90
|
+
return self.strdata
|