omlish 0.0.0.dev423__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 (464) hide show
  1. omlish/{.manifests.json → .omlish-manifests.json} +12 -0
  2. omlish/__about__.py +21 -18
  3. omlish/argparse/all.py +17 -9
  4. omlish/argparse/cli.py +16 -3
  5. omlish/argparse/utils.py +21 -0
  6. omlish/asyncs/all.py +0 -13
  7. omlish/asyncs/asyncio/rlock.py +110 -0
  8. omlish/asyncs/asyncio/subprocesses.py +2 -2
  9. omlish/asyncs/asyncio/sync.py +43 -0
  10. omlish/asyncs/asyncio/utils.py +2 -0
  11. omlish/asyncs/ioproxy/proxy.py +1 -1
  12. omlish/asyncs/sync.py +25 -0
  13. omlish/bootstrap/_marshal.py +1 -1
  14. omlish/bootstrap/diag.py +12 -21
  15. omlish/bootstrap/main.py +2 -5
  16. omlish/bootstrap/sys.py +27 -28
  17. omlish/c3.py +4 -1
  18. omlish/cexts/include/omlish/omlish.hh +1 -0
  19. omlish/collections/__init__.py +13 -1
  20. omlish/collections/attrregistry.py +210 -0
  21. omlish/collections/cache/impl.py +3 -2
  22. omlish/collections/identity.py +1 -0
  23. omlish/collections/mappings.py +28 -0
  24. omlish/collections/trie.py +5 -1
  25. omlish/collections/utils.py +77 -0
  26. omlish/concurrent/__init__.py +0 -11
  27. omlish/concurrent/all.py +18 -0
  28. omlish/concurrent/futures.py +25 -0
  29. omlish/concurrent/threadlets.py +1 -1
  30. omlish/configs/processing/flattening.py +1 -1
  31. omlish/configs/processing/merging.py +8 -6
  32. omlish/configs/types.py +1 -1
  33. omlish/daemons/__init__.py +70 -0
  34. omlish/daemons/daemon.py +2 -2
  35. omlish/daemons/launching.py +2 -2
  36. omlish/daemons/reparent.py +2 -3
  37. omlish/daemons/spawning.py +2 -3
  38. omlish/dataclasses/__init__.py +5 -5
  39. omlish/dataclasses/errors.py +1 -1
  40. omlish/dataclasses/impl/api/classes/decorator.py +3 -0
  41. omlish/dataclasses/impl/api/classes/make.py +4 -1
  42. omlish/dataclasses/impl/concerns/doc.py +1 -1
  43. omlish/dataclasses/impl/concerns/repr.py +15 -2
  44. omlish/dataclasses/impl/configs.py +97 -36
  45. omlish/dataclasses/impl/generation/compilation.py +21 -19
  46. omlish/dataclasses/impl/generation/globals.py +1 -0
  47. omlish/dataclasses/impl/generation/ops.py +1 -0
  48. omlish/dataclasses/impl/generation/processor.py +105 -24
  49. omlish/dataclasses/impl/processing/base.py +8 -0
  50. omlish/dataclasses/impl/processing/driving.py +8 -8
  51. omlish/dataclasses/specs.py +34 -2
  52. omlish/dataclasses/tools/as_.py +0 -12
  53. omlish/dataclasses/tools/modifiers.py +5 -0
  54. omlish/dataclasses/tools/static.py +1 -1
  55. omlish/diag/_pycharm/runhack.py +1 -1
  56. omlish/diag/{lslocks.py → cmds/lslocks.py} +6 -6
  57. omlish/diag/{lsof.py → cmds/lsof.py} +6 -6
  58. omlish/diag/{ps.py → cmds/ps.py} +6 -6
  59. omlish/diag/procfs.py +4 -4
  60. omlish/diag/pycharm.py +16 -2
  61. omlish/diag/pydevd.py +58 -40
  62. omlish/diag/replserver/console.py +3 -3
  63. omlish/diag/replserver/server.py +2 -2
  64. omlish/dispatch/__init__.py +18 -12
  65. omlish/dispatch/methods.py +50 -140
  66. omlish/dom/rendering.py +1 -1
  67. omlish/formats/dotenv.py +8 -8
  68. omlish/formats/json/stream/__init__.py +18 -3
  69. omlish/formats/json/stream/building.py +2 -2
  70. omlish/formats/json/stream/lexing.py +401 -67
  71. omlish/formats/json/stream/parsing.py +32 -10
  72. omlish/formats/json/stream/rendering.py +6 -6
  73. omlish/formats/json/stream/utils.py +132 -30
  74. omlish/formats/json5/literals.py +7 -4
  75. omlish/formats/json5/parsing.py +33 -79
  76. omlish/formats/json5/stream.py +77 -0
  77. omlish/formats/logfmt.py +8 -2
  78. omlish/funcs/genmachine.py +2 -2
  79. omlish/funcs/guard.py +225 -0
  80. omlish/graphs/dot/rendering.py +1 -1
  81. omlish/http/all.py +122 -53
  82. omlish/http/asgi.py +2 -2
  83. omlish/http/clients/__init__.py +0 -34
  84. omlish/http/clients/asyncs.py +153 -0
  85. omlish/http/clients/base.py +63 -122
  86. omlish/http/clients/coro/sync.py +171 -0
  87. omlish/http/clients/default.py +209 -30
  88. omlish/http/clients/executor.py +56 -0
  89. omlish/http/clients/httpx.py +78 -13
  90. omlish/http/clients/middleware.py +181 -0
  91. omlish/http/clients/sync.py +151 -0
  92. omlish/http/clients/syncasync.py +49 -0
  93. omlish/http/clients/urllib.py +8 -5
  94. omlish/http/coro/client/{client.py → connection.py} +43 -37
  95. omlish/http/coro/client/headers.py +5 -5
  96. omlish/http/coro/client/response.py +37 -38
  97. omlish/http/coro/client/status.py +4 -4
  98. omlish/http/coro/{client/io.py → io.py} +19 -2
  99. omlish/http/coro/server/fdio.py +10 -9
  100. omlish/http/coro/server/server.py +14 -41
  101. omlish/http/coro/server/sockets.py +7 -6
  102. omlish/http/flasky/__init__.py +40 -0
  103. omlish/http/flasky/_compat.py +2 -0
  104. omlish/http/flasky/api.py +82 -0
  105. omlish/http/flasky/app.py +203 -0
  106. omlish/http/flasky/cvs.py +59 -0
  107. omlish/http/flasky/requests.py +20 -0
  108. omlish/http/flasky/responses.py +23 -0
  109. omlish/http/flasky/routes.py +23 -0
  110. omlish/http/flasky/types.py +15 -0
  111. omlish/http/handlers.py +3 -2
  112. omlish/http/headers.py +69 -35
  113. omlish/http/sse.py +1 -1
  114. omlish/http/urls.py +67 -0
  115. omlish/inject/__init__.py +173 -126
  116. omlish/inject/_dataclasses.py +4986 -0
  117. omlish/inject/binder.py +10 -49
  118. omlish/inject/elements.py +27 -0
  119. omlish/inject/{utils.py → helpers/constfn.py} +3 -3
  120. omlish/inject/{tags.py → helpers/id.py} +2 -2
  121. omlish/inject/helpers/multis.py +143 -0
  122. omlish/inject/helpers/wrappers.py +54 -0
  123. omlish/inject/impl/elements.py +52 -22
  124. omlish/inject/impl/injector.py +76 -49
  125. omlish/inject/impl/inspect.py +11 -1
  126. omlish/inject/impl/maysync.py +43 -0
  127. omlish/inject/impl/multis.py +10 -7
  128. omlish/inject/impl/privates.py +8 -8
  129. omlish/inject/impl/providers.py +23 -34
  130. omlish/inject/impl/providersmap.py +43 -0
  131. omlish/inject/impl/proxy.py +0 -2
  132. omlish/inject/impl/scopes.py +19 -23
  133. omlish/inject/impl/sync.py +41 -0
  134. omlish/inject/injector.py +37 -8
  135. omlish/inject/inspect.py +35 -0
  136. omlish/inject/listeners.py +4 -4
  137. omlish/inject/managed.py +54 -18
  138. omlish/inject/maysync.py +27 -0
  139. omlish/inject/multis.py +8 -0
  140. omlish/inject/overrides.py +3 -3
  141. omlish/inject/privates.py +6 -0
  142. omlish/inject/providers.py +8 -1
  143. omlish/inject/scopes.py +40 -12
  144. omlish/inject/sync.py +49 -0
  145. omlish/io/buffers.py +119 -1
  146. omlish/io/readers.py +29 -0
  147. omlish/iterators/__init__.py +28 -20
  148. omlish/iterators/transforms.py +204 -0
  149. omlish/lang/__init__.py +240 -129
  150. omlish/lang/_asyncs.cc +186 -0
  151. omlish/lang/asyncs.py +67 -43
  152. omlish/lang/{attrs.py → attrstorage.py} +15 -15
  153. omlish/lang/cached/property.py +2 -2
  154. omlish/lang/casing.py +11 -0
  155. omlish/lang/classes/bindable.py +2 -3
  156. omlish/lang/classes/restrict.py +8 -0
  157. omlish/lang/classes/simple.py +26 -4
  158. omlish/lang/collections.py +1 -1
  159. omlish/lang/contextmanagers.py +59 -9
  160. omlish/lang/functions.py +31 -33
  161. omlish/lang/imports/_capture.cc +103 -0
  162. omlish/lang/imports/capture.py +902 -0
  163. omlish/lang/imports/lazy.py +0 -25
  164. omlish/lang/imports/proxy.py +559 -0
  165. omlish/lang/iterables.py +2 -2
  166. omlish/lang/lazyglobals.py +49 -14
  167. omlish/lang/maybes.py +2 -1
  168. omlish/lang/maysync.py +2 -2
  169. omlish/lang/params.py +17 -0
  170. omlish/lang/recursion.py +0 -1
  171. omlish/lang/resources.py +1 -1
  172. omlish/lang/sequences.py +124 -0
  173. omlish/lifecycles/contextmanagers.py +1 -2
  174. omlish/lifecycles/controller.py +1 -2
  175. omlish/lite/abstract.py +54 -24
  176. omlish/lite/asyncs.py +146 -0
  177. omlish/lite/attrops.py +415 -0
  178. omlish/lite/cached.py +57 -1
  179. omlish/lite/contextmanagers.py +4 -4
  180. omlish/lite/dataclasses.py +55 -0
  181. omlish/lite/inject.py +5 -4
  182. omlish/lite/marshal.py +1 -0
  183. omlish/lite/maybes.py +10 -2
  184. omlish/lite/maysync.py +22 -5
  185. omlish/lite/pycharm.py +1 -1
  186. omlish/lite/strings.py +0 -7
  187. omlish/lite/timing.py +6 -3
  188. omlish/lite/typing.py +6 -0
  189. omlish/logs/_amalg.py +8 -0
  190. omlish/logs/all.py +59 -31
  191. omlish/logs/base.py +204 -0
  192. omlish/logs/contexts.py +171 -0
  193. omlish/logs/formatters.py +13 -0
  194. omlish/logs/infos.py +377 -0
  195. omlish/logs/levels.py +97 -0
  196. omlish/logs/modules.py +13 -0
  197. omlish/logs/protocols.py +32 -0
  198. omlish/logs/standard.py +20 -15
  199. omlish/logs/std/configs.py +29 -0
  200. omlish/logs/{filters.py → std/filters.py} +1 -1
  201. omlish/logs/std/formatters.py +25 -0
  202. omlish/logs/std/handlers.py +19 -0
  203. omlish/logs/{json.py → std/json.py} +2 -2
  204. omlish/logs/std/loggers.py +48 -0
  205. omlish/logs/{proxy.py → std/proxy.py} +3 -3
  206. omlish/logs/std/records.py +671 -0
  207. omlish/logs/typed/bindings.py +108 -37
  208. omlish/logs/typed/types.py +17 -1
  209. omlish/logs/typed/values.py +2 -2
  210. omlish/logs/utils.py +60 -4
  211. omlish/logs/warnings.py +8 -0
  212. omlish/manifests/loading.py +8 -1
  213. omlish/marshal/__init__.py +54 -22
  214. omlish/marshal/_dataclasses.py +2774 -0
  215. omlish/marshal/base/configs.py +12 -0
  216. omlish/marshal/base/contexts.py +36 -21
  217. omlish/marshal/base/funcs.py +8 -11
  218. omlish/marshal/base/options.py +8 -0
  219. omlish/marshal/base/registries.py +146 -44
  220. omlish/marshal/base/types.py +40 -16
  221. omlish/marshal/composite/iterables.py +33 -20
  222. omlish/marshal/composite/literals.py +20 -18
  223. omlish/marshal/composite/mappings.py +36 -23
  224. omlish/marshal/composite/maybes.py +29 -19
  225. omlish/marshal/composite/newtypes.py +16 -16
  226. omlish/marshal/composite/optionals.py +14 -14
  227. omlish/marshal/composite/special.py +15 -15
  228. omlish/marshal/composite/unions/literals.py +93 -0
  229. omlish/marshal/composite/unions/primitives.py +103 -0
  230. omlish/marshal/factories/invalidate.py +18 -68
  231. omlish/marshal/factories/method.py +26 -0
  232. omlish/marshal/factories/moduleimport/factories.py +22 -65
  233. omlish/marshal/factories/multi.py +13 -25
  234. omlish/marshal/factories/recursive.py +42 -56
  235. omlish/marshal/factories/typecache.py +29 -74
  236. omlish/marshal/factories/typemap.py +42 -43
  237. omlish/marshal/objects/dataclasses.py +129 -106
  238. omlish/marshal/objects/marshal.py +18 -14
  239. omlish/marshal/objects/namedtuples.py +48 -42
  240. omlish/marshal/objects/unmarshal.py +19 -15
  241. omlish/marshal/polymorphism/marshal.py +9 -11
  242. omlish/marshal/polymorphism/metadata.py +16 -5
  243. omlish/marshal/polymorphism/standard.py +13 -1
  244. omlish/marshal/polymorphism/unions.py +15 -105
  245. omlish/marshal/polymorphism/unmarshal.py +9 -10
  246. omlish/marshal/singular/enums.py +14 -18
  247. omlish/marshal/standard.py +10 -6
  248. omlish/marshal/trivial/any.py +1 -1
  249. omlish/marshal/trivial/forbidden.py +21 -26
  250. omlish/math/fixed.py +2 -2
  251. omlish/metadata.py +23 -1
  252. omlish/os/atomics.py +2 -2
  253. omlish/os/forkhooks.py +4 -0
  254. omlish/os/journald.py +3 -3
  255. omlish/os/pidfiles/pinning.py +2 -2
  256. omlish/reflect/ops.py +9 -0
  257. omlish/reflect/types.py +44 -8
  258. omlish/secrets/marshal.py +1 -1
  259. omlish/secrets/secrets.py +6 -3
  260. omlish/sockets/addresses.py +1 -1
  261. omlish/sockets/server/handlers.py +2 -2
  262. omlish/sockets/server/server.py +4 -3
  263. omlish/sockets/server/ssl.py +2 -2
  264. omlish/specs/jmespath/__init__.py +12 -3
  265. omlish/specs/jmespath/_dataclasses.py +2893 -0
  266. omlish/specs/jmespath/ast.py +1 -1
  267. omlish/specs/jsonrpc/__init__.py +13 -0
  268. omlish/specs/jsonrpc/_marshal.py +32 -23
  269. omlish/specs/jsonrpc/conns.py +10 -7
  270. omlish/specs/jsonschema/_marshal.py +1 -1
  271. omlish/specs/jsonschema/keywords/__init__.py +7 -0
  272. omlish/specs/jsonschema/keywords/_dataclasses.py +1644 -0
  273. omlish/specs/openapi/_marshal.py +31 -22
  274. omlish/sql/__init__.py +15 -20
  275. omlish/sql/{tabledefs/alchemy.py → alchemy/tabledefs.py} +2 -2
  276. omlish/sql/queries/_marshal.py +3 -3
  277. omlish/sql/queries/params.py +1 -1
  278. omlish/sql/queries/rendering.py +1 -1
  279. omlish/sql/tabledefs/_marshal.py +1 -1
  280. omlish/subprocesses/all.py +135 -0
  281. omlish/subprocesses/base.py +8 -3
  282. omlish/subprocesses/editor.py +1 -1
  283. omlish/sync.py +181 -20
  284. omlish/term/alt.py +60 -0
  285. omlish/term/confirm.py +8 -8
  286. omlish/term/pager.py +235 -0
  287. omlish/term/terminfo.py +935 -0
  288. omlish/term/termstate.py +67 -0
  289. omlish/term/vt100/terminal.py +0 -3
  290. omlish/testing/pytest/plugins/asyncs/fixtures.py +4 -1
  291. omlish/testing/pytest/plugins/skips.py +2 -5
  292. omlish/testing/unittest/main.py +3 -3
  293. omlish/text/docwrap/__init__.py +3 -0
  294. omlish/text/docwrap/__main__.py +11 -0
  295. omlish/text/docwrap/api.py +83 -0
  296. omlish/text/docwrap/cli.py +86 -0
  297. omlish/text/docwrap/groups.py +84 -0
  298. omlish/text/docwrap/lists.py +167 -0
  299. omlish/text/docwrap/parts.py +146 -0
  300. omlish/text/docwrap/reflowing.py +106 -0
  301. omlish/text/docwrap/rendering.py +151 -0
  302. omlish/text/docwrap/utils.py +11 -0
  303. omlish/text/docwrap/wrapping.py +59 -0
  304. omlish/text/filecache.py +2 -2
  305. omlish/text/lorem.py +6 -0
  306. omlish/text/parts.py +2 -2
  307. omlish/text/textwrap.py +51 -0
  308. omlish/typedvalues/__init__.py +1 -1
  309. omlish/typedvalues/marshal.py +85 -59
  310. omlish/typedvalues/values.py +2 -1
  311. {omlish-0.0.0.dev423.dist-info → omlish-0.0.0.dev484.dist-info}/METADATA +36 -38
  312. {omlish-0.0.0.dev423.dist-info → omlish-0.0.0.dev484.dist-info}/RECORD +323 -385
  313. omlish/asyncs/bluelet/LICENSE +0 -6
  314. omlish/asyncs/bluelet/all.py +0 -67
  315. omlish/asyncs/bluelet/api.py +0 -23
  316. omlish/asyncs/bluelet/core.py +0 -178
  317. omlish/asyncs/bluelet/events.py +0 -79
  318. omlish/asyncs/bluelet/files.py +0 -80
  319. omlish/asyncs/bluelet/runner.py +0 -417
  320. omlish/asyncs/bluelet/sockets.py +0 -216
  321. omlish/asyncs/bridge.py +0 -359
  322. omlish/asyncs/utils.py +0 -18
  323. omlish/dataclasses/impl/generation/mangling.py +0 -18
  324. omlish/defs.py +0 -216
  325. omlish/dispatch/_dispatch2.py +0 -69
  326. omlish/dispatch/_dispatch3.py +0 -108
  327. omlish/dynamic.py +0 -219
  328. omlish/formats/json/Json.g4 +0 -77
  329. omlish/formats/json/_antlr/JsonLexer.py +0 -109
  330. omlish/formats/json/_antlr/JsonListener.py +0 -61
  331. omlish/formats/json/_antlr/JsonParser.py +0 -457
  332. omlish/formats/json/_antlr/JsonVisitor.py +0 -42
  333. omlish/formats/json5/Json5.g4 +0 -168
  334. omlish/formats/json5/_antlr/Json5Lexer.py +0 -354
  335. omlish/formats/json5/_antlr/Json5Listener.py +0 -79
  336. omlish/formats/json5/_antlr/Json5Parser.py +0 -617
  337. omlish/formats/json5/_antlr/Json5Visitor.py +0 -52
  338. omlish/funcs/match.py +0 -227
  339. omlish/io/trampoline.py +0 -289
  340. omlish/lang/imports/proxyinit.py +0 -665
  341. omlish/lite/logs.py +0 -4
  342. omlish/lite/reprs.py +0 -85
  343. omlish/logs/abc.py +0 -319
  344. omlish/logs/callers.py +0 -67
  345. omlish/logs/color.py +0 -27
  346. omlish/logs/configs.py +0 -29
  347. omlish/logs/handlers.py +0 -17
  348. omlish/logs/protocol.py +0 -218
  349. omlish/logs/timing.py +0 -58
  350. omlish/marshal/factories/match.py +0 -34
  351. omlish/marshal/factories/simple.py +0 -28
  352. omlish/specs/irc/messages/base.py +0 -49
  353. omlish/specs/irc/messages/formats.py +0 -92
  354. omlish/specs/irc/messages/messages.py +0 -774
  355. omlish/specs/irc/messages/parsing.py +0 -98
  356. omlish/specs/irc/numerics/formats.py +0 -97
  357. omlish/specs/irc/numerics/numerics.py +0 -865
  358. omlish/specs/irc/numerics/types.py +0 -59
  359. omlish/specs/irc/protocol/LICENSE +0 -11
  360. omlish/specs/irc/protocol/__init__.py +0 -61
  361. omlish/specs/irc/protocol/consts.py +0 -6
  362. omlish/specs/irc/protocol/errors.py +0 -30
  363. omlish/specs/irc/protocol/message.py +0 -21
  364. omlish/specs/irc/protocol/nuh.py +0 -55
  365. omlish/specs/irc/protocol/parsing.py +0 -158
  366. omlish/specs/irc/protocol/rendering.py +0 -153
  367. omlish/specs/irc/protocol/tags.py +0 -102
  368. omlish/specs/irc/protocol/utils.py +0 -30
  369. omlish/specs/proto/Protobuf3.g4 +0 -396
  370. omlish/specs/proto/__init__.py +0 -0
  371. omlish/specs/proto/_antlr/Protobuf3Lexer.py +0 -340
  372. omlish/specs/proto/_antlr/Protobuf3Listener.py +0 -448
  373. omlish/specs/proto/_antlr/Protobuf3Parser.py +0 -3909
  374. omlish/specs/proto/_antlr/Protobuf3Visitor.py +0 -257
  375. omlish/specs/proto/_antlr/__init__.py +0 -0
  376. omlish/specs/proto/nodes.py +0 -54
  377. omlish/specs/proto/parsing.py +0 -97
  378. omlish/sql/parsing/Minisql.g4 +0 -292
  379. omlish/sql/parsing/__init__.py +0 -0
  380. omlish/sql/parsing/_antlr/MinisqlLexer.py +0 -322
  381. omlish/sql/parsing/_antlr/MinisqlListener.py +0 -511
  382. omlish/sql/parsing/_antlr/MinisqlParser.py +0 -3763
  383. omlish/sql/parsing/_antlr/MinisqlVisitor.py +0 -292
  384. omlish/sql/parsing/_antlr/__init__.py +0 -0
  385. omlish/sql/parsing/parsing.py +0 -119
  386. omlish/text/antlr/__init__.py +0 -3
  387. omlish/text/antlr/_runtime/BufferedTokenStream.py +0 -305
  388. omlish/text/antlr/_runtime/CommonTokenFactory.py +0 -64
  389. omlish/text/antlr/_runtime/CommonTokenStream.py +0 -90
  390. omlish/text/antlr/_runtime/FileStream.py +0 -30
  391. omlish/text/antlr/_runtime/InputStream.py +0 -90
  392. omlish/text/antlr/_runtime/IntervalSet.py +0 -183
  393. omlish/text/antlr/_runtime/LICENSE.txt +0 -28
  394. omlish/text/antlr/_runtime/LL1Analyzer.py +0 -176
  395. omlish/text/antlr/_runtime/Lexer.py +0 -332
  396. omlish/text/antlr/_runtime/ListTokenSource.py +0 -147
  397. omlish/text/antlr/_runtime/Parser.py +0 -583
  398. omlish/text/antlr/_runtime/ParserInterpreter.py +0 -173
  399. omlish/text/antlr/_runtime/ParserRuleContext.py +0 -189
  400. omlish/text/antlr/_runtime/PredictionContext.py +0 -632
  401. omlish/text/antlr/_runtime/Recognizer.py +0 -150
  402. omlish/text/antlr/_runtime/RuleContext.py +0 -230
  403. omlish/text/antlr/_runtime/StdinStream.py +0 -14
  404. omlish/text/antlr/_runtime/Token.py +0 -158
  405. omlish/text/antlr/_runtime/TokenStreamRewriter.py +0 -258
  406. omlish/text/antlr/_runtime/Utils.py +0 -36
  407. omlish/text/antlr/_runtime/__init__.py +0 -2
  408. omlish/text/antlr/_runtime/_all.py +0 -24
  409. omlish/text/antlr/_runtime/_pygrun.py +0 -174
  410. omlish/text/antlr/_runtime/atn/ATN.py +0 -135
  411. omlish/text/antlr/_runtime/atn/ATNConfig.py +0 -162
  412. omlish/text/antlr/_runtime/atn/ATNConfigSet.py +0 -215
  413. omlish/text/antlr/_runtime/atn/ATNDeserializationOptions.py +0 -27
  414. omlish/text/antlr/_runtime/atn/ATNDeserializer.py +0 -449
  415. omlish/text/antlr/_runtime/atn/ATNSimulator.py +0 -50
  416. omlish/text/antlr/_runtime/atn/ATNState.py +0 -267
  417. omlish/text/antlr/_runtime/atn/ATNType.py +0 -20
  418. omlish/text/antlr/_runtime/atn/LexerATNSimulator.py +0 -573
  419. omlish/text/antlr/_runtime/atn/LexerAction.py +0 -301
  420. omlish/text/antlr/_runtime/atn/LexerActionExecutor.py +0 -146
  421. omlish/text/antlr/_runtime/atn/ParserATNSimulator.py +0 -1664
  422. omlish/text/antlr/_runtime/atn/PredictionMode.py +0 -502
  423. omlish/text/antlr/_runtime/atn/SemanticContext.py +0 -333
  424. omlish/text/antlr/_runtime/atn/Transition.py +0 -271
  425. omlish/text/antlr/_runtime/atn/__init__.py +0 -4
  426. omlish/text/antlr/_runtime/dfa/DFA.py +0 -136
  427. omlish/text/antlr/_runtime/dfa/DFASerializer.py +0 -76
  428. omlish/text/antlr/_runtime/dfa/DFAState.py +0 -129
  429. omlish/text/antlr/_runtime/dfa/__init__.py +0 -4
  430. omlish/text/antlr/_runtime/error/DiagnosticErrorListener.py +0 -111
  431. omlish/text/antlr/_runtime/error/ErrorListener.py +0 -75
  432. omlish/text/antlr/_runtime/error/ErrorStrategy.py +0 -712
  433. omlish/text/antlr/_runtime/error/Errors.py +0 -176
  434. omlish/text/antlr/_runtime/error/__init__.py +0 -4
  435. omlish/text/antlr/_runtime/tree/Chunk.py +0 -33
  436. omlish/text/antlr/_runtime/tree/ParseTreeMatch.py +0 -121
  437. omlish/text/antlr/_runtime/tree/ParseTreePattern.py +0 -75
  438. omlish/text/antlr/_runtime/tree/ParseTreePatternMatcher.py +0 -377
  439. omlish/text/antlr/_runtime/tree/RuleTagToken.py +0 -53
  440. omlish/text/antlr/_runtime/tree/TokenTagToken.py +0 -50
  441. omlish/text/antlr/_runtime/tree/Tree.py +0 -194
  442. omlish/text/antlr/_runtime/tree/Trees.py +0 -114
  443. omlish/text/antlr/_runtime/tree/__init__.py +0 -2
  444. omlish/text/antlr/_runtime/xpath/XPath.py +0 -278
  445. omlish/text/antlr/_runtime/xpath/XPathLexer.py +0 -98
  446. omlish/text/antlr/_runtime/xpath/__init__.py +0 -4
  447. omlish/text/antlr/delimit.py +0 -109
  448. omlish/text/antlr/dot.py +0 -41
  449. omlish/text/antlr/errors.py +0 -14
  450. omlish/text/antlr/input.py +0 -96
  451. omlish/text/antlr/parsing.py +0 -54
  452. omlish/text/antlr/runtime.py +0 -102
  453. omlish/text/antlr/utils.py +0 -38
  454. /omlish/{asyncs/bluelet → cexts}/__init__.py +0 -0
  455. /omlish/{formats/json/_antlr → diag/cmds}/__init__.py +0 -0
  456. /omlish/{formats/json5/_antlr → http/clients/coro}/__init__.py +0 -0
  457. /omlish/{specs/irc → inject/helpers}/__init__.py +0 -0
  458. /omlish/{specs/irc/messages → logs/std}/__init__.py +0 -0
  459. /omlish/logs/{noisy.py → std/noisy.py} +0 -0
  460. /omlish/{specs/irc/numerics → marshal/composite/unions}/__init__.py +0 -0
  461. {omlish-0.0.0.dev423.dist-info → omlish-0.0.0.dev484.dist-info}/WHEEL +0 -0
  462. {omlish-0.0.0.dev423.dist-info → omlish-0.0.0.dev484.dist-info}/entry_points.txt +0 -0
  463. {omlish-0.0.0.dev423.dist-info → omlish-0.0.0.dev484.dist-info}/licenses/LICENSE +0 -0
  464. {omlish-0.0.0.dev423.dist-info → omlish-0.0.0.dev484.dist-info}/top_level.txt +0 -0
