omxtra 0.0.0.dev526__tar.gz → 0.0.0.dev527__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.
Files changed (201) hide show
  1. {omxtra-0.0.0.dev526/omxtra.egg-info → omxtra-0.0.0.dev527}/PKG-INFO +2 -2
  2. omxtra-0.0.0.dev527/omxtra/io/pipelines/bytes/buffering.py +19 -0
  3. {omxtra-0.0.0.dev526/omxtra/io/pipelines/handlers → omxtra-0.0.0.dev527/omxtra/io/pipelines/bytes}/decoders.py +1 -1
  4. omxtra-0.0.0.dev527/omxtra/io/pipelines/bytes/queues.py +56 -0
  5. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/io/pipelines/core.py +0 -38
  6. {omxtra-0.0.0.dev526/omxtra/io/pipelines → omxtra-0.0.0.dev527/omxtra/io/pipelines/drivers}/asyncio.py +2 -2
  7. {omxtra-0.0.0.dev526/omxtra/io/pipelines → omxtra-0.0.0.dev527/omxtra/io/pipelines/flow}/bytes.py +1 -14
  8. {omxtra-0.0.0.dev526/omxtra/io/pipelines → omxtra-0.0.0.dev527/omxtra/io/pipelines/flow}/flow.py +6 -6
  9. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/io/pipelines/handlers/flatmap.py +1 -1
  10. omxtra-0.0.0.dev527/omxtra/io/pipelines/handlers/fns.py +120 -0
  11. omxtra-0.0.0.dev527/omxtra/io/pipelines/handlers/queues.py +99 -0
  12. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/io/pipelines/http/client/responses.py +1 -1
  13. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/io/pipelines/http/server/requests.py +1 -1
  14. omxtra-0.0.0.dev527/omxtra/text/__init__.py +0 -0
  15. omxtra-0.0.0.dev527/omxtra/text/abnf/docs/__init__.py +0 -0
  16. omxtra-0.0.0.dev527/omxtra/text/antlr/cli/__init__.py +0 -0
  17. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527/omxtra.egg-info}/PKG-INFO +2 -2
  18. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra.egg-info/SOURCES.txt +11 -4
  19. omxtra-0.0.0.dev527/omxtra.egg-info/requires.txt +1 -0
  20. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/pyproject.toml +2 -2
  21. omxtra-0.0.0.dev526/omxtra.egg-info/requires.txt +0 -1
  22. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/LICENSE +0 -0
  23. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/MANIFEST.in +0 -0
  24. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/README.md +0 -0
  25. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/.omlish-manifests.json +0 -0
  26. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/README.md +0 -0
  27. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/__about__.py +0 -0
  28. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/__init__.py +0 -0
  29. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/asyncs/__init__.py +0 -0
  30. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/asyncs/all.py +0 -0
  31. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/asyncs/bluelet/LICENSE +0 -0
  32. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/asyncs/bluelet/__init__.py +0 -0
  33. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/asyncs/bluelet/all.py +0 -0
  34. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/asyncs/bluelet/api.py +0 -0
  35. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/asyncs/bluelet/core.py +0 -0
  36. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/asyncs/bluelet/events.py +0 -0
  37. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/asyncs/bluelet/files.py +0 -0
  38. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/asyncs/bluelet/runner.py +0 -0
  39. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/asyncs/bluelet/sockets.py +0 -0
  40. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/asyncs/bridge.py +0 -0
  41. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/asyncs/flavors.py +0 -0
  42. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/concurrent/__init__.py +0 -0
  43. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/concurrent/threadlets.py +0 -0
  44. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/defs.py +0 -0
  45. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/dynamic.py +0 -0
  46. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/formats/__init__.py +0 -0
  47. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/formats/goyaml/LICENSE +0 -0
  48. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/formats/goyaml/__init__.py +0 -0
  49. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/formats/goyaml/ast.py +0 -0
  50. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/formats/goyaml/errors.py +0 -0
  51. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/formats/goyaml/parsing.py +0 -0
  52. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/formats/goyaml/scanning.py +0 -0
  53. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/formats/goyaml/tokens.py +0 -0
  54. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/formats/json/Json.g4 +0 -0
  55. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/formats/json/__init__.py +0 -0
  56. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/formats/json/_antlr/JsonLexer.py +0 -0
  57. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/formats/json/_antlr/JsonListener.py +0 -0
  58. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/formats/json/_antlr/JsonParser.py +0 -0
  59. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/formats/json/_antlr/JsonVisitor.py +0 -0
  60. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/formats/json/_antlr/__init__.py +0 -0
  61. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/formats/json5/Json5.g4 +0 -0
  62. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/formats/json5/__init__.py +0 -0
  63. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/formats/json5/_antlr/Json5Lexer.py +0 -0
  64. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/formats/json5/_antlr/Json5Listener.py +0 -0
  65. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/formats/json5/_antlr/Json5Parser.py +0 -0
  66. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/formats/json5/_antlr/Json5Visitor.py +0 -0
  67. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/formats/json5/_antlr/__init__.py +0 -0
  68. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/formats/json5/parsing.py +0 -0
  69. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/io/__init__.py +0 -0
  70. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/io/pipelines/__init__.py +0 -0
  71. {omxtra-0.0.0.dev526/omxtra/io/pipelines/handlers → omxtra-0.0.0.dev527/omxtra/io/pipelines/bytes}/__init__.py +0 -0
  72. {omxtra-0.0.0.dev526/omxtra/io/pipelines/http → omxtra-0.0.0.dev527/omxtra/io/pipelines/drivers}/__init__.py +0 -0
  73. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/io/pipelines/errors.py +0 -0
  74. {omxtra-0.0.0.dev526/omxtra/io/pipelines/http/client → omxtra-0.0.0.dev527/omxtra/io/pipelines/flow}/__init__.py +0 -0
  75. {omxtra-0.0.0.dev526/omxtra/io/pipelines/http/server → omxtra-0.0.0.dev527/omxtra/io/pipelines/handlers}/__init__.py +0 -0
  76. {omxtra-0.0.0.dev526/omxtra/specs → omxtra-0.0.0.dev527/omxtra/io/pipelines/http}/__init__.py +0 -0
  77. {omxtra-0.0.0.dev526/omxtra/specs/proto → omxtra-0.0.0.dev527/omxtra/io/pipelines/http/client}/__init__.py +0 -0
  78. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/io/pipelines/http/client/requests.py +0 -0
  79. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/io/pipelines/http/client/responses2.py +0 -0
  80. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/io/pipelines/http/client/responses3.py +0 -0
  81. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/io/pipelines/http/decoders.py +0 -0
  82. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/io/pipelines/http/requests.py +0 -0
  83. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/io/pipelines/http/responses.py +0 -0
  84. {omxtra-0.0.0.dev526/omxtra/specs/proto/_antlr → omxtra-0.0.0.dev527/omxtra/io/pipelines/http/server}/__init__.py +0 -0
  85. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/io/pipelines/http/server/responses.py +0 -0
  86. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/io/pipelines/http/sse.py +0 -0
  87. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/io/trampoline.py +0 -0
  88. {omxtra-0.0.0.dev526/omxtra/sql → omxtra-0.0.0.dev527/omxtra/specs}/__init__.py +0 -0
  89. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/specs/proto/Protobuf3.g4 +0 -0
  90. {omxtra-0.0.0.dev526/omxtra/sql/parsing → omxtra-0.0.0.dev527/omxtra/specs/proto}/__init__.py +0 -0
  91. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/specs/proto/_antlr/Protobuf3Lexer.py +0 -0
  92. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/specs/proto/_antlr/Protobuf3Listener.py +0 -0
  93. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/specs/proto/_antlr/Protobuf3Parser.py +0 -0
  94. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/specs/proto/_antlr/Protobuf3Visitor.py +0 -0
  95. {omxtra-0.0.0.dev526/omxtra/sql/parsing → omxtra-0.0.0.dev527/omxtra/specs/proto}/_antlr/__init__.py +0 -0
  96. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/specs/proto/nodes.py +0 -0
  97. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/specs/proto/parsing.py +0 -0
  98. {omxtra-0.0.0.dev526/omxtra/text → omxtra-0.0.0.dev527/omxtra/sql}/__init__.py +0 -0
  99. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/sql/alchemy/__init__.py +0 -0
  100. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/sql/alchemy/asyncs.py +0 -0
  101. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/sql/parsing/Minisql.g4 +0 -0
  102. {omxtra-0.0.0.dev526/omxtra/text/abnf/docs → omxtra-0.0.0.dev527/omxtra/sql/parsing}/__init__.py +0 -0
  103. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/sql/parsing/_antlr/MinisqlLexer.py +0 -0
  104. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/sql/parsing/_antlr/MinisqlListener.py +0 -0
  105. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/sql/parsing/_antlr/MinisqlParser.py +0 -0
  106. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/sql/parsing/_antlr/MinisqlVisitor.py +0 -0
  107. {omxtra-0.0.0.dev526/omxtra/text/antlr/cli → omxtra-0.0.0.dev527/omxtra/sql/parsing/_antlr}/__init__.py +0 -0
  108. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/sql/parsing/parsing.py +0 -0
  109. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/text/abnf/LICENSE +0 -0
  110. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/text/abnf/__init__.py +0 -0
  111. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/text/abnf/_dataclasses.py +0 -0
  112. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/text/abnf/base.py +0 -0
  113. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/text/abnf/core.py +0 -0
  114. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/text/abnf/docs/rfc5234.txt +0 -0
  115. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/text/abnf/docs/rfc7405.txt +0 -0
  116. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/text/abnf/errors.py +0 -0
  117. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/text/abnf/grammars.py +0 -0
  118. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/text/abnf/internal.py +0 -0
  119. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/text/abnf/matches.py +0 -0
  120. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/text/abnf/meta.py +0 -0
  121. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/text/abnf/ops.py +0 -0
  122. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/text/abnf/opto.py +0 -0
  123. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/text/abnf/parsing.py +0 -0
  124. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/text/abnf/utils.py +0 -0
  125. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/text/abnf/visitors.py +0 -0
  126. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/text/antlr/__init__.py +0 -0
  127. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/text/antlr/_runtime/BufferedTokenStream.py +0 -0
  128. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/text/antlr/_runtime/CommonTokenFactory.py +0 -0
  129. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/text/antlr/_runtime/CommonTokenStream.py +0 -0
  130. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/text/antlr/_runtime/FileStream.py +0 -0
  131. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/text/antlr/_runtime/InputStream.py +0 -0
  132. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/text/antlr/_runtime/IntervalSet.py +0 -0
  133. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/text/antlr/_runtime/LICENSE.txt +0 -0
  134. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/text/antlr/_runtime/LL1Analyzer.py +0 -0
  135. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/text/antlr/_runtime/Lexer.py +0 -0
  136. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/text/antlr/_runtime/ListTokenSource.py +0 -0
  137. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/text/antlr/_runtime/Parser.py +0 -0
  138. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/text/antlr/_runtime/ParserInterpreter.py +0 -0
  139. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/text/antlr/_runtime/ParserRuleContext.py +0 -0
  140. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/text/antlr/_runtime/PredictionContext.py +0 -0
  141. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/text/antlr/_runtime/Recognizer.py +0 -0
  142. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/text/antlr/_runtime/RuleContext.py +0 -0
  143. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/text/antlr/_runtime/StdinStream.py +0 -0
  144. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/text/antlr/_runtime/Token.py +0 -0
  145. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/text/antlr/_runtime/TokenStreamRewriter.py +0 -0
  146. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/text/antlr/_runtime/Utils.py +0 -0
  147. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/text/antlr/_runtime/__init__.py +0 -0
  148. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/text/antlr/_runtime/_all.py +0 -0
  149. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/text/antlr/_runtime/_pygrun.py +0 -0
  150. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/text/antlr/_runtime/atn/ATN.py +0 -0
  151. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/text/antlr/_runtime/atn/ATNConfig.py +0 -0
  152. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/text/antlr/_runtime/atn/ATNConfigSet.py +0 -0
  153. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/text/antlr/_runtime/atn/ATNDeserializationOptions.py +0 -0
  154. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/text/antlr/_runtime/atn/ATNDeserializer.py +0 -0
  155. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/text/antlr/_runtime/atn/ATNSimulator.py +0 -0
  156. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/text/antlr/_runtime/atn/ATNState.py +0 -0
  157. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/text/antlr/_runtime/atn/ATNType.py +0 -0
  158. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/text/antlr/_runtime/atn/LexerATNSimulator.py +0 -0
  159. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/text/antlr/_runtime/atn/LexerAction.py +0 -0
  160. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/text/antlr/_runtime/atn/LexerActionExecutor.py +0 -0
  161. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/text/antlr/_runtime/atn/ParserATNSimulator.py +0 -0
  162. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/text/antlr/_runtime/atn/PredictionMode.py +0 -0
  163. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/text/antlr/_runtime/atn/SemanticContext.py +0 -0
  164. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/text/antlr/_runtime/atn/Transition.py +0 -0
  165. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/text/antlr/_runtime/atn/__init__.py +0 -0
  166. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/text/antlr/_runtime/dfa/DFA.py +0 -0
  167. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/text/antlr/_runtime/dfa/DFASerializer.py +0 -0
  168. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/text/antlr/_runtime/dfa/DFAState.py +0 -0
  169. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/text/antlr/_runtime/dfa/__init__.py +0 -0
  170. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/text/antlr/_runtime/error/DiagnosticErrorListener.py +0 -0
  171. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/text/antlr/_runtime/error/ErrorListener.py +0 -0
  172. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/text/antlr/_runtime/error/ErrorStrategy.py +0 -0
  173. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/text/antlr/_runtime/error/Errors.py +0 -0
  174. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/text/antlr/_runtime/error/__init__.py +0 -0
  175. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/text/antlr/_runtime/tree/Chunk.py +0 -0
  176. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/text/antlr/_runtime/tree/ParseTreeMatch.py +0 -0
  177. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/text/antlr/_runtime/tree/ParseTreePattern.py +0 -0
  178. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/text/antlr/_runtime/tree/ParseTreePatternMatcher.py +0 -0
  179. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/text/antlr/_runtime/tree/RuleTagToken.py +0 -0
  180. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/text/antlr/_runtime/tree/TokenTagToken.py +0 -0
  181. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/text/antlr/_runtime/tree/Tree.py +0 -0
  182. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/text/antlr/_runtime/tree/Trees.py +0 -0
  183. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/text/antlr/_runtime/tree/__init__.py +0 -0
  184. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/text/antlr/_runtime/xpath/XPath.py +0 -0
  185. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/text/antlr/_runtime/xpath/XPathLexer.py +0 -0
  186. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/text/antlr/_runtime/xpath/__init__.py +0 -0
  187. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/text/antlr/cli/__main__.py +0 -0
  188. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/text/antlr/cli/cli.py +0 -0
  189. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/text/antlr/cli/consts.py +0 -0
  190. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/text/antlr/cli/gen.py +0 -0
  191. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/text/antlr/delimit.py +0 -0
  192. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/text/antlr/dot.py +0 -0
  193. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/text/antlr/errors.py +0 -0
  194. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/text/antlr/input.py +0 -0
  195. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/text/antlr/parsing.py +0 -0
  196. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/text/antlr/runtime.py +0 -0
  197. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra/text/antlr/utils.py +0 -0
  198. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra.egg-info/dependency_links.txt +0 -0
  199. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra.egg-info/entry_points.txt +0 -0
  200. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/omxtra.egg-info/top_level.txt +0 -0
  201. {omxtra-0.0.0.dev526 → omxtra-0.0.0.dev527}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: omxtra
