omlish 0.0.0.dev447__py3-none-any.whl → 0.0.0.dev484__py3-none-any.whl

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.

Potentially problematic release.


This version of omlish might be problematic. Click here for more details.

Files changed (226) hide show
  1. omlish/.omlish-manifests.json +12 -0
  2. omlish/__about__.py +15 -15
  3. omlish/argparse/all.py +17 -9
  4. omlish/argparse/cli.py +16 -3
  5. omlish/argparse/utils.py +21 -0
  6. omlish/asyncs/asyncio/rlock.py +110 -0
  7. omlish/asyncs/asyncio/sync.py +43 -0
  8. omlish/asyncs/asyncio/utils.py +2 -0
  9. omlish/asyncs/sync.py +25 -0
  10. omlish/bootstrap/_marshal.py +1 -1
  11. omlish/bootstrap/diag.py +12 -21
  12. omlish/bootstrap/main.py +2 -5
  13. omlish/bootstrap/sys.py +27 -28
  14. omlish/cexts/__init__.py +0 -0
  15. omlish/cexts/include/omlish/omlish.hh +1 -0
  16. omlish/collections/__init__.py +13 -1
  17. omlish/collections/attrregistry.py +210 -0
  18. omlish/collections/cache/impl.py +1 -0
  19. omlish/collections/identity.py +1 -0
  20. omlish/collections/mappings.py +28 -0
  21. omlish/collections/trie.py +5 -1
  22. omlish/collections/utils.py +77 -0
  23. omlish/concurrent/all.py +2 -1
  24. omlish/concurrent/futures.py +25 -0
  25. omlish/concurrent/threadlets.py +1 -1
  26. omlish/daemons/reparent.py +2 -3
  27. omlish/daemons/spawning.py +2 -3
  28. omlish/dataclasses/__init__.py +2 -0
  29. omlish/dataclasses/impl/api/classes/decorator.py +3 -0
  30. omlish/dataclasses/impl/api/classes/make.py +3 -0
  31. omlish/dataclasses/impl/concerns/repr.py +15 -2
  32. omlish/dataclasses/impl/configs.py +97 -37
  33. omlish/dataclasses/impl/generation/compilation.py +21 -19
  34. omlish/dataclasses/impl/generation/globals.py +1 -0
  35. omlish/dataclasses/impl/generation/ops.py +1 -0
  36. omlish/dataclasses/impl/generation/processor.py +105 -24
  37. omlish/dataclasses/impl/processing/base.py +8 -0
  38. omlish/dataclasses/impl/processing/driving.py +8 -8
  39. omlish/dataclasses/specs.py +1 -0
  40. omlish/dataclasses/tools/modifiers.py +5 -0
  41. omlish/diag/cmds/__init__.py +0 -0
  42. omlish/diag/{lslocks.py → cmds/lslocks.py} +6 -6
  43. omlish/diag/{lsof.py → cmds/lsof.py} +6 -6
  44. omlish/diag/{ps.py → cmds/ps.py} +6 -6
  45. omlish/diag/pycharm.py +16 -2
  46. omlish/diag/pydevd.py +58 -40
  47. omlish/diag/replserver/console.py +1 -1
  48. omlish/dispatch/__init__.py +18 -12
  49. omlish/dispatch/methods.py +50 -140
  50. omlish/dom/rendering.py +1 -1
  51. omlish/formats/dotenv.py +1 -1
  52. omlish/formats/json/stream/__init__.py +13 -0
  53. omlish/funcs/guard.py +225 -0
  54. omlish/graphs/dot/rendering.py +1 -1
  55. omlish/http/all.py +44 -4
  56. omlish/http/clients/asyncs.py +33 -27
  57. omlish/http/clients/base.py +17 -1
  58. omlish/http/clients/coro/__init__.py +0 -0
  59. omlish/http/clients/coro/sync.py +171 -0
  60. omlish/http/clients/default.py +208 -29
  61. omlish/http/clients/executor.py +56 -0
  62. omlish/http/clients/httpx.py +72 -11
  63. omlish/http/clients/middleware.py +181 -0
  64. omlish/http/clients/sync.py +33 -27
  65. omlish/http/clients/syncasync.py +49 -0
  66. omlish/http/clients/urllib.py +6 -3
  67. omlish/http/coro/client/connection.py +15 -6
  68. omlish/http/coro/io.py +2 -0
  69. omlish/http/flasky/__init__.py +40 -0
  70. omlish/http/flasky/_compat.py +2 -0
  71. omlish/http/flasky/api.py +82 -0
  72. omlish/http/flasky/app.py +203 -0
  73. omlish/http/flasky/cvs.py +59 -0
  74. omlish/http/flasky/requests.py +20 -0
  75. omlish/http/flasky/responses.py +23 -0
  76. omlish/http/flasky/routes.py +23 -0
  77. omlish/http/flasky/types.py +15 -0
  78. omlish/http/urls.py +67 -0
  79. omlish/inject/__init__.py +38 -18
  80. omlish/inject/_dataclasses.py +4986 -0
  81. omlish/inject/binder.py +4 -48
  82. omlish/inject/elements.py +27 -0
  83. omlish/inject/helpers/__init__.py +0 -0
  84. omlish/inject/{utils.py → helpers/constfn.py} +3 -3
  85. omlish/inject/{tags.py → helpers/id.py} +2 -2
  86. omlish/inject/helpers/multis.py +143 -0
  87. omlish/inject/helpers/wrappers.py +54 -0
  88. omlish/inject/impl/elements.py +47 -17
  89. omlish/inject/impl/injector.py +20 -19
  90. omlish/inject/impl/inspect.py +10 -1
  91. omlish/inject/impl/maysync.py +3 -4
  92. omlish/inject/impl/multis.py +3 -0
  93. omlish/inject/impl/sync.py +3 -4
  94. omlish/inject/injector.py +31 -2
  95. omlish/inject/inspect.py +35 -0
  96. omlish/inject/maysync.py +2 -4
  97. omlish/inject/multis.py +8 -0
  98. omlish/inject/overrides.py +3 -3
  99. omlish/inject/privates.py +6 -0
  100. omlish/inject/providers.py +3 -2
  101. omlish/inject/sync.py +5 -4
  102. omlish/io/buffers.py +118 -0
  103. omlish/io/readers.py +29 -0
  104. omlish/iterators/transforms.py +2 -2
  105. omlish/lang/__init__.py +178 -97
  106. omlish/lang/_asyncs.cc +186 -0
  107. omlish/lang/asyncs.py +17 -0
  108. omlish/lang/casing.py +11 -0
  109. omlish/lang/contextmanagers.py +28 -4
  110. omlish/lang/functions.py +31 -22
  111. omlish/lang/imports/_capture.cc +11 -9
  112. omlish/lang/imports/capture.py +363 -170
  113. omlish/lang/imports/proxy.py +455 -152
  114. omlish/lang/lazyglobals.py +22 -9
  115. omlish/lang/params.py +17 -0
  116. omlish/lang/recursion.py +0 -1
  117. omlish/lang/sequences.py +124 -0
  118. omlish/lite/abstract.py +54 -24
  119. omlish/lite/asyncs.py +2 -2
  120. omlish/lite/attrops.py +2 -0
  121. omlish/lite/contextmanagers.py +4 -4
  122. omlish/lite/dataclasses.py +44 -0
  123. omlish/lite/maybes.py +8 -0
  124. omlish/lite/maysync.py +1 -5
  125. omlish/lite/pycharm.py +1 -1
  126. omlish/lite/typing.py +6 -0
  127. omlish/logs/all.py +1 -1
  128. omlish/logs/utils.py +1 -1
  129. omlish/manifests/loading.py +2 -1
  130. omlish/marshal/__init__.py +33 -13
  131. omlish/marshal/_dataclasses.py +2774 -0
  132. omlish/marshal/base/configs.py +12 -0
  133. omlish/marshal/base/contexts.py +36 -21
  134. omlish/marshal/base/funcs.py +8 -11
  135. omlish/marshal/base/options.py +8 -0
  136. omlish/marshal/base/registries.py +146 -44
  137. omlish/marshal/base/types.py +40 -16
  138. omlish/marshal/composite/iterables.py +33 -20
  139. omlish/marshal/composite/literals.py +20 -18
  140. omlish/marshal/composite/mappings.py +36 -23
  141. omlish/marshal/composite/maybes.py +29 -19
  142. omlish/marshal/composite/newtypes.py +16 -16
  143. omlish/marshal/composite/optionals.py +14 -14
  144. omlish/marshal/composite/special.py +15 -15
  145. omlish/marshal/composite/unions/__init__.py +0 -0
  146. omlish/marshal/composite/unions/literals.py +93 -0
  147. omlish/marshal/composite/unions/primitives.py +103 -0
  148. omlish/marshal/factories/invalidate.py +18 -68
  149. omlish/marshal/factories/method.py +26 -0
  150. omlish/marshal/factories/moduleimport/factories.py +22 -65
  151. omlish/marshal/factories/multi.py +13 -25
  152. omlish/marshal/factories/recursive.py +42 -56
  153. omlish/marshal/factories/typecache.py +29 -74
  154. omlish/marshal/factories/typemap.py +42 -43
  155. omlish/marshal/objects/dataclasses.py +129 -106
  156. omlish/marshal/objects/marshal.py +18 -14
  157. omlish/marshal/objects/namedtuples.py +48 -42
  158. omlish/marshal/objects/unmarshal.py +19 -15
  159. omlish/marshal/polymorphism/marshal.py +9 -11
  160. omlish/marshal/polymorphism/metadata.py +16 -5
  161. omlish/marshal/polymorphism/standard.py +13 -1
  162. omlish/marshal/polymorphism/unions.py +15 -105
  163. omlish/marshal/polymorphism/unmarshal.py +9 -10
  164. omlish/marshal/singular/enums.py +14 -18
  165. omlish/marshal/standard.py +10 -6
  166. omlish/marshal/trivial/any.py +1 -1
  167. omlish/marshal/trivial/forbidden.py +21 -26
  168. omlish/metadata.py +23 -1
  169. omlish/os/forkhooks.py +4 -0
  170. omlish/os/pidfiles/pinning.py +2 -2
  171. omlish/reflect/types.py +1 -0
  172. omlish/secrets/marshal.py +1 -1
  173. omlish/specs/jmespath/__init__.py +12 -3
  174. omlish/specs/jmespath/_dataclasses.py +2893 -0
  175. omlish/specs/jmespath/ast.py +1 -1
  176. omlish/specs/jsonrpc/__init__.py +13 -0
  177. omlish/specs/jsonrpc/_marshal.py +32 -23
  178. omlish/specs/jsonrpc/conns.py +10 -7
  179. omlish/specs/jsonschema/_marshal.py +1 -1
  180. omlish/specs/jsonschema/keywords/__init__.py +7 -0
  181. omlish/specs/jsonschema/keywords/_dataclasses.py +1644 -0
  182. omlish/specs/openapi/_marshal.py +31 -22
  183. omlish/sql/{tabledefs/alchemy.py → alchemy/tabledefs.py} +2 -2
  184. omlish/sql/queries/_marshal.py +2 -2
  185. omlish/sql/queries/rendering.py +1 -1
  186. omlish/sql/tabledefs/_marshal.py +1 -1
  187. omlish/subprocesses/base.py +4 -0
  188. omlish/subprocesses/editor.py +1 -1
  189. omlish/sync.py +155 -21
  190. omlish/term/alt.py +60 -0
  191. omlish/term/confirm.py +8 -8
  192. omlish/term/pager.py +235 -0
  193. omlish/term/terminfo.py +935 -0
  194. omlish/term/termstate.py +67 -0
  195. omlish/term/vt100/terminal.py +0 -3
  196. omlish/testing/pytest/plugins/asyncs/fixtures.py +4 -1
  197. omlish/testing/pytest/plugins/skips.py +2 -1
  198. omlish/testing/unittest/main.py +3 -3
  199. omlish/text/docwrap/__init__.py +3 -0
  200. omlish/text/docwrap/__main__.py +11 -0
  201. omlish/text/docwrap/api.py +83 -0
  202. omlish/text/docwrap/cli.py +86 -0
  203. omlish/text/docwrap/groups.py +84 -0
  204. omlish/text/docwrap/lists.py +167 -0
  205. omlish/text/docwrap/parts.py +146 -0
  206. omlish/text/docwrap/reflowing.py +106 -0
  207. omlish/text/docwrap/rendering.py +151 -0
  208. omlish/text/docwrap/utils.py +11 -0
  209. omlish/text/docwrap/wrapping.py +59 -0
  210. omlish/text/filecache.py +2 -2
  211. omlish/text/lorem.py +6 -0
  212. omlish/text/parts.py +2 -2
  213. omlish/text/textwrap.py +51 -0
  214. omlish/typedvalues/marshal.py +85 -59
  215. omlish/typedvalues/values.py +2 -1
  216. {omlish-0.0.0.dev447.dist-info → omlish-0.0.0.dev484.dist-info}/METADATA +29 -28
  217. {omlish-0.0.0.dev447.dist-info → omlish-0.0.0.dev484.dist-info}/RECORD +222 -171
  218. omlish/dataclasses/impl/generation/mangling.py +0 -18
  219. omlish/funcs/match.py +0 -227
  220. omlish/marshal/factories/match.py +0 -34
  221. omlish/marshal/factories/simple.py +0 -28
  222. /omlish/inject/impl/{providers2.py → providersmap.py} +0 -0
  223. {omlish-0.0.0.dev447.dist-info → omlish-0.0.0.dev484.dist-info}/WHEEL +0 -0
  224. {omlish-0.0.0.dev447.dist-info → omlish-0.0.0.dev484.dist-info}/entry_points.txt +0 -0
  225. {omlish-0.0.0.dev447.dist-info → omlish-0.0.0.dev484.dist-info}/licenses/LICENSE +0 -0
  226. {omlish-0.0.0.dev447.dist-info → omlish-0.0.0.dev484.dist-info}/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: omlish
