omextra 0.0.0.dev508__tar.gz → 0.0.0.dev509__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.
- {omextra-0.0.0.dev508/omextra.egg-info → omextra-0.0.0.dev509}/PKG-INFO +2 -2
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/collections/hamt/_hamt.c +115 -80
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509/omextra.egg-info}/PKG-INFO +2 -2
- omextra-0.0.0.dev509/omextra.egg-info/requires.txt +1 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/pyproject.toml +2 -2
- omextra-0.0.0.dev508/omextra.egg-info/requires.txt +0 -1
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/LICENSE +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/MANIFEST.in +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/README.md +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/.omlish-manifests.json +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/README.md +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/__about__.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/__init__.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/asyncs/__init__.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/asyncs/bluelet/LICENSE +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/asyncs/bluelet/__init__.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/asyncs/bluelet/all.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/asyncs/bluelet/api.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/asyncs/bluelet/core.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/asyncs/bluelet/events.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/asyncs/bluelet/files.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/asyncs/bluelet/runner.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/asyncs/bluelet/sockets.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/asyncs/bridge.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/collections/__init__.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/collections/hamt/LICENSE +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/collections/hamt/__init__.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/defs.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/dynamic.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/formats/__init__.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/formats/goyaml/LICENSE +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/formats/goyaml/__init__.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/formats/goyaml/ast.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/formats/goyaml/errors.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/formats/goyaml/parsing.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/formats/goyaml/scanning.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/formats/goyaml/tokens.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/formats/json/Json.g4 +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/formats/json/__init__.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/formats/json/_antlr/JsonLexer.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/formats/json/_antlr/JsonListener.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/formats/json/_antlr/JsonParser.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/formats/json/_antlr/JsonVisitor.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/formats/json/_antlr/__init__.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/formats/json5/Json5.g4 +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/formats/json5/__init__.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/formats/json5/_antlr/Json5Lexer.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/formats/json5/_antlr/Json5Listener.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/formats/json5/_antlr/Json5Parser.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/formats/json5/_antlr/Json5Visitor.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/formats/json5/_antlr/__init__.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/formats/json5/parsing.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/io/__init__.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/io/buffers/DESIGN.md +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/io/buffers/__init__.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/io/buffers/adapters.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/io/buffers/all.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/io/buffers/errors.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/io/buffers/framing.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/io/buffers/linear.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/io/buffers/reading.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/io/buffers/scanning.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/io/buffers/segmented.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/io/buffers/types.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/io/buffers/utils.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/io/trampoline.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/specs/__init__.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/specs/proto/Protobuf3.g4 +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/specs/proto/__init__.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/specs/proto/_antlr/Protobuf3Lexer.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/specs/proto/_antlr/Protobuf3Listener.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/specs/proto/_antlr/Protobuf3Parser.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/specs/proto/_antlr/Protobuf3Visitor.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/specs/proto/_antlr/__init__.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/specs/proto/nodes.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/specs/proto/parsing.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/sql/__init__.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/sql/parsing/Minisql.g4 +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/sql/parsing/__init__.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/sql/parsing/_antlr/MinisqlLexer.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/sql/parsing/_antlr/MinisqlListener.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/sql/parsing/_antlr/MinisqlParser.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/sql/parsing/_antlr/MinisqlVisitor.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/sql/parsing/_antlr/__init__.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/sql/parsing/parsing.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/text/__init__.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/text/abnf/LICENSE +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/text/abnf/__init__.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/text/abnf/_dataclasses.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/text/abnf/base.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/text/abnf/core.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/text/abnf/docs/__init__.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/text/abnf/docs/rfc5234.txt +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/text/abnf/docs/rfc7405.txt +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/text/abnf/errors.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/text/abnf/grammars.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/text/abnf/internal.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/text/abnf/matches.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/text/abnf/meta.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/text/abnf/ops.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/text/abnf/opto.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/text/abnf/parsing.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/text/abnf/utils.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/text/abnf/visitors.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/text/antlr/__init__.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/text/antlr/_runtime/BufferedTokenStream.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/text/antlr/_runtime/CommonTokenFactory.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/text/antlr/_runtime/CommonTokenStream.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/text/antlr/_runtime/FileStream.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/text/antlr/_runtime/InputStream.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/text/antlr/_runtime/IntervalSet.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/text/antlr/_runtime/LICENSE.txt +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/text/antlr/_runtime/LL1Analyzer.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/text/antlr/_runtime/Lexer.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/text/antlr/_runtime/ListTokenSource.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/text/antlr/_runtime/Parser.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/text/antlr/_runtime/ParserInterpreter.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/text/antlr/_runtime/ParserRuleContext.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/text/antlr/_runtime/PredictionContext.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/text/antlr/_runtime/Recognizer.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/text/antlr/_runtime/RuleContext.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/text/antlr/_runtime/StdinStream.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/text/antlr/_runtime/Token.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/text/antlr/_runtime/TokenStreamRewriter.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/text/antlr/_runtime/Utils.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/text/antlr/_runtime/__init__.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/text/antlr/_runtime/_all.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/text/antlr/_runtime/_pygrun.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/text/antlr/_runtime/atn/ATN.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/text/antlr/_runtime/atn/ATNConfig.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/text/antlr/_runtime/atn/ATNConfigSet.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/text/antlr/_runtime/atn/ATNDeserializationOptions.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/text/antlr/_runtime/atn/ATNDeserializer.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/text/antlr/_runtime/atn/ATNSimulator.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/text/antlr/_runtime/atn/ATNState.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/text/antlr/_runtime/atn/ATNType.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/text/antlr/_runtime/atn/LexerATNSimulator.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/text/antlr/_runtime/atn/LexerAction.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/text/antlr/_runtime/atn/LexerActionExecutor.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/text/antlr/_runtime/atn/ParserATNSimulator.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/text/antlr/_runtime/atn/PredictionMode.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/text/antlr/_runtime/atn/SemanticContext.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/text/antlr/_runtime/atn/Transition.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/text/antlr/_runtime/atn/__init__.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/text/antlr/_runtime/dfa/DFA.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/text/antlr/_runtime/dfa/DFASerializer.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/text/antlr/_runtime/dfa/DFAState.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/text/antlr/_runtime/dfa/__init__.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/text/antlr/_runtime/error/DiagnosticErrorListener.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/text/antlr/_runtime/error/ErrorListener.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/text/antlr/_runtime/error/ErrorStrategy.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/text/antlr/_runtime/error/Errors.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/text/antlr/_runtime/error/__init__.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/text/antlr/_runtime/tree/Chunk.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/text/antlr/_runtime/tree/ParseTreeMatch.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/text/antlr/_runtime/tree/ParseTreePattern.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/text/antlr/_runtime/tree/ParseTreePatternMatcher.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/text/antlr/_runtime/tree/RuleTagToken.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/text/antlr/_runtime/tree/TokenTagToken.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/text/antlr/_runtime/tree/Tree.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/text/antlr/_runtime/tree/Trees.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/text/antlr/_runtime/tree/__init__.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/text/antlr/_runtime/xpath/XPath.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/text/antlr/_runtime/xpath/XPathLexer.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/text/antlr/_runtime/xpath/__init__.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/text/antlr/cli/__init__.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/text/antlr/cli/__main__.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/text/antlr/cli/cli.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/text/antlr/cli/consts.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/text/antlr/cli/gen.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/text/antlr/delimit.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/text/antlr/dot.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/text/antlr/errors.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/text/antlr/input.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/text/antlr/parsing.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/text/antlr/runtime.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra/text/antlr/utils.py +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra.egg-info/SOURCES.txt +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra.egg-info/dependency_links.txt +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra.egg-info/entry_points.txt +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/omextra.egg-info/top_level.txt +0 -0
- {omextra-0.0.0.dev508 → omextra-0.0.0.dev509}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: omextra
|
|
3
|
-
Version: 0.0.0.
|
|
3
|
+
Version: 0.0.0.dev509
|
|
4
4
|
Summary: omextra
|
|
5
5
|
Author: wrmsr
|
|
6
6
|
License-Expression: BSD-3-Clause
|
|
@@ -14,7 +14,7 @@ Classifier: Programming Language :: Python :: 3.13
|
|
|
14
14
|
Requires-Python: >=3.13
|
|
15
15
|
Description-Content-Type: text/markdown
|
|
16
16
|
License-File: LICENSE
|
|
17
|
-
Requires-Dist: omlish==0.0.0.
|
|
17
|
+
Requires-Dist: omlish==0.0.0.dev509
|
|
18
18
|
Dynamic: license-file
|
|
19
19
|
|
|
20
20
|
# Overview
|
|
@@ -36,7 +36,9 @@
|
|
|
36
36
|
// 8. By copying, installing or otherwise using Python, Licensee agrees to be bound by the terms and conditions of this
|
|
37
37
|
// License Agreement.
|
|
38
38
|
//
|
|
39
|
-
// https://github.com/python/cpython/
|
|
39
|
+
// https://github.com/python/cpython/blob/main/Python/hamt.c
|
|
40
|
+
//
|
|
41
|
+
// original: https://github.com/python/cpython/commit/aa18fd55d575a04e3aa782fedcd08dced26676e0
|
|
40
42
|
//
|
|
41
43
|
#define PY_SSIZE_T_CLEAN
|
|
42
44
|
|
|
@@ -611,6 +613,8 @@ typedef struct {
|
|
|
611
613
|
Py_ssize_t a_count;
|
|
612
614
|
} HamtNode_Array;
|
|
613
615
|
|
|
616
|
+
#define _HamtNode_Array_CAST(op) ((HamtNode_Array *)(op))
|
|
617
|
+
|
|
614
618
|
|
|
615
619
|
typedef struct {
|
|
616
620
|
PyObject_VAR_HEAD
|
|
@@ -618,6 +622,8 @@ typedef struct {
|
|
|
618
622
|
PyObject *c_array[1];
|
|
619
623
|
} HamtNode_Collision;
|
|
620
624
|
|
|
625
|
+
#define _HamtNode_Collision_CAST(op) ((HamtNode_Collision *)(op))
|
|
626
|
+
|
|
621
627
|
|
|
622
628
|
static HamtObject *
|
|
623
629
|
hamt_alloc(hamt_module_state *state);
|
|
@@ -794,6 +800,8 @@ _hamt_dump_format(_PyUnicodeWriter *writer, const char *format, ...)
|
|
|
794
800
|
#endif /* Py_DEBUG */
|
|
795
801
|
/////////////////////////////////// Bitmap Node
|
|
796
802
|
|
|
803
|
+
#define _HamtNode_Bitmap_CAST(op) ((HamtNode_Bitmap *)(op))
|
|
804
|
+
|
|
797
805
|
|
|
798
806
|
static HamtNode *
|
|
799
807
|
hamt_node_bitmap_new(hamt_module_state *state, Py_ssize_t size)
|
|
@@ -1406,13 +1414,12 @@ hamt_node_bitmap_find(HamtNode_Bitmap *self,
|
|
|
1406
1414
|
}
|
|
1407
1415
|
|
|
1408
1416
|
static int
|
|
1409
|
-
hamt_node_bitmap_traverse(
|
|
1417
|
+
hamt_node_bitmap_traverse(PyObject *op, visitproc visit, void *arg)
|
|
1410
1418
|
{
|
|
1411
1419
|
/* Bitmap's tp_traverse */
|
|
1412
1420
|
|
|
1413
|
-
|
|
1414
|
-
|
|
1415
|
-
for (i = Py_SIZE(self); --i >= 0; ) {
|
|
1421
|
+
HamtNode_Bitmap *self = _HamtNode_Bitmap_CAST(op);
|
|
1422
|
+
for (Py_ssize_t i = Py_SIZE(self); --i >= 0;) {
|
|
1416
1423
|
Py_VISIT(self->b_array[i]);
|
|
1417
1424
|
}
|
|
1418
1425
|
|
|
@@ -1420,17 +1427,16 @@ hamt_node_bitmap_traverse(HamtNode_Bitmap *self, visitproc visit, void *arg)
|
|
|
1420
1427
|
}
|
|
1421
1428
|
|
|
1422
1429
|
static void
|
|
1423
|
-
hamt_node_bitmap_dealloc(
|
|
1430
|
+
hamt_node_bitmap_dealloc(PyObject *self)
|
|
1424
1431
|
{
|
|
1425
1432
|
/* Bitmap's tp_dealloc */
|
|
1426
1433
|
|
|
1427
|
-
|
|
1428
|
-
Py_ssize_t i;
|
|
1434
|
+
HamtNode_Bitmap *node = _HamtNode_Bitmap_CAST(self);
|
|
1435
|
+
Py_ssize_t i, len = Py_SIZE(self);
|
|
1429
1436
|
|
|
1430
|
-
if (
|
|
1437
|
+
if (len == 0) {
|
|
1431
1438
|
/* The empty node is managed by the module state. */
|
|
1432
|
-
|
|
1433
|
-
assert(self == state->empty_bitmap_node);
|
|
1439
|
+
assert(node == get_hamt_state_from_obj(self)->empty_bitmap_node);
|
|
1434
1440
|
#ifdef Py_DEBUG
|
|
1435
1441
|
_Py_FatalRefcountError("deallocating the empty hamt node bitmap singleton");
|
|
1436
1442
|
#else
|
|
@@ -1444,11 +1450,11 @@ hamt_node_bitmap_dealloc(HamtNode_Bitmap *self)
|
|
|
1444
1450
|
if (len > 0) {
|
|
1445
1451
|
i = len;
|
|
1446
1452
|
while (--i >= 0) {
|
|
1447
|
-
Py_XDECREF(
|
|
1453
|
+
Py_XDECREF(node->b_array[i]);
|
|
1448
1454
|
}
|
|
1449
1455
|
}
|
|
1450
1456
|
|
|
1451
|
-
Py_TYPE(self)->tp_free(
|
|
1457
|
+
Py_TYPE(self)->tp_free(self);
|
|
1452
1458
|
Py_TRASHCAN_END
|
|
1453
1459
|
}
|
|
1454
1460
|
|
|
@@ -1824,14 +1830,12 @@ hamt_node_collision_find(HamtNode_Collision *self,
|
|
|
1824
1830
|
|
|
1825
1831
|
|
|
1826
1832
|
static int
|
|
1827
|
-
hamt_node_collision_traverse(
|
|
1828
|
-
visitproc visit, void *arg)
|
|
1833
|
+
hamt_node_collision_traverse(PyObject *op, visitproc visit, void *arg)
|
|
1829
1834
|
{
|
|
1830
1835
|
/* Collision's tp_traverse */
|
|
1831
1836
|
|
|
1832
|
-
|
|
1833
|
-
|
|
1834
|
-
for (i = Py_SIZE(self); --i >= 0; ) {
|
|
1837
|
+
HamtNode_Collision *self = _HamtNode_Collision_CAST(op);
|
|
1838
|
+
for (Py_ssize_t i = Py_SIZE(self); --i >= 0; ) {
|
|
1835
1839
|
Py_VISIT(self->c_array[i]);
|
|
1836
1840
|
}
|
|
1837
1841
|
|
|
@@ -1839,7 +1843,7 @@ hamt_node_collision_traverse(HamtNode_Collision *self,
|
|
|
1839
1843
|
}
|
|
1840
1844
|
|
|
1841
1845
|
static void
|
|
1842
|
-
hamt_node_collision_dealloc(
|
|
1846
|
+
hamt_node_collision_dealloc(PyObject *self)
|
|
1843
1847
|
{
|
|
1844
1848
|
/* Collision's tp_dealloc */
|
|
1845
1849
|
|
|
@@ -1849,13 +1853,13 @@ hamt_node_collision_dealloc(HamtNode_Collision *self)
|
|
|
1849
1853
|
Py_TRASHCAN_BEGIN(self, hamt_node_collision_dealloc)
|
|
1850
1854
|
|
|
1851
1855
|
if (len > 0) {
|
|
1852
|
-
|
|
1856
|
+
HamtNode_Collision *node = _HamtNode_Collision_CAST(self);
|
|
1853
1857
|
while (--len >= 0) {
|
|
1854
|
-
Py_XDECREF(
|
|
1858
|
+
Py_XDECREF(node->c_array[len]);
|
|
1855
1859
|
}
|
|
1856
1860
|
}
|
|
1857
1861
|
|
|
1858
|
-
Py_TYPE(self)->tp_free(
|
|
1862
|
+
Py_TYPE(self)->tp_free(self);
|
|
1859
1863
|
Py_TRASHCAN_END
|
|
1860
1864
|
}
|
|
1861
1865
|
|
|
@@ -2207,14 +2211,12 @@ hamt_node_array_find(HamtNode_Array *self,
|
|
|
2207
2211
|
}
|
|
2208
2212
|
|
|
2209
2213
|
static int
|
|
2210
|
-
hamt_node_array_traverse(
|
|
2211
|
-
visitproc visit, void *arg)
|
|
2214
|
+
hamt_node_array_traverse(PyObject *op, visitproc visit, void *arg)
|
|
2212
2215
|
{
|
|
2213
2216
|
/* Array's tp_traverse */
|
|
2214
2217
|
|
|
2215
|
-
|
|
2216
|
-
|
|
2217
|
-
for (i = 0; i < HAMT_ARRAY_NODE_SIZE; i++) {
|
|
2218
|
+
HamtNode_Array *self = _HamtNode_Array_CAST(op);
|
|
2219
|
+
for (Py_ssize_t i = 0; i < HAMT_ARRAY_NODE_SIZE; i++) {
|
|
2218
2220
|
Py_VISIT(self->a_array[i]);
|
|
2219
2221
|
}
|
|
2220
2222
|
|
|
@@ -2222,20 +2224,19 @@ hamt_node_array_traverse(HamtNode_Array *self,
|
|
|
2222
2224
|
}
|
|
2223
2225
|
|
|
2224
2226
|
static void
|
|
2225
|
-
hamt_node_array_dealloc(
|
|
2227
|
+
hamt_node_array_dealloc(PyObject *self)
|
|
2226
2228
|
{
|
|
2227
2229
|
/* Array's tp_dealloc */
|
|
2228
2230
|
|
|
2229
|
-
Py_ssize_t i;
|
|
2230
|
-
|
|
2231
2231
|
PyObject_GC_UnTrack(self);
|
|
2232
2232
|
Py_TRASHCAN_BEGIN(self, hamt_node_array_dealloc)
|
|
2233
2233
|
|
|
2234
|
-
|
|
2235
|
-
|
|
2234
|
+
HamtNode_Array *obj = _HamtNode_Array_CAST(self);
|
|
2235
|
+
for (Py_ssize_t i = 0; i < HAMT_ARRAY_NODE_SIZE; i++) {
|
|
2236
|
+
Py_XDECREF(obj->a_array[i]);
|
|
2236
2237
|
}
|
|
2237
2238
|
|
|
2238
|
-
Py_TYPE(self)->tp_free(
|
|
2239
|
+
Py_TYPE(self)->tp_free(self);
|
|
2239
2240
|
Py_TRASHCAN_END
|
|
2240
2241
|
}
|
|
2241
2242
|
|
|
@@ -2661,7 +2662,6 @@ hamt_find(HamtObject *o, PyObject *key, PyObject **val)
|
|
|
2661
2662
|
return hamt_node_find(o->h_root, 0, key_hash, key, val);
|
|
2662
2663
|
}
|
|
2663
2664
|
|
|
2664
|
-
|
|
2665
2665
|
int
|
|
2666
2666
|
_Hamt_Find(HamtObject *o, PyObject *key, PyObject **val)
|
|
2667
2667
|
{
|
|
@@ -2678,7 +2678,6 @@ _Hamt_Find(HamtObject *o, PyObject *key, PyObject **val)
|
|
|
2678
2678
|
}
|
|
2679
2679
|
}
|
|
2680
2680
|
|
|
2681
|
-
|
|
2682
2681
|
int
|
|
2683
2682
|
_Hamt_Eq(HamtObject *v, HamtObject *w)
|
|
2684
2683
|
{
|
|
@@ -2690,6 +2689,10 @@ _Hamt_Eq(HamtObject *v, HamtObject *w)
|
|
|
2690
2689
|
return 0;
|
|
2691
2690
|
}
|
|
2692
2691
|
|
|
2692
|
+
Py_INCREF(v);
|
|
2693
|
+
Py_INCREF(w);
|
|
2694
|
+
|
|
2695
|
+
int res = 1;
|
|
2693
2696
|
HamtIteratorState iter;
|
|
2694
2697
|
hamt_iter_t iter_res;
|
|
2695
2698
|
hamt_find_t find_res;
|
|
@@ -2705,25 +2708,38 @@ _Hamt_Eq(HamtObject *v, HamtObject *w)
|
|
|
2705
2708
|
find_res = hamt_find(w, v_key, &w_val);
|
|
2706
2709
|
switch (find_res) {
|
|
2707
2710
|
case F_ERROR:
|
|
2708
|
-
|
|
2711
|
+
res = -1;
|
|
2712
|
+
goto done;
|
|
2709
2713
|
|
|
2710
2714
|
case F_NOT_FOUND:
|
|
2711
|
-
|
|
2715
|
+
res = 0;
|
|
2716
|
+
goto done;
|
|
2712
2717
|
|
|
2713
2718
|
case F_FOUND: {
|
|
2719
|
+
Py_INCREF(v_key);
|
|
2720
|
+
Py_INCREF(v_val);
|
|
2721
|
+
Py_INCREF(w_val);
|
|
2714
2722
|
int cmp = PyObject_RichCompareBool(v_val, w_val, Py_EQ);
|
|
2723
|
+
Py_DECREF(v_key);
|
|
2724
|
+
Py_DECREF(v_val);
|
|
2725
|
+
Py_DECREF(w_val);
|
|
2715
2726
|
if (cmp < 0) {
|
|
2716
|
-
|
|
2727
|
+
res = -1;
|
|
2728
|
+
goto done;
|
|
2717
2729
|
}
|
|
2718
2730
|
if (cmp == 0) {
|
|
2719
|
-
|
|
2731
|
+
res = 0;
|
|
2732
|
+
goto done;
|
|
2720
2733
|
}
|
|
2721
2734
|
}
|
|
2722
2735
|
}
|
|
2723
2736
|
}
|
|
2724
2737
|
} while (iter_res != I_END);
|
|
2725
2738
|
|
|
2726
|
-
|
|
2739
|
+
done:
|
|
2740
|
+
Py_DECREF(v);
|
|
2741
|
+
Py_DECREF(w);
|
|
2742
|
+
return res;
|
|
2727
2743
|
}
|
|
2728
2744
|
|
|
2729
2745
|
Py_ssize_t
|
|
@@ -2784,14 +2800,15 @@ error:
|
|
|
2784
2800
|
|
|
2785
2801
|
|
|
2786
2802
|
static int
|
|
2787
|
-
hamt_baseiter_tp_clear(
|
|
2803
|
+
hamt_baseiter_tp_clear(PyObject *op)
|
|
2788
2804
|
{
|
|
2805
|
+
HamtIterator *it = (HamtIterator*)op;
|
|
2789
2806
|
Py_CLEAR(it->hi_obj);
|
|
2790
2807
|
return 0;
|
|
2791
2808
|
}
|
|
2792
2809
|
|
|
2793
2810
|
static void
|
|
2794
|
-
hamt_baseiter_tp_dealloc(
|
|
2811
|
+
hamt_baseiter_tp_dealloc(PyObject *it)
|
|
2795
2812
|
{
|
|
2796
2813
|
PyObject_GC_UnTrack(it);
|
|
2797
2814
|
(void)hamt_baseiter_tp_clear(it);
|
|
@@ -2799,15 +2816,17 @@ hamt_baseiter_tp_dealloc(HamtIterator *it)
|
|
|
2799
2816
|
}
|
|
2800
2817
|
|
|
2801
2818
|
static int
|
|
2802
|
-
hamt_baseiter_tp_traverse(
|
|
2819
|
+
hamt_baseiter_tp_traverse(PyObject *op, visitproc visit, void *arg)
|
|
2803
2820
|
{
|
|
2821
|
+
HamtIterator *it = (HamtIterator*)op;
|
|
2804
2822
|
Py_VISIT(it->hi_obj);
|
|
2805
2823
|
return 0;
|
|
2806
2824
|
}
|
|
2807
2825
|
|
|
2808
2826
|
static PyObject *
|
|
2809
|
-
hamt_baseiter_tp_iternext(
|
|
2827
|
+
hamt_baseiter_tp_iternext(PyObject *op)
|
|
2810
2828
|
{
|
|
2829
|
+
HamtIterator *it = (HamtIterator*)op;
|
|
2811
2830
|
PyObject *key;
|
|
2812
2831
|
PyObject *val;
|
|
2813
2832
|
hamt_iter_t res = hamt_iterator_next(&it->hi_iter, &key, &val);
|
|
@@ -2849,17 +2868,17 @@ hamt_baseiter_new(PyTypeObject *type, binaryfunc yield, HamtObject *o)
|
|
|
2849
2868
|
return (PyObject*)it;
|
|
2850
2869
|
}
|
|
2851
2870
|
|
|
2852
|
-
#define ITERATOR_TYPE_SHARED_SLOTS
|
|
2853
|
-
.tp_basicsize = sizeof(HamtIterator),
|
|
2854
|
-
.tp_itemsize = 0,
|
|
2855
|
-
.tp_as_mapping = &HamtIterator_as_mapping,
|
|
2856
|
-
.tp_dealloc =
|
|
2857
|
-
.tp_getattro = PyObject_GenericGetAttr,
|
|
2858
|
-
.tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC,
|
|
2859
|
-
.tp_traverse =
|
|
2860
|
-
.tp_clear =
|
|
2861
|
-
.tp_iter = PyObject_SelfIter,
|
|
2862
|
-
.tp_iternext =
|
|
2871
|
+
#define ITERATOR_TYPE_SHARED_SLOTS \
|
|
2872
|
+
.tp_basicsize = sizeof(HamtIterator), \
|
|
2873
|
+
.tp_itemsize = 0, \
|
|
2874
|
+
.tp_as_mapping = &HamtIterator_as_mapping, \
|
|
2875
|
+
.tp_dealloc = hamt_baseiter_tp_dealloc, \
|
|
2876
|
+
.tp_getattro = PyObject_GenericGetAttr, \
|
|
2877
|
+
.tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, \
|
|
2878
|
+
.tp_traverse = hamt_baseiter_tp_traverse, \
|
|
2879
|
+
.tp_clear = hamt_baseiter_tp_clear, \
|
|
2880
|
+
.tp_iter = PyObject_SelfIter, \
|
|
2881
|
+
.tp_iternext = hamt_baseiter_tp_iternext,
|
|
2863
2882
|
|
|
2864
2883
|
|
|
2865
2884
|
/////////////////////////////////// _HamtItems_Type
|
|
@@ -2981,6 +3000,8 @@ static PyObject *
|
|
|
2981
3000
|
hamt_dump(HamtObject *self);
|
|
2982
3001
|
#endif
|
|
2983
3002
|
|
|
3003
|
+
#define _HamtObject_CAST(op) ((HamtObject *)(op))
|
|
3004
|
+
|
|
2984
3005
|
|
|
2985
3006
|
static PyObject *
|
|
2986
3007
|
hamt_tp_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
|
|
@@ -2990,25 +3011,28 @@ hamt_tp_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
|
|
|
2990
3011
|
}
|
|
2991
3012
|
|
|
2992
3013
|
static int
|
|
2993
|
-
hamt_tp_clear(
|
|
3014
|
+
hamt_tp_clear(PyObject *op)
|
|
2994
3015
|
{
|
|
3016
|
+
HamtObject *self = _HamtObject_CAST(op);
|
|
2995
3017
|
Py_CLEAR(self->h_root);
|
|
2996
3018
|
return 0;
|
|
2997
3019
|
}
|
|
2998
3020
|
|
|
2999
3021
|
|
|
3000
3022
|
static int
|
|
3001
|
-
hamt_tp_traverse(
|
|
3023
|
+
hamt_tp_traverse(PyObject *op, visitproc visit, void *arg)
|
|
3002
3024
|
{
|
|
3025
|
+
HamtObject *self = _HamtObject_CAST(op);
|
|
3003
3026
|
Py_VISIT(self->h_root);
|
|
3004
3027
|
return 0;
|
|
3005
3028
|
}
|
|
3006
3029
|
|
|
3007
3030
|
static void
|
|
3008
|
-
hamt_tp_dealloc(
|
|
3031
|
+
hamt_tp_dealloc(PyObject *self)
|
|
3009
3032
|
{
|
|
3010
|
-
hamt_module_state *state = get_hamt_state_from_obj(
|
|
3011
|
-
|
|
3033
|
+
hamt_module_state *state = get_hamt_state_from_obj(self);
|
|
3034
|
+
HamtObject *obj = _HamtObject_CAST(self);
|
|
3035
|
+
if (obj == state->empty_hamt) {
|
|
3012
3036
|
/* The empty one is managed by the module state. */
|
|
3013
3037
|
#ifdef Py_DEBUG
|
|
3014
3038
|
_Py_FatalRefcountError("deallocating the empty hamt singleton");
|
|
@@ -3018,8 +3042,8 @@ hamt_tp_dealloc(HamtObject *self)
|
|
|
3018
3042
|
}
|
|
3019
3043
|
|
|
3020
3044
|
PyObject_GC_UnTrack(self);
|
|
3021
|
-
if (
|
|
3022
|
-
PyObject_ClearWeakRefs(
|
|
3045
|
+
if (obj->h_weakreflist != NULL) {
|
|
3046
|
+
PyObject_ClearWeakRefs(self);
|
|
3023
3047
|
}
|
|
3024
3048
|
(void)hamt_tp_clear(self);
|
|
3025
3049
|
Py_TYPE(self)->tp_free(self);
|
|
@@ -3051,16 +3075,18 @@ hamt_tp_richcompare(PyObject *v, PyObject *w, int op)
|
|
|
3051
3075
|
}
|
|
3052
3076
|
|
|
3053
3077
|
static int
|
|
3054
|
-
hamt_tp_contains(
|
|
3078
|
+
hamt_tp_contains(PyObject *op, PyObject *key)
|
|
3055
3079
|
{
|
|
3056
3080
|
PyObject *val;
|
|
3081
|
+
HamtObject *self = _HamtObject_CAST(op);
|
|
3057
3082
|
return _Hamt_Find(self, key, &val);
|
|
3058
3083
|
}
|
|
3059
3084
|
|
|
3060
3085
|
static PyObject *
|
|
3061
|
-
hamt_tp_subscript(
|
|
3086
|
+
hamt_tp_subscript(PyObject *op, PyObject *key)
|
|
3062
3087
|
{
|
|
3063
3088
|
PyObject *val;
|
|
3089
|
+
HamtObject *self = _HamtObject_CAST(op);
|
|
3064
3090
|
hamt_find_t res = hamt_find(self, key, &val);
|
|
3065
3091
|
switch (res) {
|
|
3066
3092
|
case F_ERROR:
|
|
@@ -3076,19 +3102,21 @@ hamt_tp_subscript(HamtObject *self, PyObject *key)
|
|
|
3076
3102
|
}
|
|
3077
3103
|
|
|
3078
3104
|
static Py_ssize_t
|
|
3079
|
-
hamt_tp_len(
|
|
3105
|
+
hamt_tp_len(PyObject *op)
|
|
3080
3106
|
{
|
|
3107
|
+
HamtObject *self = _HamtObject_CAST(op);
|
|
3081
3108
|
return _Hamt_Len(self);
|
|
3082
3109
|
}
|
|
3083
3110
|
|
|
3084
3111
|
static PyObject *
|
|
3085
|
-
hamt_tp_iter(
|
|
3112
|
+
hamt_tp_iter(PyObject *op)
|
|
3086
3113
|
{
|
|
3114
|
+
HamtObject *self = _HamtObject_CAST(op);
|
|
3087
3115
|
return _Hamt_NewIterKeys(self);
|
|
3088
3116
|
}
|
|
3089
3117
|
|
|
3090
3118
|
static PyObject *
|
|
3091
|
-
hamt_py_set(
|
|
3119
|
+
hamt_py_set(PyObject *op, PyObject *args)
|
|
3092
3120
|
{
|
|
3093
3121
|
PyObject *key;
|
|
3094
3122
|
PyObject *val;
|
|
@@ -3097,11 +3125,12 @@ hamt_py_set(HamtObject *self, PyObject *args)
|
|
|
3097
3125
|
return NULL;
|
|
3098
3126
|
}
|
|
3099
3127
|
|
|
3128
|
+
HamtObject *self = _HamtObject_CAST(op);
|
|
3100
3129
|
return (PyObject *)_Hamt_Assoc(self, key, val);
|
|
3101
3130
|
}
|
|
3102
3131
|
|
|
3103
3132
|
static PyObject *
|
|
3104
|
-
hamt_py_get(
|
|
3133
|
+
hamt_py_get(PyObject *op, PyObject *args)
|
|
3105
3134
|
{
|
|
3106
3135
|
PyObject *key;
|
|
3107
3136
|
PyObject *def = NULL;
|
|
@@ -3111,6 +3140,7 @@ hamt_py_get(HamtObject *self, PyObject *args)
|
|
|
3111
3140
|
}
|
|
3112
3141
|
|
|
3113
3142
|
PyObject *val = NULL;
|
|
3143
|
+
HamtObject *self = _HamtObject_CAST(op);
|
|
3114
3144
|
hamt_find_t res = hamt_find(self, key, &val);
|
|
3115
3145
|
switch (res) {
|
|
3116
3146
|
case F_ERROR:
|
|
@@ -3128,47 +3158,52 @@ hamt_py_get(HamtObject *self, PyObject *args)
|
|
|
3128
3158
|
}
|
|
3129
3159
|
|
|
3130
3160
|
static PyObject *
|
|
3131
|
-
hamt_py_delete(
|
|
3161
|
+
hamt_py_delete(PyObject *op, PyObject *key)
|
|
3132
3162
|
{
|
|
3163
|
+
HamtObject *self = _HamtObject_CAST(op);
|
|
3133
3164
|
return (PyObject *)_Hamt_Without(self, key);
|
|
3134
3165
|
}
|
|
3135
3166
|
|
|
3136
3167
|
static PyObject *
|
|
3137
|
-
hamt_py_items(
|
|
3168
|
+
hamt_py_items(PyObject *op, PyObject *args)
|
|
3138
3169
|
{
|
|
3170
|
+
HamtObject *self = _HamtObject_CAST(op);
|
|
3139
3171
|
return _Hamt_NewIterItems(self);
|
|
3140
3172
|
}
|
|
3141
3173
|
|
|
3142
3174
|
static PyObject *
|
|
3143
|
-
hamt_py_values(
|
|
3175
|
+
hamt_py_values(PyObject *op, PyObject *args)
|
|
3144
3176
|
{
|
|
3177
|
+
HamtObject *self = _HamtObject_CAST(op);
|
|
3145
3178
|
return _Hamt_NewIterValues(self);
|
|
3146
3179
|
}
|
|
3147
3180
|
|
|
3148
3181
|
static PyObject *
|
|
3149
|
-
hamt_py_keys(
|
|
3182
|
+
hamt_py_keys(PyObject *op, PyObject *Py_UNUSED(args))
|
|
3150
3183
|
{
|
|
3184
|
+
HamtObject *self = _HamtObject_CAST(op);
|
|
3151
3185
|
return _Hamt_NewIterKeys(self);
|
|
3152
3186
|
}
|
|
3153
3187
|
|
|
3154
3188
|
#ifdef Py_DEBUG
|
|
3155
3189
|
static PyObject *
|
|
3156
|
-
hamt_py_dump(
|
|
3190
|
+
hamt_py_dump(PyObject *op, PyObject *Py_UNUSED(args))
|
|
3157
3191
|
{
|
|
3192
|
+
HamtObject *self = _HamtObject_CAST(op);
|
|
3158
3193
|
return hamt_dump(self);
|
|
3159
3194
|
}
|
|
3160
3195
|
#endif
|
|
3161
3196
|
|
|
3162
3197
|
|
|
3163
3198
|
static PyMethodDef Hamt_methods[] = {
|
|
3164
|
-
{"set",
|
|
3165
|
-
{"get",
|
|
3166
|
-
{"delete",
|
|
3167
|
-
{"items",
|
|
3168
|
-
{"keys",
|
|
3169
|
-
{"values",
|
|
3199
|
+
{"set", hamt_py_set, METH_VARARGS, NULL},
|
|
3200
|
+
{"get", hamt_py_get, METH_VARARGS, NULL},
|
|
3201
|
+
{"delete", hamt_py_delete, METH_O, NULL},
|
|
3202
|
+
{"items", hamt_py_items, METH_NOARGS, NULL},
|
|
3203
|
+
{"keys", hamt_py_keys, METH_NOARGS, NULL},
|
|
3204
|
+
{"values", hamt_py_values, METH_NOARGS, NULL},
|
|
3170
3205
|
#ifdef Py_DEBUG
|
|
3171
|
-
{"__dump__",
|
|
3206
|
+
{"__dump__", hamt_py_dump, METH_NOARGS, NULL},
|
|
3172
3207
|
#endif
|
|
3173
3208
|
{NULL, NULL}
|
|
3174
3209
|
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: omextra
|
|
3
|
-
Version: 0.0.0.
|
|
3
|
+
Version: 0.0.0.dev509
|
|
4
4
|
Summary: omextra
|
|
5
5
|
Author: wrmsr
|
|
6
6
|
License-Expression: BSD-3-Clause
|
|
@@ -14,7 +14,7 @@ Classifier: Programming Language :: Python :: 3.13
|
|
|
14
14
|
Requires-Python: >=3.13
|
|
15
15
|
Description-Content-Type: text/markdown
|
|
16
16
|
License-File: LICENSE
|
|
17
|
-
Requires-Dist: omlish==0.0.0.
|
|
17
|
+
Requires-Dist: omlish==0.0.0.dev509
|
|
18
18
|
Dynamic: license-file
|
|
19
19
|
|
|
20
20
|
# Overview
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
omlish==0.0.0.dev509
|
|
@@ -13,7 +13,7 @@ urls = {source = 'https://github.com/wrmsr/omlish'}
|
|
|
13
13
|
license = 'BSD-3-Clause'
|
|
14
14
|
readme = 'README.md'
|
|
15
15
|
requires-python = '>=3.13'
|
|
16
|
-
version = '0.0.0.
|
|
16
|
+
version = '0.0.0.dev509'
|
|
17
17
|
classifiers = [
|
|
18
18
|
'Development Status :: 2 - Pre-Alpha',
|
|
19
19
|
'Intended Audience :: Developers',
|
|
@@ -24,7 +24,7 @@ classifiers = [
|
|
|
24
24
|
]
|
|
25
25
|
description = 'omextra'
|
|
26
26
|
dependencies = [
|
|
27
|
-
'omlish == 0.0.0.
|
|
27
|
+
'omlish == 0.0.0.dev509',
|
|
28
28
|
]
|
|
29
29
|
|
|
30
30
|
[project.optional-dependencies]
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
omlish==0.0.0.dev508
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|