omlish 0.0.0.dev381__py3-none-any.whl → 0.0.0.dev382__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.
omlish/__about__.py CHANGED
@@ -1,5 +1,5 @@
1
- __version__ = '0.0.0.dev381'
2
- __revision__ = 'f73e0ce8b22e02761d8deafb17e4cead2919af33'
1
+ __version__ = '0.0.0.dev382'
2
+ __revision__ = 'a0b130f7b364be52667bb3c7e3fd94132933b066'
3
3
 
4
4
 
5
5
  #
@@ -9,14 +9,15 @@ class ProjectBase:
9
9
  name: str | None = None
10
10
  authors = [{'name': 'wrmsr'}]
11
11
  urls = {'source': 'https://github.com/wrmsr/omlish'}
12
- license = {'text': 'BSD-3-Clause'}
12
+ license = 'BSD-3-Clause'
13
+ readme = 'README.md'
13
14
  requires_python = '>=3.13'
14
15
 
15
16
  version = __version__
16
17
 
17
18
  classifiers = [
18
- 'License :: OSI Approved :: BSD License',
19
19
  'Development Status :: 2 - Pre-Alpha',
20
+
20
21
  'Intended Audience :: Developers',
21
22
 
22
23
  'Operating System :: OS Independent',
omlish/manifests/load.py CHANGED
@@ -130,6 +130,7 @@ class ManifestLoader:
130
130
  spec is not None and
131
131
  isinstance(spec.loader, importlib.machinery.SourceFileLoader) and
132
132
  spec.origin is not None and
133
+ len(spec.submodule_search_locations or []) == 1 and
133
134
  os.path.basename(spec.origin) == '__init__.py' and
134
135
  os.path.isfile(spec.origin)
135
136
  ):