3
- Version: 0.0.0.dev447
3
+ Version: 0.0.0.dev484
4
4
  Summary: omlish
5
5
  Author: wrmsr
6
6
  License-Expression: BSD-3-Clause
@@ -15,15 +15,15 @@ Requires-Python: >=3.13
15
15
  Description-Content-Type: text/markdown
16
16
  License-File: LICENSE
17
17
  Provides-Extra: all
18
- Requires-Dist: anyio~=4.10; extra == "all"
18
+ Requires-Dist: anyio~=4.11; extra == "all"
19
19
  Requires-Dist: sniffio~=1.3; extra == "all"
20
- Requires-Dist: greenlet~=3.2; extra == "all"
21
- Requires-Dist: trio~=0.31; extra == "all"
20
+ Requires-Dist: greenlet~=3.3; extra == "all"
21
+ Requires-Dist: trio~=0.32; extra == "all"
22
22
  Requires-Dist: trio-asyncio~=0.15; extra == "all"
23
23
  Requires-Dist: lz4~=4.4; extra == "all"
24
24
  Requires-Dist: python-snappy~=0.7; extra == "all"
25
25
  Requires-Dist: zstandard~=0.25; python_version < "3.14" and extra == "all"
26
- Requires-Dist: brotli~=1.1; extra == "all"
26
+ Requires-Dist: brotli~=1.2; extra == "all"
27
27
  Requires-Dist: asttokens~=3.0; extra == "all"
