omlish 0.0.0.dev84__tar.gz → 0.0.0.dev86__tar.gz

Sign up to get free protection for your applications and to get access to all the features.
Files changed (468) hide show
  1. {omlish-0.0.0.dev84/omlish.egg-info → omlish-0.0.0.dev86}/PKG-INFO +1 -1
  2. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/__about__.py +2 -2
  3. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/formats/json/backends/default.py +4 -1
  4. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/formats/json/stream/lex.py +33 -17
  5. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/formats/xml.py +3 -3
  6. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/http/sse.py +3 -0
  7. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/marshal/__init__.py +5 -0
  8. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/marshal/polymorphism.py +80 -36
  9. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/marshal/unions.py +44 -1
  10. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/sql/queries/building.py +2 -0
  11. omlish-0.0.0.dev86/omlish/sql/queries/inserts.py +50 -0
  12. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/sql/queries/marshal.py +9 -0
  13. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/sql/queries/multi.py +1 -1
  14. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/sql/queries/rendering.py +25 -0
  15. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86/omlish.egg-info}/PKG-INFO +1 -1
  16. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish.egg-info/SOURCES.txt +1 -0
  17. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/pyproject.toml +1 -1
  18. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/LICENSE +0 -0
  19. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/MANIFEST.in +0 -0
  20. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/README.rst +0 -0
  21. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/.manifests.json +0 -0
  22. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/__init__.py +0 -0
  23. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/antlr/__init__.py +0 -0
  24. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/antlr/_runtime/BufferedTokenStream.py +0 -0
  25. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/antlr/_runtime/CommonTokenFactory.py +0 -0
  26. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/antlr/_runtime/CommonTokenStream.py +0 -0
  27. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/antlr/_runtime/FileStream.py +0 -0
  28. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/antlr/_runtime/InputStream.py +0 -0
  29. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/antlr/_runtime/IntervalSet.py +0 -0
  30. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/antlr/_runtime/LL1Analyzer.py +0 -0
  31. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/antlr/_runtime/Lexer.py +0 -0
  32. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/antlr/_runtime/ListTokenSource.py +0 -0
  33. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/antlr/_runtime/Parser.py +0 -0
  34. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/antlr/_runtime/ParserInterpreter.py +0 -0
  35. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/antlr/_runtime/ParserRuleContext.py +0 -0
  36. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/antlr/_runtime/PredictionContext.py +0 -0
  37. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/antlr/_runtime/Recognizer.py +0 -0
  38. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/antlr/_runtime/RuleContext.py +0 -0
  39. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/antlr/_runtime/StdinStream.py +0 -0
  40. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/antlr/_runtime/Token.py +0 -0
  41. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/antlr/_runtime/TokenStreamRewriter.py +0 -0
  42. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/antlr/_runtime/Utils.py +0 -0
  43. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/antlr/_runtime/__init__.py +0 -0
  44. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/antlr/_runtime/_pygrun.py +0 -0
  45. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/antlr/_runtime/atn/ATN.py +0 -0
  46. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/antlr/_runtime/atn/ATNConfig.py +0 -0
  47. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/antlr/_runtime/atn/ATNConfigSet.py +0 -0
  48. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/antlr/_runtime/atn/ATNDeserializationOptions.py +0 -0
  49. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/antlr/_runtime/atn/ATNDeserializer.py +0 -0
  50. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/antlr/_runtime/atn/ATNSimulator.py +0 -0
  51. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/antlr/_runtime/atn/ATNState.py +0 -0
  52. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/antlr/_runtime/atn/ATNType.py +0 -0
  53. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/antlr/_runtime/atn/LexerATNSimulator.py +0 -0
  54. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/antlr/_runtime/atn/LexerAction.py +0 -0
  55. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/antlr/_runtime/atn/LexerActionExecutor.py +0 -0
  56. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/antlr/_runtime/atn/ParserATNSimulator.py +0 -0
  57. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/antlr/_runtime/atn/PredictionMode.py +0 -0
  58. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/antlr/_runtime/atn/SemanticContext.py +0 -0
  59. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/antlr/_runtime/atn/Transition.py +0 -0
  60. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/antlr/_runtime/atn/__init__.py +0 -0
  61. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/antlr/_runtime/dfa/DFA.py +0 -0
  62. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/antlr/_runtime/dfa/DFASerializer.py +0 -0
  63. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/antlr/_runtime/dfa/DFAState.py +0 -0
  64. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/antlr/_runtime/dfa/__init__.py +0 -0
  65. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/antlr/_runtime/error/DiagnosticErrorListener.py +0 -0
  66. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/antlr/_runtime/error/ErrorListener.py +0 -0
  67. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/antlr/_runtime/error/ErrorStrategy.py +0 -0
  68. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/antlr/_runtime/error/Errors.py +0 -0
  69. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/antlr/_runtime/error/__init__.py +0 -0
  70. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/antlr/_runtime/tree/Chunk.py +0 -0
  71. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/antlr/_runtime/tree/ParseTreeMatch.py +0 -0
  72. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/antlr/_runtime/tree/ParseTreePattern.py +0 -0
  73. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/antlr/_runtime/tree/ParseTreePatternMatcher.py +0 -0
  74. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/antlr/_runtime/tree/RuleTagToken.py +0 -0
  75. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/antlr/_runtime/tree/TokenTagToken.py +0 -0
  76. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/antlr/_runtime/tree/Tree.py +0 -0
  77. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/antlr/_runtime/tree/Trees.py +0 -0
  78. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/antlr/_runtime/tree/__init__.py +0 -0
  79. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/antlr/_runtime/xpath/XPath.py +0 -0
  80. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/antlr/_runtime/xpath/XPathLexer.py +0 -0
  81. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/antlr/_runtime/xpath/__init__.py +0 -0
  82. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/argparse.py +0 -0
  83. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/asyncs/__init__.py +0 -0
  84. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/asyncs/anyio.py +0 -0
  85. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/asyncs/asyncio.py +0 -0
  86. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/asyncs/asyncs.py +0 -0
  87. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/asyncs/bridge.py +0 -0
  88. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/asyncs/flavors.py +0 -0
  89. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/asyncs/trio.py +0 -0
  90. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/asyncs/trio_asyncio.py +0 -0
  91. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/bootstrap/__init__.py +0 -0
  92. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/bootstrap/__main__.py +0 -0
  93. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/bootstrap/base.py +0 -0
  94. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/bootstrap/diag.py +0 -0
  95. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/bootstrap/harness.py +0 -0
  96. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/bootstrap/main.py +0 -0
  97. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/bootstrap/marshal.py +0 -0
  98. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/bootstrap/sys.py +0 -0
  99. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/c3.py +0 -0
  100. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/cached.py +0 -0
  101. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/check.py +0 -0
  102. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/collections/__init__.py +0 -0
  103. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/collections/_abc.py +0 -0
  104. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/collections/_io_abc.py +0 -0
  105. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/collections/cache/__init__.py +0 -0
  106. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/collections/cache/descriptor.py +0 -0
  107. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/collections/cache/impl.py +0 -0
  108. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/collections/cache/types.py +0 -0
  109. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/collections/coerce.py +0 -0
  110. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/collections/exceptions.py +0 -0
  111. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/collections/frozen.py +0 -0
  112. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/collections/identity.py +0 -0
  113. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/collections/indexed.py +0 -0
  114. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/collections/mappings.py +0 -0
  115. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/collections/ordered.py +0 -0
  116. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/collections/persistent.py +0 -0
  117. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/collections/skiplist.py +0 -0
  118. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/collections/sorted.py +0 -0
  119. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/collections/treap.py +0 -0
  120. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/collections/treapmap.py +0 -0
  121. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/collections/unmodifiable.py +0 -0
  122. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/collections/utils.py +0 -0
  123. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/concurrent/__init__.py +0 -0
  124. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/concurrent/executors.py +0 -0
  125. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/concurrent/futures.py +0 -0
  126. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/concurrent/threadlets.py +0 -0
  127. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/configs/__init__.py +0 -0
  128. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/configs/classes.py +0 -0
  129. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/configs/flattening.py +0 -0
  130. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/configs/strings.py +0 -0
  131. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/dataclasses/__init__.py +0 -0
  132. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/dataclasses/impl/LICENSE +0 -0
  133. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/dataclasses/impl/__init__.py +0 -0
  134. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/dataclasses/impl/api.py +0 -0
  135. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/dataclasses/impl/as_.py +0 -0
  136. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/dataclasses/impl/copy.py +0 -0
  137. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/dataclasses/impl/descriptors.py +0 -0
  138. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/dataclasses/impl/exceptions.py +0 -0
  139. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/dataclasses/impl/fields.py +0 -0
  140. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/dataclasses/impl/frozen.py +0 -0
  141. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/dataclasses/impl/hashing.py +0 -0
  142. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/dataclasses/impl/init.py +0 -0
  143. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/dataclasses/impl/internals.py +0 -0
  144. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/dataclasses/impl/main.py +0 -0
  145. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/dataclasses/impl/metaclass.py +0 -0
  146. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/dataclasses/impl/metadata.py +0 -0
  147. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/dataclasses/impl/order.py +0 -0
  148. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/dataclasses/impl/params.py +0 -0
  149. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/dataclasses/impl/processing.py +0 -0
  150. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/dataclasses/impl/reflect.py +0 -0
  151. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/dataclasses/impl/replace.py +0 -0
  152. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/dataclasses/impl/repr.py +0 -0
  153. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/dataclasses/impl/simple.py +0 -0
  154. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/dataclasses/impl/slots.py +0 -0
  155. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/dataclasses/impl/utils.py +0 -0
  156. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/dataclasses/utils.py +0 -0
  157. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/datetimes.py +0 -0
  158. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/defs.py +0 -0
  159. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/diag/__init__.py +0 -0
  160. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/diag/_pycharm/__init__.py +0 -0
  161. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/diag/_pycharm/runhack.py +0 -0
  162. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/diag/asts.py +0 -0
  163. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/diag/debug.py +0 -0
  164. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/diag/procfs.py +0 -0
  165. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/diag/procstats.py +0 -0
  166. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/diag/ps.py +0 -0
  167. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/diag/pycharm/__init__.py +0 -0
  168. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/diag/pycharm/cli.py +0 -0
  169. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/diag/pycharm/pycharm.py +0 -0
  170. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/diag/pydevd.py +0 -0
  171. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/diag/replserver/__init__.py +0 -0
  172. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/diag/replserver/__main__.py +0 -0
  173. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/diag/replserver/console.py +0 -0
  174. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/diag/replserver/server.py +0 -0
  175. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/diag/threads.py +0 -0
  176. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/dispatch/__init__.py +0 -0
  177. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/dispatch/_dispatch2.py +0 -0
  178. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/dispatch/_dispatch3.py +0 -0
  179. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/dispatch/dispatch.py +0 -0
  180. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/dispatch/functions.py +0 -0
  181. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/dispatch/methods.py +0 -0
  182. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/docker/__init__.py +0 -0
  183. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/docker/cli.py +0 -0
  184. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/docker/compose.py +0 -0
  185. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/docker/helpers.py +0 -0
  186. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/docker/hub.py +0 -0
  187. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/docker/manifests.py +0 -0
  188. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/dynamic.py +0 -0
  189. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/fnpairs.py +0 -0
  190. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/fnpipes.py +0 -0
  191. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/formats/__init__.py +0 -0
  192. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/formats/dotenv.py +0 -0
  193. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/formats/json/__init__.py +0 -0
  194. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/formats/json/backends/__init__.py +0 -0
  195. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/formats/json/backends/base.py +0 -0
  196. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/formats/json/backends/jiter.py +0 -0
  197. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/formats/json/backends/orjson.py +0 -0
  198. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/formats/json/backends/std.py +0 -0
  199. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/formats/json/backends/ujson.py +0 -0
  200. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/formats/json/cli/__init__.py +0 -0
  201. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/formats/json/cli/__main__.py +0 -0
  202. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/formats/json/cli/cli.py +0 -0
  203. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/formats/json/cli/formats.py +0 -0
  204. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/formats/json/consts.py +0 -0
  205. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/formats/json/encoding.py +0 -0
  206. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/formats/json/json.py +0 -0
  207. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/formats/json/render.py +0 -0
  208. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/formats/json/stream/__init__.py +0 -0
  209. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/formats/json/stream/build.py +0 -0
  210. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/formats/json/stream/parse.py +0 -0
  211. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/formats/json/stream/render.py +0 -0
  212. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/formats/props.py +0 -0
  213. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/formats/yaml.py +0 -0
  214. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/genmachine.py +0 -0
  215. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/graphs/__init__.py +0 -0
  216. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/graphs/dags.py +0 -0
  217. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/graphs/domination.py +0 -0
  218. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/graphs/dot/__init__.py +0 -0
  219. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/graphs/dot/items.py +0 -0
  220. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/graphs/dot/make.py +0 -0
  221. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/graphs/dot/rendering.py +0 -0
  222. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/graphs/dot/utils.py +0 -0
  223. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/graphs/trees.py +0 -0
  224. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/http/__init__.py +0 -0
  225. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/http/asgi.py +0 -0
  226. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/http/clients.py +0 -0
  227. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/http/consts.py +0 -0
  228. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/http/cookies.py +0 -0
  229. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/http/dates.py +0 -0
  230. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/http/encodings.py +0 -0
  231. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/http/headers.py +0 -0
  232. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/http/json.py +0 -0
  233. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/http/multipart.py +0 -0
  234. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/http/sessions.py +0 -0
  235. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/http/wsgi.py +0 -0
  236. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/inject/__init__.py +0 -0
  237. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/inject/binder.py +0 -0
  238. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/inject/bindings.py +0 -0
  239. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/inject/eagers.py +0 -0
  240. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/inject/elements.py +0 -0
  241. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/inject/exceptions.py +0 -0
  242. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/inject/impl/__init__.py +0 -0
  243. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/inject/impl/bindings.py +0 -0
  244. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/inject/impl/elements.py +0 -0
  245. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/inject/impl/injector.py +0 -0
  246. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/inject/impl/inspect.py +0 -0
  247. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/inject/impl/multis.py +0 -0
  248. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/inject/impl/origins.py +0 -0
  249. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/inject/impl/privates.py +0 -0
  250. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/inject/impl/providers.py +0 -0
  251. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/inject/impl/proxy.py +0 -0
  252. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/inject/impl/scopes.py +0 -0
  253. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/inject/injector.py +0 -0
  254. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/inject/inspect.py +0 -0
  255. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/inject/keys.py +0 -0
  256. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/inject/listeners.py +0 -0
  257. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/inject/managed.py +0 -0
  258. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/inject/multis.py +0 -0
  259. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/inject/origins.py +0 -0
  260. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/inject/overrides.py +0 -0
  261. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/inject/privates.py +0 -0
  262. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/inject/providers.py +0 -0
  263. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/inject/scopes.py +0 -0
  264. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/inject/types.py +0 -0
  265. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/inject/utils.py +0 -0
  266. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/iterators.py +0 -0
  267. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/lang/__init__.py +0 -0
  268. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/lang/cached.py +0 -0
  269. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/lang/classes/__init__.py +0 -0
  270. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/lang/classes/abstract.py +0 -0
  271. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/lang/classes/restrict.py +0 -0
  272. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/lang/classes/simple.py +0 -0
  273. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/lang/classes/virtual.py +0 -0
  274. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/lang/clsdct.py +0 -0
  275. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/lang/cmp.py +0 -0
  276. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/lang/contextmanagers.py +0 -0
  277. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/lang/datetimes.py +0 -0
  278. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/lang/descriptors.py +0 -0
  279. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/lang/exceptions.py +0 -0
  280. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/lang/functions.py +0 -0
  281. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/lang/imports.py +0 -0
  282. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/lang/iterables.py +0 -0
  283. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/lang/maybes.py +0 -0
  284. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/lang/objects.py +0 -0
  285. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/lang/resolving.py +0 -0
  286. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/lang/resources.py +0 -0
  287. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/lang/strings.py +0 -0
  288. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/lang/sys.py +0 -0
  289. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/lang/timeouts.py +0 -0
  290. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/lang/typing.py +0 -0
  291. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/libc.py +0 -0
  292. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/lifecycles/__init__.py +0 -0
  293. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/lifecycles/abstract.py +0 -0
  294. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/lifecycles/base.py +0 -0
  295. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/lifecycles/contextmanagers.py +0 -0
  296. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/lifecycles/controller.py +0 -0
  297. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/lifecycles/manager.py +0 -0
  298. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/lifecycles/states.py +0 -0
  299. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/lifecycles/transitions.py +0 -0
  300. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/lite/__init__.py +0 -0
  301. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/lite/cached.py +0 -0
  302. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/lite/check.py +0 -0
  303. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/lite/contextmanagers.py +0 -0
  304. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/lite/io.py +0 -0
  305. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/lite/json.py +0 -0
  306. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/lite/logs.py +0 -0
  307. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/lite/marshal.py +0 -0
  308. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/lite/reflect.py +0 -0
  309. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/lite/runtime.py +0 -0
  310. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/lite/secrets.py +0 -0
  311. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/lite/strings.py +0 -0
  312. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/lite/subprocesses.py +0 -0
  313. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/logs/__init__.py +0 -0
  314. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/logs/_abc.py +0 -0
  315. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/logs/configs.py +0 -0
  316. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/logs/formatters.py +0 -0
  317. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/logs/handlers.py +0 -0
  318. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/logs/noisy.py +0 -0
  319. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/logs/utils.py +0 -0
  320. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/marshal/any.py +0 -0
  321. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/marshal/base.py +0 -0
  322. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/marshal/base64.py +0 -0
  323. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/marshal/dataclasses.py +0 -0
  324. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/marshal/datetimes.py +0 -0
  325. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/marshal/enums.py +0 -0
  326. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/marshal/exceptions.py +0 -0
  327. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/marshal/factories.py +0 -0
  328. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/marshal/forbidden.py +0 -0
  329. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/marshal/global_.py +0 -0
  330. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/marshal/helpers.py +0 -0
  331. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/marshal/iterables.py +0 -0
  332. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/marshal/mappings.py +0 -0
  333. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/marshal/maybes.py +0 -0
  334. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/marshal/naming.py +0 -0
  335. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/marshal/newtypes.py +0 -0
  336. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/marshal/nop.py +0 -0
  337. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/marshal/numbers.py +0 -0
  338. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/marshal/objects.py +0 -0
  339. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/marshal/optionals.py +0 -0
  340. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/marshal/primitives.py +0 -0
  341. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/marshal/registries.py +0 -0
  342. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/marshal/standard.py +0 -0
  343. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/marshal/utils.py +0 -0
  344. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/marshal/uuids.py +0 -0
  345. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/marshal/values.py +0 -0
  346. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/matchfns.py +0 -0
  347. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/math/__init__.py +0 -0
  348. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/math/bits.py +0 -0
  349. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/math/floats.py +0 -0
  350. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/math/stats.py +0 -0
  351. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/multiprocessing.py +0 -0
  352. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/os.py +0 -0
  353. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/reflect/__init__.py +0 -0
  354. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/reflect/isinstance.py +0 -0
  355. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/reflect/ops.py +0 -0
  356. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/reflect/subst.py +0 -0
  357. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/reflect/types.py +0 -0
  358. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/runmodule.py +0 -0
  359. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/secrets/__init__.py +0 -0
  360. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/secrets/crypto.py +0 -0
  361. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/secrets/marshal.py +0 -0
  362. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/secrets/openssl.py +0 -0
  363. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/secrets/pwgen.py +0 -0
  364. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/secrets/pwhash.py +0 -0
  365. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/secrets/secrets.py +0 -0
  366. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/secrets/subprocesses.py +0 -0
  367. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/specs/__init__.py +0 -0
  368. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/specs/jmespath/LICENSE +0 -0
  369. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/specs/jmespath/__init__.py +0 -0
  370. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/specs/jmespath/__main__.py +0 -0
  371. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/specs/jmespath/ast.py +0 -0
  372. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/specs/jmespath/cli.py +0 -0
  373. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/specs/jmespath/exceptions.py +0 -0
  374. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/specs/jmespath/functions.py +0 -0
  375. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/specs/jmespath/lexer.py +0 -0
  376. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/specs/jmespath/parser.py +0 -0
  377. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/specs/jmespath/scope.py +0 -0
  378. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/specs/jmespath/visitor.py +0 -0
  379. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/specs/jsonrpc/__init__.py +0 -0
  380. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/specs/jsonrpc/errors.py +0 -0
  381. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/specs/jsonrpc/marshal.py +0 -0
  382. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/specs/jsonrpc/types.py +0 -0
  383. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/specs/jsonschema/__init__.py +0 -0
  384. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/specs/jsonschema/keywords/__init__.py +0 -0
  385. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/specs/jsonschema/keywords/base.py +0 -0
  386. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/specs/jsonschema/keywords/core.py +0 -0
  387. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/specs/jsonschema/keywords/metadata.py +0 -0
  388. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/specs/jsonschema/keywords/parse.py +0 -0
  389. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/specs/jsonschema/keywords/render.py +0 -0
  390. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/specs/jsonschema/keywords/validation.py +0 -0
  391. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/specs/jsonschema/schemas/__init__.py +0 -0
  392. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/specs/jsonschema/schemas/draft202012/__init__.py +0 -0
  393. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/specs/jsonschema/schemas/draft202012/metaschema.json +0 -0
  394. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/specs/jsonschema/schemas/draft202012/vocabularies/__init__.py +0 -0
  395. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/specs/jsonschema/schemas/draft202012/vocabularies/applicator.json +0 -0
  396. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/specs/jsonschema/schemas/draft202012/vocabularies/content.json +0 -0
  397. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/specs/jsonschema/schemas/draft202012/vocabularies/core.json +0 -0
  398. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/specs/jsonschema/schemas/draft202012/vocabularies/format-annotation.json +0 -0
  399. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/specs/jsonschema/schemas/draft202012/vocabularies/format-assertion.json +0 -0
  400. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/specs/jsonschema/schemas/draft202012/vocabularies/format.json +0 -0
  401. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/specs/jsonschema/schemas/draft202012/vocabularies/meta-data.json +0 -0
  402. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/specs/jsonschema/schemas/draft202012/vocabularies/unevaluated.json +0 -0
  403. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/specs/jsonschema/schemas/draft202012/vocabularies/validation.json +0 -0
  404. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/specs/jsonschema/types.py +0 -0
  405. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/specs/openapi/__init__.py +0 -0
  406. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/specs/openapi/marshal.py +0 -0
  407. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/specs/openapi/openapi.py +0 -0
  408. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/sql/__init__.py +0 -0
  409. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/sql/_abc.py +0 -0
  410. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/sql/alchemy/__init__.py +0 -0
  411. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/sql/alchemy/asyncs.py +0 -0
  412. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/sql/alchemy/duckdb.py +0 -0
  413. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/sql/alchemy/exprs.py +0 -0
  414. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/sql/alchemy/secrets.py +0 -0
  415. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/sql/alchemy/sqlean.py +0 -0
  416. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/sql/dbs.py +0 -0
  417. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/sql/qualifiedname.py +0 -0
  418. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/sql/queries/__init__.py +0 -0
  419. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/sql/queries/base.py +0 -0
  420. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/sql/queries/binary.py +0 -0
  421. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/sql/queries/exprs.py +0 -0
  422. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/sql/queries/idents.py +0 -0
  423. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/sql/queries/names.py +0 -0
  424. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/sql/queries/ops.py +0 -0
  425. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/sql/queries/relations.py +0 -0
  426. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/sql/queries/selects.py +0 -0
  427. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/sql/queries/stmts.py +0 -0
  428. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/sql/queries/unary.py +0 -0
  429. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/sql/tabledefs/__init__.py +0 -0
  430. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/sql/tabledefs/alchemy.py +0 -0
  431. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/sql/tabledefs/dtypes.py +0 -0
  432. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/sql/tabledefs/elements.py +0 -0
  433. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/sql/tabledefs/lower.py +0 -0
  434. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/sql/tabledefs/marshal.py +0 -0
  435. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/sql/tabledefs/tabledefs.py +0 -0
  436. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/sync.py +0 -0
  437. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/term.py +0 -0
  438. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/testing/__init__.py +0 -0
  439. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/testing/pytest/__init__.py +0 -0
  440. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/testing/pytest/helpers.py +0 -0
  441. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/testing/pytest/inject/__init__.py +0 -0
  442. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/testing/pytest/inject/harness.py +0 -0
  443. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/testing/pytest/marks.py +0 -0
  444. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/testing/pytest/plugins/__init__.py +0 -0
  445. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/testing/pytest/plugins/_registry.py +0 -0
  446. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/testing/pytest/plugins/asyncs.py +0 -0
  447. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/testing/pytest/plugins/depskip.py +0 -0
  448. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/testing/pytest/plugins/logging.py +0 -0
  449. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/testing/pytest/plugins/managermarks.py +0 -0
  450. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/testing/pytest/plugins/pydevd.py +0 -0
  451. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/testing/pytest/plugins/repeat.py +0 -0
  452. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/testing/pytest/plugins/skips.py +0 -0
  453. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/testing/pytest/plugins/spacing.py +0 -0
  454. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/testing/pytest/plugins/switches.py +0 -0
  455. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/testing/pytest/plugins/utils.py +0 -0
  456. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/testing/pytest/skip.py +0 -0
  457. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/testing/testing.py +0 -0
  458. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/text/__init__.py +0 -0
  459. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/text/asdl.py +0 -0
  460. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/text/delimit.py +0 -0
  461. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/text/glyphsplit.py +0 -0
  462. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/text/indent.py +0 -0
  463. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish/text/parts.py +0 -0
  464. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish.egg-info/dependency_links.txt +0 -0
  465. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish.egg-info/entry_points.txt +0 -0
  466. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish.egg-info/requires.txt +0 -0
  467. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/omlish.egg-info/top_level.txt +0 -0
  468. {omlish-0.0.0.dev84 → omlish-0.0.0.dev86}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: omlish