@@ -0,0 +1,300 @@
1
+ Metadata-Version: 2.4
2
+ Name: omlish
3
+ Version: 0.0.0.dev382
4
+ Summary: omlish
5
+ Author: wrmsr
6
+ License-Expression: BSD-3-Clause
7
+ Project-URL: source, https://github.com/wrmsr/omlish
8
+ Classifier: Development Status :: 2 - Pre-Alpha
9
+ Classifier: Intended Audience :: Developers
10
+ Classifier: Operating System :: OS Independent
11
+ Classifier: Operating System :: POSIX
12
+ Requires-Python: >=3.13
13
+ Description-Content-Type: text/markdown
14
+ License-File: LICENSE
15
+ Provides-Extra: all
16
+ Requires-Dist: anyio~=4.10; extra == "all"
17
+ Requires-Dist: sniffio~=1.3; extra == "all"
18
+ Requires-Dist: greenlet~=3.2; extra == "all"
19
+ Requires-Dist: trio~=0.30; extra == "all"
20
+ Requires-Dist: trio-asyncio~=0.15; extra == "all"
21
+ Requires-Dist: lz4~=4.4; extra == "all"
22
+ Requires-Dist: python-snappy~=0.7; extra == "all"
23
+ Requires-Dist: zstandard~=0.23; extra == "all"
24
+ Requires-Dist: brotli~=1.1; extra == "all"
25
+ Requires-Dist: asttokens~=3.0; extra == "all"
26
+ Requires-Dist: executing~=2.2; extra == "all"
27
+ Requires-Dist: psutil~=7.0; extra == "all"
28
+ Requires-Dist: orjson~=3.11; extra == "all"
29
+ Requires-Dist: ujson~=5.10; extra == "all"
30
+ Requires-Dist: pyyaml~=6.0; extra == "all"
31
+ Requires-Dist: cbor2~=5.6; extra == "all"
32
+ Requires-Dist: cloudpickle~=3.1; extra == "all"
33
+ Requires-Dist: httpx[http2]~=0.28; extra == "all"
34
+ Requires-Dist: wrapt~=1.17; extra == "all"
35
+ Requires-Dist: cryptography~=45.0; extra == "all"
36
+ Requires-Dist: sqlalchemy[asyncio]~=2.0; extra == "all"
37
+ Requires-Dist: pg8000~=1.31; extra == "all"
38
+ Requires-Dist: pymysql~=1.1; extra == "all"
39
+ Requires-Dist: aiomysql~=0.2; extra == "all"
40
+ Requires-Dist: aiosqlite~=0.21; extra == "all"
41
+ Requires-Dist: asyncpg~=0.30; extra == "all"
42
+ Requires-Dist: apsw~=3.50; extra == "all"
43
+ Requires-Dist: sqlean.py~=3.49; extra == "all"
44
+ Requires-Dist: duckdb~=1.3; extra == "all"
45
+ Requires-Dist: markupsafe~=3.0; extra == "all"
46
+ Requires-Dist: jinja2~=3.1; extra == "all"
47
+ Requires-Dist: pytest~=8.4; extra == "all"
48
+ Requires-Dist: anyio~=4.10; extra == "all"
49
+ Requires-Dist: sniffio~=1.3; extra == "all"
50
+ Requires-Dist: asttokens~=3.0; extra == "all"
51
+ Requires-Dist: executing~=2.2; extra == "all"
52
+ Requires-Dist: orjson~=3.11; extra == "all"
53
+ Requires-Dist: pyyaml~=6.0; extra == "all"
54
+ Requires-Dist: wrapt~=1.17; extra == "all"
55
+ Provides-Extra: async
56
+ Requires-Dist: anyio~=4.10; extra == "async"
57
+ Requires-Dist: sniffio~=1.3; extra == "async"
58
+ Requires-Dist: greenlet~=3.2; extra == "async"
59
+ Requires-Dist: trio~=0.30; extra == "async"
60
+ Requires-Dist: trio-asyncio~=0.15; extra == "async"
61
+ Provides-Extra: compress
62
+ Requires-Dist: lz4~=4.4; extra == "compress"
63
+ Requires-Dist: python-snappy~=0.7; extra == "compress"
64
+ Requires-Dist: zstandard~=0.23; extra == "compress"
65
+ Requires-Dist: brotli~=1.1; extra == "compress"
66
+ Provides-Extra: diag
67
+ Requires-Dist: asttokens~=3.0; extra == "diag"
68
+ Requires-Dist: executing~=2.2; extra == "diag"
69
+ Requires-Dist: psutil~=7.0; extra == "diag"
70
+ Provides-Extra: formats
71
+ Requires-Dist: orjson~=3.11; extra == "formats"
72
+ Requires-Dist: ujson~=5.10; extra == "formats"
73
+ Requires-Dist: pyyaml~=6.0; extra == "formats"
74
+ Requires-Dist: cbor2~=5.6; extra == "formats"
75
+ Requires-Dist: cloudpickle~=3.1; extra == "formats"
76
+ Provides-Extra: http
77
+ Requires-Dist: httpx[http2]~=0.28; extra == "http"
78
+ Provides-Extra: misc
79
+ Requires-Dist: wrapt~=1.17; extra == "misc"
80
+ Provides-Extra: secrets
81
+ Requires-Dist: cryptography~=45.0; extra == "secrets"
82
+ Provides-Extra: sqlalchemy
83
+ Requires-Dist: sqlalchemy[asyncio]~=2.0; extra == "sqlalchemy"
84
+ Provides-Extra: sqldrivers
85
+ Requires-Dist: pg8000~=1.31; extra == "sqldrivers"
86
+ Requires-Dist: pymysql~=1.1; extra == "sqldrivers"
87
+ Requires-Dist: aiomysql~=0.2; extra == "sqldrivers"
88
+ Requires-Dist: aiosqlite~=0.21; extra == "sqldrivers"
89
+ Requires-Dist: asyncpg~=0.30; extra == "sqldrivers"
90
+ Requires-Dist: apsw~=3.50; extra == "sqldrivers"
91
+ Requires-Dist: sqlean.py~=3.49; extra == "sqldrivers"
92
+ Requires-Dist: duckdb~=1.3; extra == "sqldrivers"
93
+ Provides-Extra: templates
94
+ Requires-Dist: markupsafe~=3.0; extra == "templates"
95
+ Requires-Dist: jinja2~=3.1; extra == "templates"
96
+ Provides-Extra: testing
97
+ Requires-Dist: pytest~=8.4; extra == "testing"
98
+ Provides-Extra: plus
99
+ Requires-Dist: anyio~=4.10; extra == "plus"
100
+ Requires-Dist: sniffio~=1.3; extra == "plus"
101
+ Requires-Dist: asttokens~=3.0; extra == "plus"
102
+ Requires-Dist: executing~=2.2; extra == "plus"
103
+ Requires-Dist: orjson~=3.11; extra == "plus"
104
+ Requires-Dist: pyyaml~=6.0; extra == "plus"
105
+ Requires-Dist: wrapt~=1.17; extra == "plus"
106
+ Dynamic: license-file
107
+
108
+ # Overview
109
+
110
+ Core utilities and foundational code. It's relatively large but completely self-contained.
111
+
112
+ # Notable packages
113
+
114
+ - **[lang](https://github.com/wrmsr/omlish/blob/master/omlish/lang)** - The standard library of this standard library.
115
+ Usually imported as a whole (`from omlish import lang`), it contains an array of general purpose utilities used
116
+ practically everywhere. It is kept relatively lightweight: its heaviest import is stdlib dataclasses and its
117
+ transitives. Some of its contents include:
118
+
119
+ - **[cached](https://github.com/wrmsr/omlish/blob/master/omlish/lang/cached)** - The standard `cached_function` /
120
+ `cached_property` tools, which are more capable than
121
+ [`functools.lru_cache`](https://docs.python.org/3/library/functools.html#functools.lru_cache).
122
+ - **[imports](https://github.com/wrmsr/omlish/blob/master/omlish/lang/imports.py)** - Import tools like `proxy_import`
123
+ for late-loaded imports and `proxy_init` for late-loaded module globals.
124
+ - **[classes](https://github.com/wrmsr/omlish/blob/master/omlish/lang/classes)** - Class tools and bases, such as
125
+ `Abstract` (which checks at subclass definition not instantiation), `Sealed` / `PackageSealed`, and `Final`.
126
+ - **[maybes](https://github.com/wrmsr/omlish/blob/master/omlish/lite/maybes.py)** - A simple, nestable formalization
127
+ of the presence or absence of an object, as in [many](https://en.cppreference.com/w/cpp/utility/optional)
128
+ [other](https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html)
129
+ [languages](https://doc.rust-lang.org/std/option/).
130
+
131
+ - **[bootstrap](https://github.com/wrmsr/omlish/blob/master/omlish/bootstrap)** - A centralized, configurable,
132
+ all-in-one collection of various process-initialization minutiae like resource limiting, profiling, remote debugging,
133
+ log configuration, environment variables, et cetera. Usable as a context manager or via its
134
+ [cli](https://github.com/wrmsr/omlish/blob/master/omlish/bootstrap/main.py).
135
+
136
+ - **[collections](https://github.com/wrmsr/omlish/blob/master/omlish/collections)** - A handful of collection utilities
137
+ and simple implementations, including:
138
+
139
+ - **[cache](https://github.com/wrmsr/omlish/blob/master/omlish/collections/cache)** - A configurable LRU / LFU cache
140
+ with options like ttl and max size / weight.
141
+ - **[hasheq](https://github.com/wrmsr/omlish/blob/master/omlish/collections/hasheq.py)** - A dict taking an external
142
+ `__hash__` / `__eq__` implementation.
143
+ - **[identity](https://github.com/wrmsr/omlish/blob/master/omlish/collections/identity.py)** - Identity-keyed
144
+ collections.
145
+ - **[sorted](https://github.com/wrmsr/omlish/blob/master/omlish/collections/sorted)** - Interfaces for value-sorted
146
+ collections and key-sorted mappings, and a simple but - correct skiplist-backed implementation.
147
+ - **[persistent](https://github.com/wrmsr/omlish/blob/master/omlish/collections/persistent)** - Interfaces for
148
+ [persistent](https://en.wikipedia.org/wiki/Persistent_data_structure) maps, and a simple but correct treap-backed
149
+ implementation.
150
+
151
+ - **[dataclasses](https://github.com/wrmsr/omlish/blob/master/omlish/dataclasses)** - A fully-compatible
152
+ reimplementation of stdlib [dataclasses](https://docs.python.org/3/library/dataclasses.html) with numerous
153
+ enhancements and additional features. The
154
+ [full stdlib test suite](https://github.com/wrmsr/omlish/blob/master/omlish/dataclasses/tests/cpython) is run against
155
+ it ensuring compatibility - they *are* dataclasses. Current enhancements include:
156
+
157
+ - Simple field coercion and validation.
158
+ - Any number of `@dc.init` or `@dc.validate` methods, not just a central `__post_init__`.
159
+ - Optional generic type parameter substitution in generated `__init__` methods, enabling accurate reflection.
160
+ - An optional [metaclass](https://github.com/wrmsr/omlish/blob/master/omlish/dataclasses/metaclass) which removes the
161
+ need for re-decorating subclasses (with support for inheritance of dataclass parameters like `frozen`), and some
162
+ basic [base classes](https://github.com/wrmsr/omlish/blob/master/omlish/dataclasses/metaclass/bases.py).
163
+ - (Nearly finished) support for ahead-of-time / build-time code generation, greatly reducing import times.
164
+
165
+ The stdlib-equivalent api is exported in such a way as to appear to be direct aliases for the stdlib api itself,
166
+ simplifying tool support.
167
+
168
+ - **[dispatch](https://github.com/wrmsr/omlish/blob/master/omlish/dispatch)** - A beefed-up version of
169
+ [functools.singledispatch](https://docs.python.org/3/library/functools.html#functools.singledispatch), most notably
170
+ supporting MRO-honoring method impl dispatch.
171
+
172
+ - **[formats](https://github.com/wrmsr/omlish/blob/master/omlish/formats)** - Tools for various data formats, including:
173
+
174
+ - **[json](https://github.com/wrmsr/omlish/blob/master/omlish/formats/json)** - Tools for json, including abstraction
175
+ over various backends and a self-contained streaming / incremental parser.
176
+ - **[json5](https://github.com/wrmsr/omlish/blob/master/omlish/formats/json5)** - A self-contained and tested
177
+ [Json5](https://json5.org/) parser.
178
+ - **[toml](https://github.com/wrmsr/omlish/blob/master/omlish/formats/toml)** - Toml tools, including a
179
+ [lite](#lite-code) version of the stdlib parser (for use in older pythons).
180
+
181
+ - **[http](https://github.com/wrmsr/omlish/blob/master/omlish/http)** - HTTP code, including:
182
+
183
+ - **[clients](https://github.com/wrmsr/omlish/blob/master/omlish/http/clients)** - An abstraction over HTTP clients,
184
+ with urllib and httpx implementations.
185
+ - **[coro](https://github.com/wrmsr/omlish/blob/master/omlish/http/coro)** - Coroutine /
186
+ [sans-io](https://sans-io.readthedocs.io/) style reformulation of some stdlib http machinery - namely `http.server`
187
+ (and soon `http.client`). This style of code can run the same in sync, async, or
188
+ [any](https://docs.python.org/3/library/selectors.html)
189
+ [other](https://github.com/wrmsr/omlish/blob/master/omlish/asyncs/bluelet) context.
190
+
191
+ - **[inject](https://github.com/wrmsr/omlish/blob/master/omlish/inject)** - A
192
+ [guice](https://github.com/google/guice)-style dependency injector.
193
+
194
+ - **[io](https://github.com/wrmsr/omlish/blob/master/omlish/io)** - IO tools, including:
195
+
196
+ - **[compress](https://github.com/wrmsr/omlish/blob/master/omlish/io/compress)** - Abstraction over various
197
+ compression schemes, with particular attention to incremental operation. For example it includes
198
+ [an incremental reformulation of stdlib's gzip](https://github.com/wrmsr/omlish/blob/master/omlish/io/compress/gzip.py).
199
+ - **[coro](https://github.com/wrmsr/omlish/blob/master/omlish/io/coro)** - Utilities for coroutine / sans-io style
200
+ code.
201
+ - **[fdio](https://github.com/wrmsr/omlish/blob/master/omlish/io/fdio)** - An implementation of classic
202
+ [selector](https://docs.python.org/3/library/selectors.html)-style IO dispatch, akin to the deprecated
203
+ [asyncore](https://docs.python.org/3.11/library/asyncore.html). While more modern asyncio style code is generally
204
+ preferred, it nearly always involves
205
+ [background threads](https://github.com/python/cpython/blob/95d9dea1c4ed1b1de80074b74301cee0b38d5541/Lib/asyncio/unix_events.py#L1349)
206
+ making it [unsuitable for forking processes](https://rachelbythebay.com/w/2011/06/07/forked/) like
207
+ [process supervisors](https://github.com/wrmsr/omlish/blob/master/ominfra/supervisor).
208
+
209
+ - **[jmespath](https://github.com/wrmsr/omlish/blob/master/omlish/specs/jmespath)** - A vendoring of
210
+ [jmespath community edition](https://github.com/jmespath-community/python-jmespath), modernized and adapted to this
211
+ codebase.
212
+
213
+ - **[marshal](https://github.com/wrmsr/omlish/blob/master/omlish/marshal)** - A
214
+ [jackson](https://github.com/FasterXML/jackson)-style serde system.
215
+
216
+ - **[manifests](https://github.com/wrmsr/omlish/blob/master/omlish/manifests)** - A system for sharing lightweight
217
+ metadata within / across codebases.
218
+
219
+ - **[reflect](https://github.com/wrmsr/omlish/blob/master/omlish/reflect)** - Reflection utilities, including primarily
220
+ a formalization of stdlib type annotations for use at runtime, decoupled from stdlib impl detail. Keeping this working
221
+ is notoriously difficult across python versions (one of the primary reasons for only supporting 3.13+).
222
+
223
+ - **[sql](https://github.com/wrmsr/omlish/blob/master/omlish/sql)** - A collection of SQL utilities, including:
224
+
225
+ - **[alchemy](https://github.com/wrmsr/omlish/blob/master/omlish/sql/alchemy)** - SQLAlchemy utilities. The codebase
226
+ is moving away from SQLAlchemy however in favor of its own internal SQL api.
227
+ - **[api](https://github.com/wrmsr/omlish/blob/master/omlish/sql/api)** - An abstracted api for SQL interaction, with
228
+ support for dbapi compatible drivers (and a SQLAlchemy adapter).
229
+ - **[queries](https://github.com/wrmsr/omlish/blob/master/omlish/sql/queries)** - A SQL query builder with a fluent
230
+ interface.
231
+
232
+ - **[testing](https://github.com/wrmsr/omlish/blob/master/omlish/testing)** - Test - primarily pytest - helpers,
233
+ including:
234
+
235
+ - **['harness'](https://github.com/wrmsr/omlish/blob/master/omlish/testing/pytest/inject/harness.py)** - An all-in-one
236
+ fixture marrying it to the codebase's dependency injector.
237
+ - **[plugins/async](https://github.com/wrmsr/omlish/blob/master/omlish/testing/pytest/plugins/asyncs)** - An in-house
238
+ async-backend abstraction plugin, capable of handling all of asyncio / trio / trio-asyncio /
239
+ *any-future-event-loop-impl* without having multiple fighting plugins (*[I know, I know](https://xkcd.com/927/)*).
240
+ - **[plugins](https://github.com/wrmsr/omlish/blob/master/omlish/testing/pytest/plugins)** - Various other plugins.
241
+
242
+ - **[lite](https://github.com/wrmsr/omlish/blob/master/omlish/lite)** - The standard library of 'lite' code. This is the
243
+ only package beneath `lang`, and parts of it are re-exported by it for deduplication. On top of miscellaneous
244
+ utilities it contains a handful of independent, self-contained, significantly simplified 'lite' equivalents of some
245
+ major core packages:
246
+
247
+ - **[lite/inject.py](https://github.com/wrmsr/omlish/blob/master/omlish/lite/inject.py)** - The lite injector, which
248
+ is more conservative with features and reflection than the core injector. The codebase's
249
+ [MiniGuice](https://github.com/google/guice/commit/70248eafa90cd70a68b293763e53f6aec656e73c).
250
+ - **[lite/marshal.py](https://github.com/wrmsr/omlish/blob/master/omlish/lite/marshal.py)** - The lite marshalling
251
+ system, which is a classic canned setup of simple type-specific 2-method classes and limited generic handling.
252
+
253
+ # Lite code
254
+
255
+ A subset of this codebase is written in a 'lite' style (non-'lite' code is referred to as *standard* code). While
256
+ standard code is written for python 3.13+, 'lite' code is written for 3.8+, and is written in a style conducive to
257
+ [amalgamation](https://github.com/wrmsr/omlish/blob/master/omdev#amalgamation) in which multiple python source files are
258
+ stitched together into one single self-contained python script.
259
+
260
+ Code written in this style has notable differences from standard code, including (but not limited to):
261
+
262
+ - No name mangling is done in amalgamation, which means (among other things) that code must be written expecting to be
263
+ all dumped into the same giant namespace. Where a standard class might be
264
+ [`omlish.inject.keys.Key`](https://github.com/wrmsr/omlish/blob/master/omlish/inject/keys.py), a lite equivalent might
265
+ be [`omlish.lite.inject.InjectorKey`](https://github.com/wrmsr/omlish/blob/master/omlish/lite/inject.py).
266
+ - All internal imports `import` each individual item out of modules rather than importing the modules and referencing
267
+ their contents. Where standard code would `from .. import x; x.y`, lite code would `from ..x import y; y`. As a result
268
+ there are frequently 'api' non-instantiated namespace classes serving the purpose of modules - just handy bags of
269
+ stuff with shortened names.
270
+ - As lite code is tested in 3.8+ but core code requires 3.13+, packages containing lite code can't import anything
271
+ standard in their (and their ancestors') `__init__.py`'s. Furthermore, `__init__.py` files are omitted outright in
272
+ amalgamation, so they effectively must be empty in any package containing any lite code. As a result there are
273
+ frequently [`all.py`](https://github.com/wrmsr/omlish/blob/master/omlish/configs/all.py) files in mixed-lite packages
274
+ which serve the purpose of `__init__.py` for standard usage - where importing standard packages from standard code
275
+ would be done via `from .. import lang`, importing mixed-lite packages from standard code would be done via
276
+ `from ..configs import all as cfgs`.
277
+
278
+ # Dependencies
279
+
280
+ This library has no required dependencies of any kind, but there are numerous optional integrations - see
281
+ [`__about__.py`](https://github.com/wrmsr/omlish/blob/master/omlish/__about__.py) for a full list, but some specific
282
+ examples are:
283
+
284
+ - **anyio** - While lite code must use only asyncio, non-trivial async standard code prefers to be written to anyio.
285
+ - **pytest** - What is used for all standard testing - as lite code has no dependencies of any kind its testing uses
286
+ stdlib's [unittest](https://docs.python.org/3/library/unittest.html).
287
+ - **asttokens / executing** - For getting runtime source representations of function call arguments, an optional
288
+ capability of [check](https://github.com/wrmsr/omlish/blob/master/omlish/check.py).
289
+ - **wrapt** - For (optionally-enabled) injector circular proxies.
290
+ - **greenlet** - For some gnarly stuff like the
291
+ [sync<->async bridge](https://github.com/wrmsr/omlish/blob/master/omlish/asyncs/bridge.py) and the
292
+ [io trampoline](https://github.com/wrmsr/omlish/blob/master/omlish/io/trampoline.py).
293
+ - **sqlalchemy** - Parts of the codebase use SQLAlchemy for db stuff, but it is being migrated away from in favor of the
294
+ internal api. It will however likely still remain as an optional dep for the api adapter.
295
+
296
+ Additionally, some catchall dep categories include:
297
+
298
+ - **compression** - Various preferred compression backends like lz4, python-snappy, zstandard, and brotli.
299
+ - **formats** - Various preferred data format backends like orjson/ujson, pyyaml, cbor2, and cloudpickle.
300
+ - **sql drivers** - Various preferred and tested sql drivers.
@@ -1,5 +1,5 @@
1
1
  omlish/.manifests.json,sha256=aT8yZ-Zh-9wfHl5Ym5ouiWC1i0cy7Q7RlhzavB6VLPI,8587
2
- omlish/__about__.py,sha256=-DbjDvgqe02JsxIgL09pN_yzW3I3ZTmjXb0au6bPnpc,3479
2
+ omlish/__about__.py,sha256=lkQADEaVOdLymPabc9nqxBnnoUh2IftMJDVmxDHhHiU,3445
3
3
  omlish/__init__.py,sha256=SsyiITTuK0v74XpKV8dqNaCmjOlan1JZKrHQv5rWKPA,253
4
4
  omlish/c3.py,sha256=rer-TPOFDU6fYq_AWio_AmA-ckZ8JDY5shIzQ_yXfzA,8414
5
5
  omlish/cached.py,sha256=MLap_p0rdGoDIMVhXVHm1tsbcWobJF0OanoodV03Ju8,542
@@ -504,7 +504,7 @@ omlish/logs/timing.py,sha256=qsQ3DB6swts1pxrFlmLWQzhH-3nzDrq1MUu7PxjjUyU,1519
504
504
  omlish/logs/utils.py,sha256=OkFWf1exmWImmT7BaSiIC7c0Fk9tAis-PRqo8H4ny3c,398
505
505
  omlish/manifests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
506
506
  omlish/manifests/base.py,sha256=5CmayiuzdXXv9hB5tDnWqfAosAoEQ26YG0B-emkiTXU,941
507
- omlish/manifests/load.py,sha256=NLpD8eBz078MNjQ9bEafhbpPBPfM_cVQVnkdmtQv7Gk,7666
507
+ omlish/manifests/load.py,sha256=baPBZJRSmFVH9lWlWXAredmJFFYc3X0W2C6Z8a4M05E,7734
508
508
  omlish/manifests/static.py,sha256=7YwOVh_Ek9_aTrWsWNO8kWS10_j4K7yv3TpXZSHsvDY,501
509
509
  omlish/manifests/types.py,sha256=5hQuY-WZ9VMqHZXr-9Dayg380JsnX2vJzXyw6vC6UDs,317
510
510
  omlish/marshal/__init__.py,sha256=QeWqXKb6_Jk8vpX9Z-apWlM3nUbJY3uCPOm0k8Lw8b8,3584
@@ -890,9 +890,9 @@ omlish/typedvalues/marshal.py,sha256=AtBz7Jq-BfW8vwM7HSxSpR85JAXmxK2T0xDblmm1HI0
890
890
  omlish/typedvalues/of_.py,sha256=UXkxSj504WI2UrFlqdZJbu2hyDwBhL7XVrc2qdR02GQ,1309
891
891
  omlish/typedvalues/reflect.py,sha256=PAvKW6T4cW7u--iX80w3HWwZUS3SmIZ2_lQjT65uAyk,1026
892
892
  omlish/typedvalues/values.py,sha256=ym46I-q2QJ_6l4UlERqv3yj87R-kp8nCKMRph0xQ3UA,1307
893
- omlish-0.0.0.dev381.dist-info/licenses/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
894
- omlish-0.0.0.dev381.dist-info/METADATA,sha256=1yVdXIDoTT1W06OUpeqhGjLyUOCOT_GEDMOTVjI78jU,4420
895
- omlish-0.0.0.dev381.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
896
- omlish-0.0.0.dev381.dist-info/entry_points.txt,sha256=Lt84WvRZJskWCAS7xnQGZIeVWksprtUHj0llrvVmod8,35
897
- omlish-0.0.0.dev381.dist-info/top_level.txt,sha256=pePsKdLu7DvtUiecdYXJ78iO80uDNmBlqe-8hOzOmfs,7
898
- omlish-0.0.0.dev381.dist-info/RECORD,,
893
+ omlish-0.0.0.dev382.dist-info/licenses/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
894
+ omlish-0.0.0.dev382.dist-info/METADATA,sha256=yCksZcosieu0N1Nq0ANs_GGJn0Dekpz4CsWFPh117As,18726
895
+ omlish-0.0.0.dev382.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
896
+ omlish-0.0.0.dev382.dist-info/entry_points.txt,sha256=Lt84WvRZJskWCAS7xnQGZIeVWksprtUHj0llrvVmod8,35
897
+ omlish-0.0.0.dev382.dist-info/top_level.txt,sha256=pePsKdLu7DvtUiecdYXJ78iO80uDNmBlqe-8hOzOmfs,7
898
+ omlish-0.0.0.dev382.dist-info/RECORD,,
@@ -1,106 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: omlish
3
- Version: 0.0.0.dev381
4
- Summary: omlish
5
- Author: wrmsr
6
- License: BSD-3-Clause
7
- Project-URL: source, https://github.com/wrmsr/omlish
8
- Classifier: License :: OSI Approved :: BSD License
9
- Classifier: Development Status :: 2 - Pre-Alpha
10
- Classifier: Intended Audience :: Developers
11
- Classifier: Operating System :: OS Independent
12
- Classifier: Operating System :: POSIX
13
- Requires-Python: >=3.13
14
- License-File: LICENSE
15
- Provides-Extra: all
16
- Requires-Dist: anyio~=4.10; extra == "all"
17
- Requires-Dist: sniffio~=1.3; extra == "all"
18
- Requires-Dist: greenlet~=3.2; extra == "all"
19
- Requires-Dist: trio~=0.30; extra == "all"
20
- Requires-Dist: trio-asyncio~=0.15; extra == "all"
21
- Requires-Dist: lz4~=4.4; extra == "all"
22
- Requires-Dist: python-snappy~=0.7; extra == "all"
23
- Requires-Dist: zstandard~=0.23; extra == "all"
24
- Requires-Dist: brotli~=1.1; extra == "all"
25
- Requires-Dist: asttokens~=3.0; extra == "all"
26
- Requires-Dist: executing~=2.2; extra == "all"
27
- Requires-Dist: psutil~=7.0; extra == "all"
28
- Requires-Dist: orjson~=3.11; extra == "all"
29
- Requires-Dist: ujson~=5.10; extra == "all"
30
- Requires-Dist: pyyaml~=6.0; extra == "all"
31
- Requires-Dist: cbor2~=5.6; extra == "all"
32
- Requires-Dist: cloudpickle~=3.1; extra == "all"
33
- Requires-Dist: httpx[http2]~=0.28; extra == "all"
34
- Requires-Dist: wrapt~=1.17; extra == "all"
35
- Requires-Dist: cryptography~=45.0; extra == "all"
36
- Requires-Dist: sqlalchemy[asyncio]~=2.0; extra == "all"
37
- Requires-Dist: pg8000~=1.31; extra == "all"
38
- Requires-Dist: pymysql~=1.1; extra == "all"
39
- Requires-Dist: aiomysql~=0.2; extra == "all"
40
- Requires-Dist: aiosqlite~=0.21; extra == "all"
41
- Requires-Dist: asyncpg~=0.30; extra == "all"
42
- Requires-Dist: apsw~=3.50; extra == "all"
43
- Requires-Dist: sqlean.py~=3.49; extra == "all"
44
- Requires-Dist: duckdb~=1.3; extra == "all"
45
- Requires-Dist: markupsafe~=3.0; extra == "all"
46
- Requires-Dist: jinja2~=3.1; extra == "all"
47
- Requires-Dist: pytest~=8.4; extra == "all"
48
- Requires-Dist: anyio~=4.10; extra == "all"
49
- Requires-Dist: sniffio~=1.3; extra == "all"
50
- Requires-Dist: asttokens~=3.0; extra == "all"
51
- Requires-Dist: executing~=2.2; extra == "all"
52
- Requires-Dist: orjson~=3.11; extra == "all"
53
- Requires-Dist: pyyaml~=6.0; extra == "all"
54
- Requires-Dist: wrapt~=1.17; extra == "all"
55
- Provides-Extra: async
56
- Requires-Dist: anyio~=4.10; extra == "async"
57
- Requires-Dist: sniffio~=1.3; extra == "async"
58
- Requires-Dist: greenlet~=3.2; extra == "async"
59
- Requires-Dist: trio~=0.30; extra == "async"
60
- Requires-Dist: trio-asyncio~=0.15; extra == "async"
61
- Provides-Extra: compress
62
- Requires-Dist: lz4~=4.4; extra == "compress"
63
- Requires-Dist: python-snappy~=0.7; extra == "compress"
64
- Requires-Dist: zstandard~=0.23; extra == "compress"
65
- Requires-Dist: brotli~=1.1; extra == "compress"
66
- Provides-Extra: diag
67
- Requires-Dist: asttokens~=3.0; extra == "diag"
68
- Requires-Dist: executing~=2.2; extra == "diag"
69
- Requires-Dist: psutil~=7.0; extra == "diag"
70
- Provides-Extra: formats
71
- Requires-Dist: orjson~=3.11; extra == "formats"
72
- Requires-Dist: ujson~=5.10; extra == "formats"
73
- Requires-Dist: pyyaml~=6.0; extra == "formats"
74
- Requires-Dist: cbor2~=5.6; extra == "formats"
75
- Requires-Dist: cloudpickle~=3.1; extra == "formats"
76
- Provides-Extra: http
77
- Requires-Dist: httpx[http2]~=0.28; extra == "http"
78
- Provides-Extra: misc
79
- Requires-Dist: wrapt~=1.17; extra == "misc"
80
- Provides-Extra: secrets
81
- Requires-Dist: cryptography~=45.0; extra == "secrets"
82
- Provides-Extra: sqlalchemy
83
- Requires-Dist: sqlalchemy[asyncio]~=2.0; extra == "sqlalchemy"
84
- Provides-Extra: sqldrivers
85
- Requires-Dist: pg8000~=1.31; extra == "sqldrivers"
86
- Requires-Dist: pymysql~=1.1; extra == "sqldrivers"
87
- Requires-Dist: aiomysql~=0.2; extra == "sqldrivers"
88
- Requires-Dist: aiosqlite~=0.21; extra == "sqldrivers"
89
- Requires-Dist: asyncpg~=0.30; extra == "sqldrivers"
90
- Requires-Dist: apsw~=3.50; extra == "sqldrivers"
91
- Requires-Dist: sqlean.py~=3.49; extra == "sqldrivers"
92
- Requires-Dist: duckdb~=1.3; extra == "sqldrivers"
93
- Provides-Extra: templates
94
- Requires-Dist: markupsafe~=3.0; extra == "templates"
95
- Requires-Dist: jinja2~=3.1; extra == "templates"
96
- Provides-Extra: testing
97
- Requires-Dist: pytest~=8.4; extra == "testing"
98
- Provides-Extra: plus
99
- Requires-Dist: anyio~=4.10; extra == "plus"
100
- Requires-Dist: sniffio~=1.3; extra == "plus"
101
- Requires-Dist: asttokens~=3.0; extra == "plus"
102
- Requires-Dist: executing~=2.2; extra == "plus"
103
- Requires-Dist: orjson~=3.11; extra == "plus"
104
- Requires-Dist: pyyaml~=6.0; extra == "plus"
105
- Requires-Dist: wrapt~=1.17; extra == "plus"
106
- Dynamic: license-file