28
28
  Requires-Dist: executing~=2.2; extra == "all"
29
29
  Requires-Dist: psutil~=7.1; extra == "all"
@@ -33,38 +33,38 @@ Requires-Dist: pyyaml~=6.0; extra == "all"
33
33
  Requires-Dist: cbor2~=5.7; extra == "all"
34
34
  Requires-Dist: cloudpickle~=3.1; extra == "all"
35
35
  Requires-Dist: httpx[http2]~=0.28; extra == "all"
36
- Requires-Dist: wrapt~=1.17; extra == "all"
37
- Requires-Dist: cryptography~=45.0; extra == "all"
36
+ Requires-Dist: wrapt~=2.0; extra == "all"
37
+ Requires-Dist: cryptography~=46.0; extra == "all"
38
38
  Requires-Dist: sqlalchemy[asyncio]~=2.0; extra == "all"
39
39
  Requires-Dist: pg8000~=1.31; extra == "all"
40
40
  Requires-Dist: pymysql~=1.1; extra == "all"
41
- Requires-Dist: aiomysql~=0.2; extra == "all"
41
+ Requires-Dist: aiomysql~=0.3; extra == "all"
42
42
  Requires-Dist: aiosqlite~=0.21; extra == "all"
43
- Requires-Dist: asyncpg~=0.30; extra == "all"
44
- Requires-Dist: apsw~=3.50; extra == "all"
43
+ Requires-Dist: asyncpg~=0.31; extra == "all"
44
+ Requires-Dist: apsw~=3.51; extra == "all"
45
45
  Requires-Dist: sqlean.py~=3.50; extra == "all"