3
- Version: 0.0.0.dev84
3
+ Version: 0.0.0.dev86
4
4
  Summary: omlish
5
5
  Author: wrmsr
6
6
  License: BSD-3-Clause
@@ -1,5 +1,5 @@
1
- __version__ = '0.0.0.dev84'
2
- __revision__ = 'b3347da7d48862b90c274893e4f9bfa477fecc70'
1
+ __version__ = '0.0.0.dev86'
2
+ __revision__ = '39be25efaa0206ceb3478be1878e14671f5940f1'
3
3
 
4
4
 
5
5
  #
@@ -1,10 +1,13 @@
1
1
  from .base import Backend
2
+ from .orjson import ORJSON_BACKEND
2
3
  from .std import STD_BACKEND
3
4
  from .ujson import UJSON_BACKEND
4
5
 
5
6
 
6
7
  DEFAULT_BACKED: Backend
7
- if UJSON_BACKEND is not None:
8
+ if ORJSON_BACKEND is not None:
9
+ DEFAULT_BACKED = ORJSON_BACKEND
10
+ elif UJSON_BACKEND is not None:
8
11
  DEFAULT_BACKED = UJSON_BACKEND
9
12
  else:
10
13
  DEFAULT_BACKED = STD_BACKEND
@@ -52,14 +52,18 @@ SCALAR_VALUE_TYPES: tuple[type, ...] = tuple(
52
52
  ##
53
53
 
54
54
 
55
+ class Position(ta.NamedTuple):
56
+ ofs: int
57
+ line: int
58
+ col: int
59
+
60
+
55
61
  class Token(ta.NamedTuple):
56
62
  kind: TokenKind
57
63
  value: ScalarValue
58
64
  raw: str | None
59
65
 
60
- ofs: int
61
- line: int
62
- col: int
66
+ pos: Position
63
67
 
64
68
  def __iter__(self):
65
69
  raise TypeError
@@ -94,9 +98,7 @@ CONST_TOKENS: ta.Mapping[str, tuple[TokenKind, str | float | None]] = {
94
98
  class JsonLexError(Exception):
95
99
  message: str
96
100
 
97
- ofs: int
98
- line: int
99
- col: int
101
+ pos: Position
100
102
 
101
103
 
102
104
  class JsonStreamLexer(GenMachine[str, Token]):
@@ -108,13 +110,21 @@ class JsonStreamLexer(GenMachine[str, Token]):
108
110
  self._include_raw = include_raw
109
111
 
110
112
  self._ofs = 0
111
- self._line = 0
113
+ self._line = 1
112
114
  self._col = 0
113
115
 
114
116
  self._buf = io.StringIO()
115
117
 
116
118
  super().__init__(self._do_main())
117
119
 
120
+ @property
121
+ def pos(self) -> Position:
122
+ return Position(
123
+ self._ofs,
124
+ self._line,
125
+ self._col,
126
+ )
127
+
118
128
  def _char_in(self, c: str) -> str:
119
129
  if c and len(c) != 1:
120
130
  raise ValueError(c)
@@ -134,14 +144,13 @@ class JsonStreamLexer(GenMachine[str, Token]):
134
144
  kind: TokenKind,
135
145
  value: ScalarValue,
136
146
  raw: str,
147
+ pos: Position,
137
148
  ) -> ta.Sequence[Token]:
138
149
  tok = Token(
139
150
  kind,
140
151
  value,
141
152
  raw if self._include_raw else None,
142
- self._ofs,
143
- self._line,
144
- self._col,
153
+ pos,
145
154
  )
146
155
  return (tok,)
147
156
 
@@ -152,7 +161,7 @@ class JsonStreamLexer(GenMachine[str, Token]):
152
161
  return raw
153
162
 
154
163
  def _raise(self, msg: str) -> ta.NoReturn:
155
- raise JsonLexError(msg, self._ofs, self._line, self._col)
164
+ raise JsonLexError(msg, self.pos)
156
165
 
157
166
  def _do_main(self):
158
167
  while True:
@@ -165,7 +174,7 @@ class JsonStreamLexer(GenMachine[str, Token]):
165
174
  continue
166
175
 
167
176
  if c in CONTROL_TOKENS:
168
- yield self._make_tok(CONTROL_TOKENS[c], c, c)
177
+ yield self._make_tok(CONTROL_TOKENS[c], c, c, self.pos)
169
178
  continue
170
179
 
171
180
  if c == '"':
@@ -180,8 +189,11 @@ class JsonStreamLexer(GenMachine[str, Token]):
180
189
  self._raise(f'Unexpected character: {c}')
181
190
 
182
191
  def _do_string(self):
192
+ check.state(self._buf.tell() == 0)
183
193
  self._buf.write('"')
184
194
 
195
+ pos = self.pos
196
+
185
197
  last = None
186
198
  while True:
187
199
  try:
@@ -199,13 +211,16 @@ class JsonStreamLexer(GenMachine[str, Token]):
199
211
 
200
212
  raw = self._flip_buf()
201
213
  sv = json.loads(raw)
202
- yield self._make_tok('STRING', sv, raw)
214
+ yield self._make_tok('STRING', sv, raw, pos)
203
215
 
204
216
  return self._do_main()
205
217
 
206
218
  def _do_number(self, c: str):
219
+ check.state(self._buf.tell() == 0)
207
220
  self._buf.write(c)
208
221
 
222
+ pos = self.pos
223
+
209
224
  while True:
210
225
  try:
211
226
  c = self._char_in((yield None)) # noqa
@@ -240,7 +255,7 @@ class JsonStreamLexer(GenMachine[str, Token]):
240
255
  self._raise(f'Invalid number format: {raw}')
241
256
 
242
257
  tk, tv = CONST_TOKENS[raw]
243
- yield self._make_tok(tk, tv, raw)
258
+ yield self._make_tok(tk, tv, raw, pos)
244
259
 
245
260
  return self._do_main()
246
261
 
@@ -250,7 +265,7 @@ class JsonStreamLexer(GenMachine[str, Token]):
250
265
  nv = float(raw)
251
266
  else:
252
267
  nv = int(raw)
253
- yield self._make_tok('NUMBER', nv, raw)
268
+ yield self._make_tok('NUMBER', nv, raw, pos)
254
269
 
255
270
  #
256
271
 
@@ -258,7 +273,7 @@ class JsonStreamLexer(GenMachine[str, Token]):
258
273
  return None
259
274
 
260
275
  if c in CONTROL_TOKENS:
261
- yield self._make_tok(CONTROL_TOKENS[c], c, c)
276
+ yield self._make_tok(CONTROL_TOKENS[c], c, c, pos)
262
277
 
263
278
  elif not c.isspace():
264
279
  self._raise(f'Unexpected character after number: {c}')
@@ -266,6 +281,7 @@ class JsonStreamLexer(GenMachine[str, Token]):
266
281
  return self._do_main()
267
282
 
268
283
  def _do_const(self, c: str):
284
+ pos = self.pos
269
285
  raw = c
270
286
  while True:
271
287
  try:
@@ -280,6 +296,6 @@ class JsonStreamLexer(GenMachine[str, Token]):
280
296
  self._raise(f'Invalid literal: {raw}')
281
297
 
282
298
  tk, tv = CONST_TOKENS[raw]
283
- yield self._make_tok(tk, tv, raw)
299
+ yield self._make_tok(tk, tv, raw, pos)
284
300
 
285
301
  return self._do_main()
@@ -21,13 +21,13 @@ else:
21
21
  @dc.dataclass(frozen=True)
22
22
  class SimpleElement:
23
23
  tag: str
24
- attributes: ta.Mapping[str, str] | None = dc.xfield(default=None, repr_fn=dc.truthy_repr)
24
+ attrs: ta.Mapping[str, str] | None = dc.xfield(default=None, repr_fn=dc.truthy_repr)
25
25
  body: ta.Sequence[ta.Union['SimpleElement', str]] | None = dc.xfield(default=None, repr_fn=dc.truthy_repr)
26
26
 
27
27
  def as_dict(self) -> dict[str, ta.Any]:
28
28
  dct: dict[str, ta.Any] = {'tag': self.tag}
29
- if self.attributes:
30
- dct['attributes'] = self.attributes
29
+ if self.attrs:
30
+ dct['attrs'] = self.attrs
31
31
  if self.body:
32
32
  dct['body'] = [
33
33
  c.as_dict() if isinstance(c, SimpleElement) else c
@@ -1,6 +1,9 @@
1
1
  """
2
2
  TODO:
3
3
  - end-of-line = ( cr lf / cr / lf )
4
+
5
+ See:
6
+ - https://github.com/florimondmanca/httpx-sse/blob/master/src/httpx_sse/_decoders.py
4
7
  """
5
8
  import string
6
9
  import typing as ta
@@ -77,9 +77,12 @@ from .objects import ( # noqa
77
77
 
78
78
  from .polymorphism import ( # noqa
79
79
  Impl,
80
+ Impls,
80
81
  Polymorphism,
81
82
  PolymorphismMarshalerFactory,
82
83
  PolymorphismUnmarshalerFactory,
84
+ make_polymorphism_marshaler,
85
+ make_polymorphism_unmarshaler,
83
86
  polymorphism_from_subclasses,
84
87
  )
85
88
 
@@ -101,6 +104,8 @@ from .standard import ( # noqa
101
104
 
102
105
  from .unions import ( # noqa
103
106
  PRIMITIVE_UNION_TYPES,
107
+ PolymorphismUnionMarshalerFactory,
108
+ PolymorphismUnionUnmarshalerFactory,
104
109
  PrimitiveUnionMarshaler,
105
110
  PrimitiveUnionMarshalerFactory,
106
111
  PrimitiveUnionUnmarshaler,
@@ -50,21 +50,19 @@ class Impl:
50
50
  alts: ta.AbstractSet[str] = frozenset()
51
51
 
52
52
 
53
- class Polymorphism:
53
+ class Impls(ta.Sequence[Impl]):
54
54
  def __init__(
55
55
  self,
56
- ty: type,
57
- impls: ta.Iterable[Impl],
56
+ lst: ta.Iterable[Impl],
58
57
  ) -> None:
59
58
  super().__init__()
60
- self._ty = ty
61
- self._impls = list(impls)
59
+ self._lst = list(lst)
62
60
 
63
61
  by_ty: dict[type, Impl] = {}
64
62
  by_tag: dict[str, Impl] = {}
65
- for i in self._impls:
66
- if not issubclass(i.ty, ty) or i.ty in by_ty:
67
- raise TypeError(i.ty, ty)
63
+ for i in self._lst:
64
+ if i.ty in by_ty:
65
+ raise TypeError(i.ty)
68
66
  if i.tag in by_tag:
69
67
  raise NameError(i.tag)
70
68
  for a in i.alts:
@@ -77,13 +75,20 @@ class Polymorphism:
77
75
  self._by_ty = by_ty
78
76
  self._by_tag = by_tag
79
77
 
80
- @property
81
- def ty(self) -> type:
82
- return self._ty
78
+ def __iter__(self) -> ta.Iterator[Impl]:
79
+ return iter(self._lst)
83
80
 
84
- @property
85
- def impls(self) -> ta.Sequence[Impl]:
86
- return self._impls
81
+ def __len__(self) -> int:
82
+ return len(self._lst)
83
+
84
+ @ta.overload
85
+ def __getitem__(self, index: int) -> Impl: ...
86
+
87
+ @ta.overload
88
+ def __getitem__(self, index: slice) -> ta.Sequence[Impl]: ...
89
+
90
+ def __getitem__(self, index):
91
+ return self._lst[index]
87
92
 
88
93
  @property
89
94
  def by_ty(self) -> ta.Mapping[type, Impl]:
@@ -94,6 +99,29 @@ class Polymorphism:
94
99
  return self._by_tag
95
100
 
96
101
 
102
+ class Polymorphism:
103
+ def __init__(
104
+ self,
105
+ ty: type,
106
+ impls: ta.Iterable[Impl],
107
+ ) -> None:
108
+ super().__init__()
109
+ self._ty = ty
110
+ self._impls = Impls(impls)
111
+
112
+ for i in self._impls:
113
+ if not issubclass(i.ty, ty):
114
+ raise TypeError(i.ty, ty)
115
+
116
+ @property
117
+ def ty(self) -> type:
118
+ return self._ty
119
+
120
+ @property
121
+ def impls(self) -> Impls:
122
+ return self._impls
123
+
124
+
97
125
  def polymorphism_from_subclasses(
98
126
  ty: type,
99
127
  *,
@@ -151,6 +179,23 @@ class FieldPolymorphismMarshaler(Marshaler):
151
179
  return {self.tf: tag, **m.marshal(ctx, o)} # type: ignore
152
180
 
153
181
 
182
+ def make_polymorphism_marshaler(
183
+ impls: Impls,
184
+ tt: TypeTagging,
185
+ ctx: MarshalContext,
186
+ ) -> Marshaler:
187
+ m = {
188
+ i.ty: (i.tag, ctx.make(i.ty))
189
+ for i in impls
190
+ }
191
+ if isinstance(tt, WrapperTypeTagging):
192
+ return WrapperPolymorphismMarshaler(m)
193
+ elif isinstance(tt, FieldTypeTagging):
194
+ return FieldPolymorphismMarshaler(m, tt.field)
195
+ else:
196
+ raise TypeError(tt)
197
+
198
+
154
199
  @dc.dataclass(frozen=True)
155
200
  class PolymorphismMarshalerFactory(MarshalerFactory):
156
201
  p: Polymorphism
@@ -161,16 +206,7 @@ class PolymorphismMarshalerFactory(MarshalerFactory):
161
206
 
162
207
  def fn(self, ctx: MarshalContext, rty: rfl.Type) -> Marshaler:
163
208
  check.is_(rty, self.p.ty)
164
- m = {
165
- i.ty: (i.tag, ctx.make(i.ty))
166
- for i in self.p.impls
167
- }
168
- if isinstance(self.tt, WrapperTypeTagging):
169
- return WrapperPolymorphismMarshaler(m)
170
- elif isinstance(self.tt, FieldTypeTagging):
171
- return FieldPolymorphismMarshaler(m, self.tt.field)
172
- else:
173
- raise TypeError(self.tt)
209
+ return make_polymorphism_marshaler(self.p.impls, self.tt, ctx)
174
210
 
175
211
 
176
212
  ##
@@ -199,6 +235,25 @@ class FieldPolymorphismUnmarshaler(Unmarshaler):
199
235
  return u.unmarshal(ctx, ma)
200
236
 
201
237
 
238
+ def make_polymorphism_unmarshaler(
239
+ impls: Impls,
240
+ tt: TypeTagging,
241
+ ctx: UnmarshalContext,
242
+ ) -> Unmarshaler:
243
+ m = {
244
+ t: u
245
+ for i in impls
246
+ for u in [ctx.make(i.ty)]
247
+ for t in [i.tag, *i.alts]
248
+ }
249
+ if isinstance(tt, WrapperTypeTagging):
250
+ return WrapperPolymorphismUnmarshaler(m)
251
+ elif isinstance(tt, FieldTypeTagging):
252
+ return FieldPolymorphismUnmarshaler(m, tt.field)
253
+ else:
254
+ raise TypeError(tt)
255
+
256
+
202
257
  @dc.dataclass(frozen=True)
203
258
  class PolymorphismUnmarshalerFactory(UnmarshalerFactory):
204
259
  p: Polymorphism
@@ -209,15 +264,4 @@ class PolymorphismUnmarshalerFactory(UnmarshalerFactory):
209
264
 
210
265
  def fn(self, ctx: UnmarshalContext, rty: rfl.Type) -> Unmarshaler:
211
266
  check.is_(rty, self.p.ty)
212
- m = {
213
- t: u
214
- for i in self.p.impls
215
- for u in [ctx.make(i.ty)]
216
- for t in [i.tag, *i.alts]
217
- }
218
- if isinstance(self.tt, WrapperTypeTagging):
219
- return WrapperPolymorphismUnmarshaler(m)
220
- elif isinstance(self.tt, FieldTypeTagging):
221
- return FieldPolymorphismUnmarshaler(m, self.tt.field)
222
- else:
223
- raise TypeError(self.tt)
267
+ return make_polymorphism_unmarshaler(self.p.impls, self.tt, ctx)
@@ -1,7 +1,8 @@
1
- import dataclasses as dc
2
1
  import typing as ta
3
2
 
3
+ from .. import cached
4
4
  from .. import check
5
+ from .. import dataclasses as dc
5
6
  from .. import matchfns as mfs
6
7
  from .. import reflect as rfl
7
8
  from .base import MarshalContext
@@ -10,6 +11,11 @@ from .base import MarshalerFactory
10
11
  from .base import UnmarshalContext
11
12
  from .base import Unmarshaler
12
13
  from .base import UnmarshalerFactory
14
+ from .polymorphism import Impls
15
+ from .polymorphism import TypeTagging
16
+ from .polymorphism import WrapperTypeTagging
17
+ from .polymorphism import make_polymorphism_marshaler
18
+ from .polymorphism import make_polymorphism_unmarshaler
13
19
  from .values import Value
14
20
 
15
21
 
@@ -103,3 +109,40 @@ class PrimitiveUnionUnmarshalerFactory(UnmarshalerFactory):
103
109
 
104
110
  PRIMITIVE_UNION_MARSHALER_FACTORY = PrimitiveUnionMarshalerFactory()
105
111
  PRIMITIVE_UNION_UNMARSHALER_FACTORY = PrimitiveUnionUnmarshalerFactory()
112
+
113
+
114
+ ##
115
+
116
+
117
+ @dc.dataclass(frozen=True)
118
+ class PolymorphismUnionMarshalerFactory(MarshalerFactory):
119
+ impls: Impls
120
+ tt: TypeTagging = WrapperTypeTagging()
121
+
122
+ @cached.property
123
+ @dc.init
124
+ def rty(self) -> rfl.Union:
125
+ return rfl.type_(ta.Union[*tuple(i.ty for i in self.impls)]) # type: ignore
126
+
127
+ def guard(self, ctx: MarshalContext, rty: rfl.Type) -> bool:
128
+ return isinstance(rty, rfl.Union) and rty == self.rty
129
+
130
+ def fn(self, ctx: MarshalContext, rty: rfl.Type) -> Marshaler:
131
+ return make_polymorphism_marshaler(self.impls, self.tt, ctx)
132
+
133
+
134
+ @dc.dataclass(frozen=True)
135
+ class PolymorphismUnionUnmarshalerFactory(UnmarshalerFactory):
136
+ impls: Impls
137
+ tt: TypeTagging = WrapperTypeTagging()
138
+
139
+ @cached.property
140
+ @dc.init
141
+ def rty(self) -> rfl.Union:
142
+ return rfl.type_(ta.Union[*tuple(i.ty for i in self.impls)]) # type: ignore
143
+
144
+ def guard(self, ctx: UnmarshalContext, rty: rfl.Type) -> bool:
145
+ return isinstance(rty, rfl.Union) and rty == self.rty
146
+
147
+ def fn(self, ctx: UnmarshalContext, rty: rfl.Type) -> Unmarshaler:
148
+ return make_polymorphism_unmarshaler(self.impls, self.tt, ctx)
@@ -2,6 +2,7 @@ from .base import Builder
2
2
  from .binary import BinaryBuilder
3
3
  from .exprs import ExprBuilder
4
4
  from .idents import IdentBuilder
5
+ from .inserts import InsertBuilder
5
6
  from .multi import MultiBuilder
6
7
  from .names import NameBuilder
7
8
  from .relations import RelationBuilder
@@ -11,6 +12,7 @@ from .unary import UnaryBuilder
11
12
 
12
13
 
13
14
  class StdBuilder(
15
+ InsertBuilder,
14
16
  SelectBuilder,
15
17
  StmtBuilder,
16
18
 
@@ -0,0 +1,50 @@
1
+ import typing as ta
2
+
3
+ from ... import dataclasses as dc
4
+ from ... import lang
5
+ from .exprs import CanExpr
6
+ from .exprs import Expr
7
+ from .exprs import ExprBuilder
8
+ from .idents import CanIdent
9
+ from .idents import Ident
10
+ from .relations import CanRelation
11
+ from .relations import Relation
12
+ from .relations import RelationBuilder
13
+ from .selects import Select
14
+ from .stmts import Stmt
15
+
16
+
17
+ ##
18
+
19
+
20
+ class Values(dc.Frozen, lang.Final):
21
+ vs: ta.Sequence[Expr]
22
+
23
+
24
+ class Insert(Stmt, lang.Final):
25
+ columns: ta.Sequence[Ident]
26
+ into: Relation
27
+ data: Values | Select
28
+
29
+
30
+ CanValues: ta.TypeAlias = Values | ta.Sequence[CanExpr]
31
+
32
+
33
+ class InsertBuilder(ExprBuilder, RelationBuilder):
34
+ def values(self, vs: CanValues) -> Values:
35
+ if isinstance(vs, Values):
36
+ return vs
37
+ else:
38
+ return Values(tuple(self.expr(v) for v in vs))
39
+
40
+ def insert(
41
+ self,
42
+ columns: ta.Sequence[CanIdent],
43
+ into: CanRelation,
44
+ data: Select | Values | ta.Sequence[CanExpr],
45
+ ) -> Insert:
46
+ return Insert(
47
+ columns=tuple(self.ident(c) for c in columns),
48
+ into=self.relation(into),
49
+ data=data if isinstance(data, Select) else self.values(data),
50
+ )
@@ -11,8 +11,10 @@ from .base import Node
11
11
  from .binary import BinaryOp
12
12
  from .binary import BinaryOps
13
13
  from .exprs import Expr
14
+ from .inserts import Values
14
15
  from .multi import MultiKind
15
16
  from .relations import Relation
17
+ from .selects import Select
16
18
  from .stmts import Stmt
17
19
  from .unary import UnaryOp
18
20
  from .unary import UnaryOps
@@ -72,3 +74,10 @@ def _install_standard_marshalling() -> None:
72
74
  p = msh.polymorphism_from_subclasses(cls, naming=msh.Naming.SNAKE)
73
75
  msh.STANDARD_MARSHALER_FACTORIES[0:0] = [msh.PolymorphismMarshalerFactory(p)]
74
76
  msh.STANDARD_UNMARSHALER_FACTORIES[0:0] = [msh.PolymorphismUnmarshalerFactory(p)]
77
+
78
+ insert_data_impls = msh.Impls([
79
+ msh.Impl(Values, 'values'),
80
+ msh.Impl(Select, 'select'),
81
+ ])
82
+ msh.STANDARD_MARSHALER_FACTORIES[0:0] = [msh.PolymorphismUnionMarshalerFactory(insert_data_impls)]
83
+ msh.STANDARD_UNMARSHALER_FACTORIES[0:0] = [msh.PolymorphismUnionUnmarshalerFactory(insert_data_impls)]
@@ -28,7 +28,7 @@ class MultiBuilder(ExprBuilder):
28
28
  if len(es) == 1:
29
29
  return self.expr(es[0])
30
30
  else:
31
- return Multi(k, [self.expr(e) for e in es])
31
+ return Multi(k, tuple(self.expr(e) for e in es))
32
32
 
33
33
  def and_(self, *es: CanExpr) -> Expr:
34
34
  return self.multi(MultiKind.AND, *es)
@@ -27,6 +27,8 @@ from .binary import BinaryOps
27
27
  from .exprs import Literal
28
28
  from .exprs import NameExpr
29
29
  from .idents import Ident
30
+ from .inserts import Insert
31
+ from .inserts import Values
30
32
  from .multi import Multi
31
33
  from .multi import MultiKind
32
34
  from .names import Name
@@ -98,6 +100,29 @@ class StdRenderer(Renderer):
98
100
  def render_ident(self, o: Ident) -> None:
99
101
  self._out.write(f'"{o.s}"')
100
102
 
103
+ # inserts
104
+
105
+ @Renderer.render.register
106
+ def render_values(self, o: Values) -> None:
107
+ self._out.write('values (')
108
+ for i, v in enumerate(o.vs):
109
+ if i:
110
+ self._out.write(', ')
111
+ self.render(v)
112
+ self._out.write(')')
113
+
114
+ @Renderer.render.register
115
+ def render_insert(self, o: Insert) -> None:
116
+ self._out.write('insert into ')
117
+ self.render(o.into)
118
+ self._out.write(' (')
119
+ for i, c in enumerate(o.columns):
120
+ if i:
121
+ self._out.write(', ')
122
+ self.render(c)
123
+ self._out.write(') ')
124
+ self.render(o.data)
125
+
101
126
  # multis
102
127
 
103
128
  MULTI_KIND_TO_STR: ta.ClassVar[ta.Mapping[MultiKind, str]] = {
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: omlish
3
- Version: 0.0.0.dev84
3
+ Version: 0.0.0.dev86
4
4
  Summary: omlish
5
5
  Author: wrmsr
6
6
  License: BSD-3-Clause
@@ -421,6 +421,7 @@ omlish/sql/queries/binary.py
421
421
  omlish/sql/queries/building.py
422
422
  omlish/sql/queries/exprs.py
423
423
  omlish/sql/queries/idents.py
424
+ omlish/sql/queries/inserts.py
424
425
  omlish/sql/queries/marshal.py
425
426
  omlish/sql/queries/multi.py
426
427
  omlish/sql/queries/names.py
@@ -12,7 +12,7 @@ authors = [
12
12
  urls = {source = 'https://github.com/wrmsr/omlish'}
13
13
  license = {text = 'BSD-3-Clause'}
14
14
  requires-python = '~=3.12'
15
- version = '0.0.0.dev84'
15
+ version = '0.0.0.dev86'
16
16
  classifiers = [
17
17
  'License :: OSI Approved :: BSD License',
18
18
  'Development Status :: 2 - Pre-Alpha',
File without changes
File without changes
File without changes