3
- Version: 0.0.0.dev526
3
+ Version: 0.0.0.dev527
4
4
  Summary: omxtra
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.dev526
17
+ Requires-Dist: omlish==0.0.0.dev527
18
18
  Dynamic: license-file
19
19
 
20
20
  # Overview
@@ -0,0 +1,19 @@
1
+ # ruff: noqa: UP045
2
+ # @omlish-lite
3
+ import abc
4
+ import typing as ta
5
+
6
+ from omlish.lite.abstract import Abstract
7
+
8
+ from ..core import ChannelPipelineHandler
9
+
10
+
11
+ ##
12
+
13
+
14
+ class InboundBytesBufferingChannelPipelineHandler(ChannelPipelineHandler, Abstract):
15
+ @abc.abstractmethod
16
+ def inbound_buffered_bytes(self) -> ta.Optional[int]:
17
+ """Returning `None` denotes currently unknown/unanswerable."""
18
+
19
+ raise NotImplementedError
@@ -7,11 +7,11 @@ from omlish.io.streams.scanning import ScanningByteStreamBuffer
7
7
  from omlish.io.streams.segmented import SegmentedByteStreamBuffer
8
8
  from omlish.io.streams.utils import ByteStreamBuffers
9
9
 
10
- from ..bytes import InboundBytesBufferingChannelPipelineHandler
11
10
  from ..core import ChannelPipelineHandler