46
46
  Requires-Dist: duckdb~=1.4; extra == "all"
47
47
  Requires-Dist: markupsafe~=3.0; extra == "all"
48
48
  Requires-Dist: jinja2~=3.1; extra == "all"
49
- Requires-Dist: pytest~=8.4; extra == "all"
50
- Requires-Dist: anyio~=4.10; extra == "all"
49
+ Requires-Dist: pytest~=9.0; extra == "all"
50
+ Requires-Dist: anyio~=4.11; extra == "all"
51
51
  Requires-Dist: sniffio~=1.3; extra == "all"
52
52
  Requires-Dist: asttokens~=3.0; extra == "all"
53
53
  Requires-Dist: executing~=2.2; extra == "all"
54
54
  Requires-Dist: orjson~=3.11; extra == "all"
55
55
  Requires-Dist: pyyaml~=6.0; extra == "all"
56
- Requires-Dist: wrapt~=1.17; extra == "all"
56
+ Requires-Dist: wrapt~=2.0; extra == "all"
57
57
  Provides-Extra: async
58
- Requires-Dist: anyio~=4.10; extra == "async"
58
+ Requires-Dist: anyio~=4.11; extra == "async"
59
59
  Requires-Dist: sniffio~=1.3; extra == "async"
60
- Requires-Dist: greenlet~=3.2; extra == "async"
61
- Requires-Dist: trio~=0.31; extra == "async"
60
+ Requires-Dist: greenlet~=3.3; extra == "async"
61
+ Requires-Dist: trio~=0.32; extra == "async"
62
62
  Requires-Dist: trio-asyncio~=0.15; extra == "async"