omlish/logs/protocol.py DELETED
@@ -1,218 +0,0 @@
1
- # ruff: noqa: UP006 UP007 UP045
2
- # @omlish-lite
3
- import abc
4
- import logging
5
- import sys
6
- import typing as ta
7
-
8
- from .callers import LoggingCaller
9
- from .levels import LogLevel
10
-
11
-
12
- T = ta.TypeVar('T')
13
- T_co = ta.TypeVar('T_co', covariant=True)
14
-
15
-
16
- ##
17
-
18
-
19
- class AnyLogging(ta.Protocol[T_co]):
20
- def isEnabledFor(self, level: LogLevel) -> bool: ... # noqa
21
-
22
- def getEffectiveLevel(self) -> LogLevel: ... # noqa
23
-
24
- #
25
-
26
- def debug(self, msg: str, *args: ta.Any, **kwargs: ta.Any) -> T_co: ...
27
-
28
- def info(self, msg: str, *args: ta.Any, **kwargs: ta.Any) -> T_co: ...
29
-
30
- def warning(self, msg: str, *args: ta.Any, **kwargs: ta.Any) -> T_co: ...
31
-
32
- def error(self, msg: str, *args: ta.Any, **kwargs: ta.Any) -> T_co: ...
33
-
34
- def exception(self, msg: str, *args: ta.Any, exc_info: bool = True, **kwargs: ta.Any) -> T_co: ...
35
-
36
- def critical(self, msg: str, *args: ta.Any, **kwargs: ta.Any) -> T_co: ...
37
-
38
- def log(self, level: LogLevel, msg: str, *args: ta.Any, **kwargs: ta.Any) -> T_co: ...
39
-
40
-
41
- class Logging(AnyLogging[None], ta.Protocol):
42
- pass
43
-
44
-
45
- class AsyncLogging(AnyLogging[ta.Awaitable[None]], ta.Protocol):
46
- pass
47
-
48
-
49
- ##
50
-
51
-
52
- class AnyAbstractLogging(abc.ABC, ta.Generic[T]):
53
- @ta.final
54
- def isEnabledFor(self, level: LogLevel) -> bool: # noqa
55
- return self.is_enabled_for(level)
56
-
57
- def is_enabled_for(self, level: LogLevel) -> bool: # noqa
58
- return level >= self.getEffectiveLevel()
59
-
60
- @ta.final
61
- def getEffectiveLevel(self) -> LogLevel: # noqa
62
- return self.get_effective_level()
63
-
64
- @abc.abstractmethod
65
- def get_effective_level(self) -> LogLevel: # noqa
66
- raise NotImplementedError
67
-
68
- #
69
-
70
- def debug(self, msg: str, *args: ta.Any, _logging_stack_offset: int = 0, **kwargs: ta.Any) -> T:
71
- return self.log(logging.DEBUG, msg, *args, _logging_stack_offset=_logging_stack_offset + 1, **kwargs)
72
-
73
- def info(self, msg: str, *args: ta.Any, _logging_stack_offset: int = 0, **kwargs: ta.Any) -> T:
74
- return self.log(logging.INFO, msg, *args, _logging_stack_offset=_logging_stack_offset + 1, **kwargs)
75
-
76
- def warning(self, msg: str, *args: ta.Any, _logging_stack_offset: int = 0, **kwargs: ta.Any) -> T:
77
- return self.log(logging.WARNING, msg, *args, _logging_stack_offset=_logging_stack_offset + 1, **kwargs)
78
-
79
- def error(self, msg: str, *args: ta.Any, _logging_stack_offset: int = 0, **kwargs: ta.Any) -> T:
80
- return self.log(logging.ERROR, msg, *args, _logging_stack_offset=_logging_stack_offset + 1, **kwargs)
81
-
82
- def exception(self, msg: str, *args: ta.Any, exc_info: bool = True, _logging_stack_offset: int = 0, **kwargs: ta.Any) -> T: # noqa
83
- return self.error(msg, *args, exc_info=exc_info, _logging_stack_offset=_logging_stack_offset + 1, **kwargs) # noqa
84
-
85
- def critical(self, msg: str, *args: ta.Any, _logging_stack_offset: int = 0, **kwargs: ta.Any) -> T:
86
- return self.log(logging.CRITICAL, msg, *args, _logging_stack_offset=_logging_stack_offset + 1, **kwargs)
87
-
88
- @abc.abstractmethod
89
- def log(
90
- self,
91
- level: int,
92
- msg: str,
93
- *args: ta.Any,
94
- exc_info: ta.Any = None,
95
- extra: ta.Any = None,
96
- stack_info: bool = False,
97
- _logging_stack_offset: int = 0,
98
- ) -> T:
99
- raise NotImplementedError
100
-
101
-
102
- class AbstractLogging(AnyAbstractLogging[None], abc.ABC):
103
- def log(self, level: LogLevel, msg: str, *args: ta.Any, _logging_stack_offset: int = 0, **kwargs: ta.Any) -> None:
104
- if not isinstance(level, int):
105
- raise TypeError('Level must be an integer.')
106
- if self.is_enabled_for(level):
107
- self._log(level, msg, args, _logging_stack_offset=_logging_stack_offset + 1, **kwargs)
108
-
109
- @abc.abstractmethod
110
- def _log(
111
- self,
112
- level: int,
113
- msg: str,
114
- args: ta.Any,
115
- *,
116
- exc_info: ta.Any = None,
117
- extra: ta.Any = None,
118
- stack_info: bool = False,
119
- _logging_stack_offset: int = 0,
120
- ) -> None:
121
- raise NotImplementedError
122
-
123
-
124
- class AbstractAsyncLogging(AnyAbstractLogging[ta.Awaitable[None]], abc.ABC):
125
- async def log(self, level: LogLevel, msg: str, *args: ta.Any, _logging_stack_offset: int = 0, **kwargs: ta.Any) -> None: # noqa
126
- if not isinstance(level, int):
127
- raise TypeError('Level must be an integer.')
128
- if self.is_enabled_for(level):
129
- await self._log(level, msg, args, _logging_stack_offset=_logging_stack_offset + 1, **kwargs)
130
-
131
- @abc.abstractmethod
132
- def _log(
133
- self,
134
- level: int,
135
- msg: str,
136
- args: ta.Any,
137
- *,
138
- exc_info: ta.Any = None,
139
- extra: ta.Any = None,
140
- stack_info: bool = False,
141
- _logging_stack_offset: int = 0,
142
- ) -> ta.Awaitable[None]:
143
- raise NotImplementedError
144
-
145
-
146
- ##
147
-
148
-
149
- class AnyNopLogging(AnyAbstractLogging[T], abc.ABC):
150
- def get_effective_level(self) -> LogLevel:
151
- return logging.CRITICAL + 1
152
-
153
-
154
- class NopLogging(AnyNopLogging[None], AbstractLogging):
155
- def _log(self, *args: ta.Any, **kwargs: ta.Any) -> None:
156
- pass
157
-
158
-
159
- class NopAsyncLogging(AnyNopLogging[ta.Awaitable[None]], AbstractAsyncLogging):
160
- async def _log(self, *args: ta.Any, **kwargs: ta.Any) -> None:
161
- pass
162
-
163
-
164
- ##
165
-
166
-
167
- class StdlibLogging(AbstractLogging):
168
- def __init__(self, underlying: logging.Logger) -> None:
169
- super().__init__()
170
-
171
- if not isinstance(underlying, logging.Logger):
172
- raise TypeError(underlying)
173
-
174
- self._underlying = underlying
175
-
176
- #
177
-
178
- def is_enabled_for(self, level: int) -> bool: # noqa
179
- return self._underlying.isEnabledFor(level)
180
-
181
- def get_effective_level(self) -> int: # noqa
182
- return self._underlying.getEffectiveLevel()
183
-
184
- #
185
-
186
- def _log(
187
- self,
188
- level: int,
189
- msg: str,
190
- args: ta.Any,
191
- *,
192
- exc_info: ta.Any = None,
193
- extra: ta.Any = None,
194
- stack_info: bool = False,
195
- _logging_stack_offset: int = 0,
196
- ) -> None:
197
- caller = LoggingCaller.find(_logging_stack_offset, stack_info=stack_info)
198
-
199
- if exc_info:
200
- if isinstance(exc_info, BaseException):
201
- exc_info = (type(exc_info), exc_info, exc_info.__traceback__)
202
- elif not isinstance(exc_info, tuple):
203
- exc_info = sys.exc_info()
204
-
205
- record = self._underlying.makeRecord(
206
- name=self._underlying.name,
207
- level=level,
208
- fn=caller.filename,
209
- lno=caller.lineno,
210
- msg=msg,
211
- args=args,
212
- exc_info=exc_info,
213
- func=caller.func,
214
- extra=extra,
215
- sinfo=caller.sinfo,
216
- )
217
-
218
- self._underlying.handle(record)
omlish/logs/timing.py DELETED
@@ -1,58 +0,0 @@
1
- # ruff: noqa: UP006 UP007 UP045
2
- # @omlish-lite
3
- import logging
4
- import time
5
- import typing as ta
6
-
7
-
8
- ##
9
-
10
-
11
- class LogTimingContext:
12
- DEFAULT_LOG: ta.ClassVar[ta.Optional[logging.Logger]] = None
13
-
14
- class _NOT_SPECIFIED: # noqa
15
- def __new__(cls, *args, **kwargs): # noqa
16
- raise TypeError
17
-
18
- def __init__(
19
- self,
20
- description: str,
21
- *,
22
- log: ta.Union[logging.Logger, ta.Type[_NOT_SPECIFIED], None] = _NOT_SPECIFIED, # noqa
23
- level: int = logging.DEBUG,
24
- ) -> None:
25
- super().__init__()
26
-
27
- self._description = description
28
- if log is self._NOT_SPECIFIED:
29
- log = self.DEFAULT_LOG # noqa
30
- self._log: ta.Optional[logging.Logger] = log # type: ignore
31
- self._level = level
32
-
33
- def set_description(self, description: str) -> 'LogTimingContext':
34
- self._description = description
35
- return self
36
-
37
- _begin_time: float
38
- _end_time: float
39
-
40
- def __enter__(self) -> 'LogTimingContext':
41
- self._begin_time = time.time()
42
-
43
- if self._log is not None:
44
- self._log.log(self._level, f'Begin : {self._description}') # noqa
45
-
46
- return self
47
-
48
- def __exit__(self, exc_type, exc_val, exc_tb):
49
- self._end_time = time.time()
50
-
51
- if self._log is not None:
52
- self._log.log(
53
- self._level,
54
- f'End : {self._description} - {self._end_time - self._begin_time:0.2f} s elapsed',
55
- )
56
-
57
-
58
- log_timing_context = LogTimingContext
@@ -1,34 +0,0 @@
1
- from ... import lang
2
- from ... import reflect as rfl
3
- from ...funcs import match as mfs
4
- from ..base.contexts import MarshalContext
5
- from ..base.contexts import UnmarshalContext
6
- from ..base.types import Marshaler
7
- from ..base.types import MarshalerFactory
8
- from ..base.types import MarshalerMaker
9
- from ..base.types import Unmarshaler
10
- from ..base.types import UnmarshalerFactory
11
- from ..base.types import UnmarshalerMaker
12
-
13
-
14
- ##
15
-
16
-
17
- class MarshalerFactoryMatchClass(
18
- MarshalerFactory,
19
- mfs.MatchFnClass[[MarshalContext, rfl.Type], Marshaler],
20
- lang.Abstract,
21
- ):
22
- @property
23
- def make_marshaler(self) -> MarshalerMaker:
24
- return self # noqa
25
-
26
-
27
- class UnmarshalerFactoryMatchClass(
28
- UnmarshalerFactory,
29
- mfs.MatchFnClass[[UnmarshalContext, rfl.Type], Unmarshaler],
30
- lang.Abstract,
31
- ):
32
- @property
33
- def make_unmarshaler(self) -> UnmarshalerMaker:
34
- return self # noqa
@@ -1,28 +0,0 @@
1
- from ... import lang
2
- from ..base.types import MarshalerFactory
3
- from ..base.types import MarshalerMaker
4
- from ..base.types import UnmarshalerFactory
5
- from ..base.types import UnmarshalerMaker
6
-
7
-
8
- ##
9
-
10
-
11
- class SimpleMarshalerFactory(
12
- MarshalerFactory,
13
- MarshalerMaker,
14
- lang.Abstract,
15
- ):
16
- @property
17
- def make_marshaler(self) -> MarshalerMaker:
18
- return self # noqa
19
-
20
-
21
- class SimpleUnmarshalerFactory(
22
- UnmarshalerFactory,
23
- UnmarshalerMaker,
24
- lang.Abstract,
25
- ):
26
- @property
27
- def make_unmarshaler(self) -> UnmarshalerMaker:
28
- return self # noqa
@@ -1,49 +0,0 @@
1
- import typing as ta
2
-
3
- from .... import check
4
- from .... import dataclasses as dc
5
- from ....funcs import pairs as fps
6
- from ..numerics import numerics as nr
7
- from .formats import MessageFormat
8
- from .formats import MessageParamsUnpacker
9
-
10
-
11
- ##
12
-
13
-
14
- class Message(dc.Case):
15
- FORMAT: ta.ClassVar[MessageFormat]
16
- REPLIES: ta.ClassVar[ta.Collection[nr.NumericReply]] = ()
17
-
18
-
19
- ##
20
-
21
-
22
- def list_pair_params_unpacker(
23
- kwarg: str,
24
- key_param: str,
25
- value_param: str,
26
- ) -> MessageParamsUnpacker:
27
- def forward(params: ta.Mapping[str, str]) -> ta.Mapping[str, ta.Any]:
28
- out: dict = dict(params)
29
- ks = out.pop(key_param)
30
- vs = out.pop(value_param, None)
31
- if vs is not None:
32
- out[kwarg] = list(zip(ks, vs, strict=True))
33
- else:
34
- out[kwarg] = ks
35
- return out
36
-
37
- def backward(kwargs: ta.Mapping[str, ta.Any]) -> ta.Mapping[str, str]:
38
- out: dict = dict(kwargs)
39
- ts = out.pop(kwarg)
40
- is_ts = check.single({isinstance(e, tuple) for e in ts})
41
- if is_ts:
42
- ks, vs = zip(*ts)
43
- out[key_param] = ks
44
- out[value_param] = vs
45
- else:
46
- out[key_param] = ts
47
- return out
48
-
49
- return fps.of(forward, backward)
@@ -1,92 +0,0 @@
1
- import enum
2
- import typing as ta
3
-
4
- from .... import check
5
- from .... import dataclasses as dc
6
- from .... import lang
7
- from ....funcs import pairs as fps
8
-
9
-
10
- MessageParamsUnpacker: ta.TypeAlias = fps.FnPair[
11
- ta.Mapping[str, str], # params
12
- ta.Mapping[str, ta.Any], # kwargs
13
- ]
14
-
15
-
16
- ##
17
-
18
-
19
- class MessageFormat(dc.Frozen, final=True):
20
- name: str
21
-
22
- class Param(dc.Case):
23
- @classmethod
24
- def of(cls, obj: ta.Any) -> 'MessageFormat.Param':
25
- if isinstance(obj, MessageFormat.Param):
26
- return obj
27
-
28
- elif isinstance(obj, str):
29
- s = check.non_empty_str(obj)
30
-
31
- optional = False
32
- if s.startswith('?'):
33
- optional = True
34
- s = s[1:]
35
-
36
- arity = MessageFormat.KwargParam.Arity.SINGLE
37
- if s.startswith('*'):
38
- arity = MessageFormat.KwargParam.Arity.VARIADIC
39
- s = s[1:]
40
-
41
- elif s.startswith(','):
42
- arity = MessageFormat.KwargParam.Arity.COMMA_LIST
43
- s = s[1:]
44
-
45
- return MessageFormat.KwargParam(
46
- s,
47
- optional=optional,
48
- arity=arity,
49
- )
50
-
51
- else:
52
- raise TypeError(obj)
53
-
54
- class KwargParam(Param):
55
- name: str = dc.xfield(validate=lang.is_ident)
56
-
57
- optional: bool = False
58
-
59
- class Arity(enum.Enum):
60
- SINGLE = enum.auto() # <foo>
61
- VARIADIC = enum.auto() # <foo>{ <foo>}
62
- COMMA_LIST = enum.auto() # <foo>{,<foo>}
63
-
64
- arity: Arity = Arity.SINGLE
65
-
66
- class LiteralParam(Param):
67
- text: str
68
-
69
- params: ta.Sequence[Param]
70
-
71
- _: dc.KW_ONLY
72
-
73
- unpack_params: MessageParamsUnpacker | None = None
74
-
75
- @dc.init
76
- def _validate_params(self) -> None:
77
- kws = [p for p in self.params if isinstance(p, MessageFormat.KwargParam)]
78
- check.unique(p.name for p in kws)
79
- check.state(all(p.arity is not MessageFormat.KwargParam.Arity.VARIADIC for p in kws[:-1]))
80
-
81
- @classmethod
82
- def of(
83
- cls,
84
- name: str,
85
- *params: ta.Any,
86
- **kwargs: ta.Any,
87
- ) -> 'MessageFormat':
88
- return cls(
89
- name,
90
- [MessageFormat.Param.of(p) for p in params],
91
- **kwargs,
92
- )