12
11
  from ..core import ChannelPipelineHandlerContext
13
12
  from ..core import ChannelPipelineMessages
14
13
  from ..errors import IncompleteDecodingChannelPipelineError
14
+ from .buffering import InboundBytesBufferingChannelPipelineHandler
15
15
 
16
16
 
17
17
  ##
@@ -0,0 +1,56 @@
1
+ # ruff: noqa: FURB188 UP045
2
+ # @omlish-lite
3
+ import typing as ta
4
+
5
+ from omlish.io.streams.utils import ByteStreamBuffers
6
+
7
+ from ..handlers.fns import ChannelPipelineHandlerFn
8
+ from ..handlers.fns import ChannelPipelineHandlerFns
9
+ from ..handlers.queues import InboundQueueChannelPipelineHandler
10
+ from .buffering import InboundBytesBufferingChannelPipelineHandler
11
+
12
+
13
+ ##
14
+
15
+
16
+ class InboundBytesBufferingQueueChannelPipelineHandler(
17
+ InboundBytesBufferingChannelPipelineHandler,
18
+ InboundQueueChannelPipelineHandler,
19
+ ):
20
+ def __init__(
21
+ self,
22
+ *,
23
+ filter: ta.Union[ChannelPipelineHandlerFn[ta.Any, bool], ta.Literal[True], None] = None, # noqa
24
+ passthrough: bool = False,
25
+ ) -> None:
26
+ if filter is True:
27
+ filter = ChannelPipelineHandlerFns.no_context(ByteStreamBuffers.can_bytes) # noqa
28
+
29
+ super().__init__(
30
+ filter=filter, # noqa
31
+ passthrough=passthrough,
32
+ )
33
+
34
+ _buffered_bytes: int = 0
35
+
36
+ # @ta.override
37
+ def inbound_buffered_bytes(self) -> ta.Optional[int]:
38
+ return self._buffered_bytes
39
+
40
+ # @ta.override
41
+ def _append(self, msg: ta.Any) -> None:
42
+ bl = ByteStreamBuffers.bytes_len(msg, True)
43
+
44
+ super()._append((msg, bl))
45
+
46
+ if bl is not None:
47
+ self._buffered_bytes += bl
48
+
49
+ # @ta.override
50
+ def _popleft(self) -> ta.Any:
51
+ msg, bl = self._q.popleft()
52
+
53
+ if bl is not None:
54
+ self._buffered_bytes -= bl
55
+
56
+ return msg
@@ -16,14 +16,11 @@ from .errors import MessageReachedTerminalChannelPipelineError
16
16
  from .errors import SawEofChannelPipelineError