63
63
  Provides-Extra: compress
64
64
  Requires-Dist: lz4~=4.4; extra == "compress"
65
65
  Requires-Dist: python-snappy~=0.7; extra == "compress"
66
66
  Requires-Dist: zstandard~=0.25; python_version < "3.14" and extra == "compress"
67
- Requires-Dist: brotli~=1.1; extra == "compress"
67
+ Requires-Dist: brotli~=1.2; extra == "compress"
68
68
  Provides-Extra: diag
69
69
  Requires-Dist: asttokens~=3.0; extra == "diag"
70
70
  Requires-Dist: executing~=2.2; extra == "diag"
@@ -78,33 +78,33 @@ Requires-Dist: cloudpickle~=3.1; extra == "formats"
78
78
  Provides-Extra: http
79
79
  Requires-Dist: httpx[http2]~=0.28; extra == "http"
80
80
  Provides-Extra: misc
81
- Requires-Dist: wrapt~=1.17; extra == "misc"
81
+ Requires-Dist: wrapt~=2.0; extra == "misc"
82
82
  Provides-Extra: secrets
83
- Requires-Dist: cryptography~=45.0; extra == "secrets"
83
+ Requires-Dist: cryptography~=46.0; extra == "secrets"
84
84
  Provides-Extra: sqlalchemy