17
17
 
18
18
 
19
- F = ta.TypeVar('F')
20
19
  T = ta.TypeVar('T')
21
20
 
22
21
  ChannelPipelineHandlerT = ta.TypeVar('ChannelPipelineHandlerT', bound='ChannelPipelineHandler')
23
22
  ShareableChannelPipelineHandlerT = ta.TypeVar('ShareableChannelPipelineHandlerT', bound='ShareableChannelPipelineHandler') # noqa
24
23
 
25
- ChannelPipelineHandlerFn = ta.Callable[['ChannelPipelineHandlerContext', F], T] # ta.TypeAlias
26
-
27
24
 
28
25
  ##
29
26
 
@@ -80,41 +77,6 @@ class ChannelPipelineEvents(NamespaceClass):
80
77
  ##
81
78
 
82
79
 
83
- class ChannelPipelineHandlerFns(NamespaceClass):
84
- @dc.dataclass(frozen=True)
85
- class NoContext(ta.Generic[F, T]):
86
- fn: ta.Callable[[F], T]
87
-
88
- def __repr__(self) -> str:
89
- return f'{type(self).__name__}({self.fn!r})'
90
-
91
- def __call__(self, ctx: 'ChannelPipelineHandlerContext', obj: F) -> T:
92
- return self.fn(obj)
93
-
94
- @classmethod
95
- def no_context(cls, fn: ta.Callable[[F], T]) -> ChannelPipelineHandlerFn[F, T]:
96
- return cls.NoContext(fn=fn)
97
-
98
- #
99
-
100
- @dc.dataclass(frozen=True)
101
- class Isinstance:
102
- ty: ta.Union[type, ta.Tuple[type, ...]]
103
-
104
- def __repr__(self) -> str:
105
- return f'{type(self).__name__}({self.ty!r})'
106
-
107
- def __call__(self, ctx: 'ChannelPipelineHandlerContext', msg: ta.Any) -> bool:
108
- return isinstance(msg, self.ty)
109
-
110
- @classmethod
111
- def isinstance(cls, ty: ta.Union[type, ta.Tuple[type, ...]]) -> ChannelPipelineHandlerFn[ta.Any, bool]:
112
- return cls.Isinstance(ty=ty)
113
-
114
-
115
- ##
116
-
117
-
118
80
  @ta.final
119
81
  class ChannelPipelineHandlerRef(ta.Generic[T]):
120
82
  """
@@ -6,8 +6,8 @@ import typing as ta
6
6
  from omlish.io.streams.utils import ByteStreamBuffers
7
7
  from omlish.lite.check import check
8
8
 
9
- from .bytes import BytesChannelPipelineFlowControl
10
- from .core import PipelineChannel
9
+ from ..core import PipelineChannel
10
+ from ..flow.bytes import BytesChannelPipelineFlowControl
11
11
 
12
12
 
13
13
  ##
@@ -1,12 +1,10 @@
1
1
  # ruff: noqa: UP045
2
2
  # @omlish-lite
3
- import abc
4
3
  import typing as ta
5
4
 
6
5
  from omlish.io.streams.utils import ByteStreamBuffers
7
6
  from omlish.lite.abstract import Abstract
8
7
 
9
- from .core import ChannelPipelineHandler
10
8
  from .flow import ChannelPipelineFlowControl
11
9
  from .flow import ChannelPipelineFlowControlAdapter
12
10
  from .flow import FlowControlChannelPipelineHandler
@@ -15,20 +13,9 @@ from .flow import FlowControlChannelPipelineHandler
15
13
  ##
16
14
 
17
15
 
18
- class InboundBytesBufferingChannelPipelineHandler(ChannelPipelineHandler, Abstract):
19
- @abc.abstractmethod
20
- def inbound_buffered_bytes(self) -> ta.Optional[int]:
21
- """Returning `None` denotes currently unknown/unanswerable."""
22
-
23
- raise NotImplementedError
24
-
25
-
26
- ##
27
-
28
-
29
16
  class BytesChannelPipelineFlowControlAdapter(ChannelPipelineFlowControlAdapter):
30
17
  def get_cost(self, msg: ta.Any) -> ta.Optional[int]:
31
- return ByteStreamBuffers.bytes_len(msg)
18
+ return ByteStreamBuffers.bytes_len(msg, True)
32
19
 
33
20
 
34
21
  ##
@@ -9,12 +9,12 @@ from omlish.lite.abstract import Abstract
9
9
  from omlish.lite.check import check
10
10
  from omlish.lite.namespaces import NamespaceClass
11
11
 
12
- from .core import ChannelPipelineEvents
13
- from .core import ChannelPipelineHandler
14
- from .core import ChannelPipelineHandlerContext
15
- from .core import ChannelPipelineMessages
16
- from .core import PipelineChannel
17
- from .errors import FlowControlValidationChannelPipelineError
12
+ from ..core import ChannelPipelineEvents
13
+ from ..core import ChannelPipelineHandler
14
+ from ..core import ChannelPipelineHandlerContext
15
+ from ..core import ChannelPipelineMessages
16
+ from ..core import PipelineChannel
17
+ from ..errors import FlowControlValidationChannelPipelineError
18
18
 
19
19
 
20
20
  ##
@@ -11,7 +11,7 @@ from omlish.lite.namespaces import NamespaceClass
11
11
  from ..core import ChannelPipelineDirectionOrDuplex
12
12
  from ..core import ChannelPipelineHandler
13
13
  from ..core import ChannelPipelineHandlerContext
14
- from ..core import ChannelPipelineHandlerFn
14
+ from .fns import ChannelPipelineHandlerFn
15
15
 
16
16
 
17
17
  ##
@@ -0,0 +1,120 @@
1
+ # ruff: noqa: UP006 UP007 UP045
2
+ # @omlish-lite
3
+ import dataclasses as dc
4
+ import typing as ta
5
+
6
+ from omlish.lite.abstract import Abstract
7
+ from omlish.lite.namespaces import NamespaceClass
8
+
9
+ from ..core import ChannelPipelineHandler
10
+ from ..core import ChannelPipelineHandlerContext
11
+
12
+
13
+ F = ta.TypeVar('F')
14
+ T = ta.TypeVar('T')
15
+
16
+ ChannelPipelineHandlerFn = ta.Callable[['ChannelPipelineHandlerContext', F], T] # ta.TypeAlias
17
+
18
+
19
+ ##
20
+
21
+
22
+ class ChannelPipelineHandlerFns(NamespaceClass):
23
+ @dc.dataclass(frozen=True)
24
+ class NoContext(ta.Generic[F, T]):
25
+ fn: ta.Callable[[F], T]
26
+
27
+ def __repr__(self) -> str:
28
+ return f'{type(self).__name__}({self.fn!r})'
29
+
30
+ def __call__(self, ctx: ChannelPipelineHandlerContext, obj: F) -> T:
31
+ return self.fn(obj)
32
+
33
+ @classmethod
34
+ def no_context(cls, fn: ta.Callable[[F], T]) -> ChannelPipelineHandlerFn[F, T]:
35
+ return cls.NoContext(fn=fn)
36
+
37
+ #
38
+
39
+ @dc.dataclass(frozen=True)
40
+ class Isinstance:
41
+ ty: ta.Union[type, ta.Tuple[type, ...]]
42
+
43
+ def __repr__(self) -> str:
44
+ return f'{type(self).__name__}({self.ty!r})'
45
+
46
+ def __call__(self, ctx: ChannelPipelineHandlerContext, msg: ta.Any) -> bool:
47
+ return isinstance(msg, self.ty)
48
+
49
+ @classmethod
50
+ def isinstance(cls, ty: ta.Union[type, ta.Tuple[type, ...]]) -> ChannelPipelineHandlerFn[ta.Any, bool]:
51
+ return cls.Isinstance(ty=ty)
52
+
53
+
54
+ ##
55
+
56
+
57
+ class FnChannelPipelineHandler(ChannelPipelineHandler, Abstract):
58
+ @classmethod
59
+ def of(
60
+ cls,
61
+ *,
62
+ inbound: ta.Optional[ChannelPipelineHandlerFn[ta.Any, None]] = None,
63
+ outbound: ta.Optional[ChannelPipelineHandlerFn[ta.Any, None]] = None,
64
+ ) -> ChannelPipelineHandler:
65
+ if inbound is not None and outbound is not None:
66
+ return DuplexFnChannelPipelineHandler(inbound=inbound, outbound=outbound)
67
+ elif inbound is not None:
68
+ return InboundFnChannelPipelineHandler(inbound)
69
+ elif outbound is not None:
70
+ return OutboundFnChannelPipelineHandler(outbound)
71
+ else:
72
+ raise ValueError('At least one of inbound or outbound must be specified')
73
+
74
+
75
+ class InboundFnChannelPipelineHandler(FnChannelPipelineHandler):
76
+ def __init__(self, inbound: ChannelPipelineHandlerFn[ta.Any, None]) -> None:
77
+ super().__init__()
78
+
79
+ self._inbound = inbound
80
+
81
+ def __repr__(self) -> str:
82
+ return f'{type(self).__name__}@{id(self):x}({self._inbound!r})'
83
+
84
+ def inbound(self, ctx: ChannelPipelineHandlerContext, msg: ta.Any) -> None:
85
+ self._inbound(ctx, msg)
86
+
87
+
88
+ class OutboundFnChannelPipelineHandler(FnChannelPipelineHandler):
89
+ def __init__(self, outbound: ChannelPipelineHandlerFn[ta.Any, None]) -> None:
90
+ super().__init__()
91
+
92
+ self._outbound = outbound
93
+
94
+ def __repr__(self) -> str:
95
+ return f'{type(self).__name__}@{id(self):x}({self._outbound!r})'
96
+
97
+ def outbound(self, ctx: ChannelPipelineHandlerContext, msg: ta.Any) -> None:
98
+ self._outbound(ctx, msg)
99
+
100
+
101
+ class DuplexFnChannelPipelineHandler(FnChannelPipelineHandler):
102
+ def __init__(
103
+ self,
104
+ *,
105
+ inbound: ChannelPipelineHandlerFn[ta.Any, None],
106
+ outbound: ChannelPipelineHandlerFn[ta.Any, None],
107
+ ) -> None:
108
+ super().__init__()
109
+
110
+ self._inbound = inbound
111
+ self._outbound = outbound
112
+
113
+ def __repr__(self) -> str:
114
+ return f'{type(self).__name__}@{id(self):x}(inbound={self._inbound!r}, outbound={self._outbound!r})'
115
+
116
+ def inbound(self, ctx: ChannelPipelineHandlerContext, msg: ta.Any) -> None:
117
+ self._inbound(ctx, msg)
118
+
119
+ def outbound(self, ctx: ChannelPipelineHandlerContext, msg: ta.Any) -> None:
120
+ self._outbound(ctx, msg)
@@ -0,0 +1,99 @@
1
+ # ruff: noqa: UP006 UP037 UP045
2
+ # @omlish-lite
3
+ """
4
+ TODO:
5
+ - max size, simple backpressure?
6
+ """
7
+ import collections
8
+ import typing as ta
9
+
10
+ from omlish.lite.abstract import Abstract
11
+
12
+ from ..core import ChannelPipelineHandler
13
+ from ..core import ChannelPipelineHandlerContext
14
+ from .fns import ChannelPipelineHandlerFn
15
+
16
+
17
+ ##
18
+
19
+
20
+ class QueueChannelPipelineHandler(ChannelPipelineHandler, Abstract):
21
+ def __init__(
22
+ self,
23
+ *,
24
+ filter: ta.Optional[ChannelPipelineHandlerFn[ta.Any, bool]] = None, # noqa
25
+ passthrough: bool = False,
26
+ ) -> None:
27
+ super().__init__()
28
+
29
+ self._filter = filter
30
+ self._passthrough = passthrough
31
+
32
+ self._q: 'collections.deque[ta.Any]' = collections.deque()
33
+
34
+ def __repr__(self) -> str:
35
+ return ''.join([
36
+ f'{type(self).__name__}@{id(self):x}',
37
+ f'<len={len(self._q)}>',
38
+ '(',
39
+ ', '.join([
40
+ *([f'filter={self._filter!r}'] if self._filter is not None else []),
41
+ *([f'passthrough={self._passthrough!r}'] if self._passthrough else []),
42
+ ]),
43
+ ')',
44
+ ])
45
+
46
+ #
47
+
48
+ def _append(self, msg: ta.Any) -> None:
49
+ self._q.append(msg)
50
+
51
+ def _popleft(self) -> ta.Any:
52
+ return self._q.popleft()
53
+
54
+ #
55
+
56
+ def poll(self) -> ta.Optional[ta.Any]:
57
+ if not self._q:
58
+ return None
59
+
60
+ return self._popleft()
61
+
62
+ def drain(self) -> ta.List[ta.Any]:
63
+ out: ta.List[ta.Any] = []
64
+
65
+ while self._q:
66
+ out.append(self._popleft())
67
+
68
+ return out
69
+
70
+
71
+ class InboundQueueChannelPipelineHandler(QueueChannelPipelineHandler):
72
+ def inbound(self, ctx: ChannelPipelineHandlerContext, msg: ta.Any) -> None:
73
+ if (self._filter is not None and not self._filter(ctx, msg)):
74
+ ctx.feed_in(msg)
75
+ return
76
+
77
+ self._append(msg)
78
+
79
+ if self._passthrough:
80
+ ctx.feed_in(msg)
81
+
82
+
83
+ class OutboundQueueChannelPipelineHandler(QueueChannelPipelineHandler):
84
+ def outbound(self, ctx: ChannelPipelineHandlerContext, msg: ta.Any) -> None:
85
+ if (self._filter is not None and not self._filter(ctx, msg)):
86
+ ctx.feed_out(msg)
87
+ return
88
+
89
+ self._append(msg)
90
+
91
+ if self._passthrough:
92
+ ctx.feed_out(msg)
93
+
94
+
95
+ class DuplexQueueChannelPipelineHandler(
96
+ InboundQueueChannelPipelineHandler,
97
+ OutboundQueueChannelPipelineHandler,
98
+ ):
99
+ pass
@@ -9,7 +9,7 @@ from omlish.http.parsing import ParsedHttpMessage
9
9
  from omlish.io.streams.utils import ByteStreamBuffers
10
10
  from omlish.lite.check import check
11
11
 
12
- from ...bytes import InboundBytesBufferingChannelPipelineHandler
12
+ from ...bytes.buffering import InboundBytesBufferingChannelPipelineHandler
13
13
  from ...core import ChannelPipelineHandler
14
14
  from ...core import ChannelPipelineHandlerContext
15
15
  from ...core import ChannelPipelineMessages
@@ -10,7 +10,7 @@ from omlish.io.streams.segmented import SegmentedByteStreamBuffer
10
10
  from omlish.io.streams.utils import ByteStreamBuffers
11
11
  from omlish.lite.check import check
12
12
 
13
- from ...bytes import InboundBytesBufferingChannelPipelineHandler
13
+ from ...bytes.buffering import InboundBytesBufferingChannelPipelineHandler
14
14
  from ...core import ChannelPipelineHandlerContext
15
15
  from ...core import ChannelPipelineMessages
16
16
  from ..decoders import ChunkedPipelineHttpContentChunkDecoder
File without changes
File without changes
File without changes
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: omxtra
3
- Version: 0.0.0.dev526
3
+ Version: 0.0.0.dev527
4
4
  Summary: omxtra
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.dev526
17
+ Requires-Dist: omlish==0.0.0.dev527
18
18
  Dynamic: license-file
19
19
 
20
20
  # Overview
@@ -55,14 +55,21 @@ omxtra/formats/json5/_antlr/__init__.py
55
55
  omxtra/io/__init__.py
56
56
  omxtra/io/trampoline.py
57
57
  omxtra/io/pipelines/__init__.py
58
- omxtra/io/pipelines/asyncio.py
59
- omxtra/io/pipelines/bytes.py
60
58
  omxtra/io/pipelines/core.py
61
59
  omxtra/io/pipelines/errors.py
62
- omxtra/io/pipelines/flow.py
60
+ omxtra/io/pipelines/bytes/__init__.py
61
+ omxtra/io/pipelines/bytes/buffering.py
62
+ omxtra/io/pipelines/bytes/decoders.py
63
+ omxtra/io/pipelines/bytes/queues.py
64
+ omxtra/io/pipelines/drivers/__init__.py
65
+ omxtra/io/pipelines/drivers/asyncio.py
66
+ omxtra/io/pipelines/flow/__init__.py
67
+ omxtra/io/pipelines/flow/bytes.py
68
+ omxtra/io/pipelines/flow/flow.py
63
69
  omxtra/io/pipelines/handlers/__init__.py
64
- omxtra/io/pipelines/handlers/decoders.py
65
70
  omxtra/io/pipelines/handlers/flatmap.py
71
+ omxtra/io/pipelines/handlers/fns.py
72
+ omxtra/io/pipelines/handlers/queues.py
66
73
  omxtra/io/pipelines/http/__init__.py
67
74
  omxtra/io/pipelines/http/decoders.py
68
75
  omxtra/io/pipelines/http/requests.py
@@ -0,0 +1 @@
1
+ omlish==0.0.0.dev527
@@ -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.dev526'
16
+ version = '0.0.0.dev527'
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 = 'omxtra'
26
26
  dependencies = [
27
- 'omlish == 0.0.0.dev526',
27
+ 'omlish == 0.0.0.dev527',
28
28
  ]
29
29
 
30
30
  [project.optional-dependencies]
@@ -1 +0,0 @@
1
- omlish==0.0.0.dev526
File without changes
File without changes
File without changes