85
85
  Requires-Dist: sqlalchemy[asyncio]~=2.0; extra == "sqlalchemy"
86
86
  Provides-Extra: sqldrivers
87
87
  Requires-Dist: pg8000~=1.31; extra == "sqldrivers"
88
88
  Requires-Dist: pymysql~=1.1; extra == "sqldrivers"
89
- Requires-Dist: aiomysql~=0.2; extra == "sqldrivers"
89
+ Requires-Dist: aiomysql~=0.3; extra == "sqldrivers"
90
90
  Requires-Dist: aiosqlite~=0.21; extra == "sqldrivers"
91
- Requires-Dist: asyncpg~=0.30; extra == "sqldrivers"
92
- Requires-Dist: apsw~=3.50; extra == "sqldrivers"
91
+ Requires-Dist: asyncpg~=0.31; extra == "sqldrivers"
92
+ Requires-Dist: apsw~=3.51; extra == "sqldrivers"
93
93
  Requires-Dist: sqlean.py~=3.50; extra == "sqldrivers"
94
94
  Requires-Dist: duckdb~=1.4; extra == "sqldrivers"
95
95
  Provides-Extra: templates
96
96
  Requires-Dist: markupsafe~=3.0; extra == "templates"
97
97
  Requires-Dist: jinja2~=3.1; extra == "templates"
98
98
  Provides-Extra: testing
99
- Requires-Dist: pytest~=8.4; extra == "testing"
99
+ Requires-Dist: pytest~=9.0; extra == "testing"
100
100
  Provides-Extra: plus
101
- Requires-Dist: anyio~=4.10; extra == "plus"
101
+ Requires-Dist: anyio~=4.11; extra == "plus"
102
102
  Requires-Dist: sniffio~=1.3; extra == "plus"
103
103
  Requires-Dist: asttokens~=3.0; extra == "plus"
104
104
  Requires-Dist: executing~=2.2; extra == "plus"
105
105
  Requires-Dist: orjson~=3.11; extra == "plus"
106
106
  Requires-Dist: pyyaml~=6.0; extra == "plus"
107
- Requires-Dist: wrapt~=1.17; extra == "plus"
107
+ Requires-Dist: wrapt~=2.0; extra == "plus"
108
108
  Dynamic: license-file
109
109
 
110
110
  # Overview
@@ -234,7 +234,8 @@ dependencies of any kind**.
234
234
  - **[queries](https://github.com/wrmsr/omlish/blob/master/omlish/sql/queries)** - A SQL query builder with a fluent
235
235
  interface.
236
236
  - **[alchemy](https://github.com/wrmsr/omlish/blob/master/omlish/sql/alchemy)** - SQLAlchemy utilities. The codebase
237
- is moving away from SQLAlchemy however in favor of its own internal SQL api.
237
+ has moved away from SQLAlchemy in favor of its own internal SQL api, but it will likely still remain as an optional
238
+ dep for the api adapter.
238
239
 
239
240
  - **[testing](https://github.com/wrmsr/omlish/blob/master/omlish/testing)** - Test - primarily pytest - helpers,
240
241
  including:
@@ -294,8 +295,8 @@ examples are:
294
295
  - **pytest** - What is used for all standard testing - as lite code has no dependencies of any kind its testing uses
295
296
  stdlib's [unittest](https://docs.python.org/3/library/unittest.html).
296
297
  - **wrapt** - For (optionally-enabled) injector circular proxies.
297
- - **sqlalchemy** - Parts of the codebase use SQLAlchemy for db stuff, but it is being migrated away from in favor of the
298
- internal api. It will however likely still remain as an optional dep for the api adapter.
298
+ - **sqlalchemy** - The codebase has migrated away from SQLAlchemy in favor of the internal api but it retains it as an
299
+ optional dep to support adapting the internal api to it.
299
300
 
300
301
  Additionally, some catchall dep categories include:
301
302