Skip to main content

Overview

Core utilities and foundational code. It's relatively large but completely self-contained, and has no required dependencies of any kind.

Notable packages

  • lang - The standard library of this standard library. Usually imported as a whole (from omcore import lang), it contains an array of general purpose utilities used practically everywhere. It is kept relatively lightweight: its heaviest import is stdlib dataclasses and its transitives. Some of its contents include:

    • cached - The standard cached_function / cached_property tools, which are more capable than functools.lru_cache.
    • imports - Import tools like:
      • proxy_import - For late-loaded imports.
      • proxy_init - For late-loaded module globals.
      • auto_proxy_init - For automatic late-loaded package exports.
    • classes - Class tools and bases, such as Abstract (which checks at subclass definition not instantiation), Sealed / PackageSealed, and Final.
    • maybes - A simple, nestable formalization of the presence or absence of an object, as in many other languages.
  • bootstrap - A centralized, configurable, all-in-one collection of various process-initialization minutiae like resource limiting, profiling, remote debugging, log configuration, environment variables, et cetera. Usable as a context manager or via its cli.

  • collections - A handful of collection utilities and simple implementations, including:

    • cache - A configurable LRU / LFU cache with options like ttl and max size / weight.
    • hasheq - A dict taking an external __hash__ / __eq__ implementation.
    • identity - Identity-keyed collections.
    • sorted - Interfaces for value-sorted collections and key-sorted mappings, and a simple but correct skiplist-backed implementation.
    • persistent - Interfaces for persistent maps, and a simple but correct treap-backed implementation.
  • dataclasses - A fully-compatible reimplementation of stdlib dataclasses with numerous enhancements and additional features. The full stdlib test suite is run against it ensuring compatibility - they are dataclasses. Current enhancements include:

    • Simple field coercion and validation.
    • Any number of @dc.init or @dc.validate methods, not just a central __post_init__.
    • Optional generic type parameter substitution in generated __init__ methods, enabling accurate reflection.
    • An optional metaclass which removes the need for re-decorating subclasses (with support for inheritance of dataclass parameters like frozen), and some basic base classes.
    • Support for ahead-of-time / build-time code generation, significantly reducing import times.

    The stdlib-equivalent api is exported in such a way as to appear to be direct aliases for the stdlib api itself, simplifying tool support.

  • dispatch - A beefed-up version of functools.singledispatch, most notably supporting MRO-honoring method impl dispatch.

  • formats - Tools for various data formats, including:

    • json - Tools for json, including abstraction over various backends and a self-contained streaming / incremental parser.
    • json5 - A self-contained and tested Json5 parser.
    • toml - Toml tools, including a lite version of the stdlib parser (for use in older pythons).
    • goyaml - A manual, near-direct, 'lite'-compatible translation of go-yaml.
  • http - HTTP code, including:

    • clients - An abstraction over HTTP clients, with urllib and httpx implementations.
  • inject - A guice-style dependency injector.

  • io - IO tools, including:

  • jmespath - A vendoring of jmespath community edition, modernized and adapted to this codebase.

  • marshal - A jackson-style serde system.

  • manifests - A system for sharing lightweight metadata within / across codebases.

  • reflect - Reflection utilities, including primarily a formalization of stdlib type annotations for use at runtime, decoupled from stdlib impl detail. Keeping this working is notoriously difficult across python versions (one of the primary reasons for only supporting 3.14+).

  • sql - A collection of SQL utilities, including:

    • api - An abstracted api for SQL interaction, with support for dbapi compatible drivers (and a SQLAlchemy adapter).
    • queries - A SQL query builder with a fluent interface.
    • alchemy - SQLAlchemy utilities. The codebase has moved away from SQLAlchemy in favor of its own internal SQL api, but it will likely still remain as an optional dep for the api adapter.
  • testing - Test - primarily pytest - helpers, including:

    • 'harness' - An all-in-one fixture marrying it to the codebase's dependency injector.
    • plugins/async - An in-house async-backend abstraction plugin, capable of handling all of asyncio / trio / trio-asyncio / any-future-event-loop-impl without having multiple fighting plugins (I know, I know).
    • plugins - Various other plugins.
  • typedvalues - A little toolkit around 'boxed' values, whose 'box' types convey more information than the bare values themselves. A rebellion against kwargs / env vars / giant config objects: instead of foo(bar=1, baz=2), you do foo(Bar(1), Baz(2)).

  • lite - The standard library of 'lite' code. This is the only package beneath lang, and parts of it are re-exported by it for deduplication. On top of miscellaneous utilities it contains a handful of independent, self-contained, significantly simplified 'lite' equivalents of some major core packages:

    • lite/inject.py - The lite injector, which is more conservative with features and reflection than the core injector. The codebase's MiniGuice.
    • lite/marshal.py - The lite marshalling system, which is a classic canned setup of simple type-specific 2-method classes and limited generic handling.

Lite code

A subset of this codebase is written in a 'lite' style (non-'lite' code is referred to as standard code). While standard code is written for python 3.14+, 'lite' code is written for 3.8+, and is written in a style conducive to amalgamation in which multiple python source files are stitched together into one single self-contained python script.

Code written in this style has notable differences from standard code, including (but not limited to):

  • No name mangling is done in amalgamation, which means (among other things) that code must be written expecting to be all dumped into the same giant namespace. Where a standard class might be omcore.inject.keys.Key, a lite equivalent might be omcore.lite.inject.InjectorKey.
  • All internal imports import each individual item out of modules rather than importing the modules and referencing their contents. Where standard code would from .. import x; x.y, lite code would from ..x import y; y. As a result there are frequently 'api' non-instantiated namespace classes serving the purpose of modules - just handy bags of stuff with shortened names.
  • As lite code is tested in 3.8+ but core code requires 3.14+, packages containing lite code can't import anything standard in their (and their ancestors') __init__.py's. Furthermore, __init__.py files are omitted outright in amalgamation, so they effectively must be empty in any package containing any lite code. As a result there are frequently all.py files in mixed-lite packages which serve the purpose of __init__.py for standard usage - where importing standard packages from standard code would be done via from .. import lang, importing mixed-lite packages from standard code would be done via from ..configs import all as cfgs.

Dependencies

This library has no required dependencies of any kind, but there are some optional integrations - see __about__.py for a full list, but some specific examples are:

  • asttokens / executing - For getting runtime source representations of function call arguments, an optional capability of check.
  • pytest - What is used for all standard testing - as lite code has no dependencies of any kind its testing uses stdlib's unittest.
  • anyio - While lite code must use only asyncio, some async standard code sometimes is written to anyio.
  • sqlalchemy - The codebase has migrated away from SQLAlchemy in favor of the internal api but it retains it as an optional dep to support adapting the internal api to it.

Additionally, some catchall dep categories include:

  • compression - Various preferred compression backends like lz4, python-snappy, and brotli.
  • formats - Various preferred data format backends like orjson/ujson, pyyaml, cbor2, and cloudpickle.
  • sql drivers - Various preferred and tested sql drivers.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

omcore_cext-0.0.52.tar.gz (176.3 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

omcore_cext-0.0.52-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (1.0 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

omcore_cext-0.0.52-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl (1.1 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.24+ ARM64manylinux: glibc 2.28+ ARM64

omcore_cext-0.0.52-cp314-cp314t-macosx_15_0_arm64.whl (338.2 kB view details)

Uploaded CPython 3.14tmacOS 15.0+ ARM64

omcore_cext-0.0.52-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (962.4 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

omcore_cext-0.0.52-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl (970.9 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.24+ ARM64manylinux: glibc 2.28+ ARM64

omcore_cext-0.0.52-cp314-cp314-macosx_15_0_arm64.whl (328.9 kB view details)

Uploaded CPython 3.14macOS 15.0+ ARM64

File details

Details for the file omcore_cext-0.0.52.tar.gz.

File metadata

  • Download URL: omcore_cext-0.0.52.tar.gz
  • Upload date:
  • Size: 176.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.14.7

File hashes

Hashes for omcore_cext-0.0.52.tar.gz
Algorithm Hash digest
SHA256 a56ebc3c65a935a14672e6deb5a3197852f85592b30b6f15945aa29868c4fbc1
MD5 017a5c78379262de6909df33822a7834
BLAKE2b-256 550ceb5ca346f66a5836d763bbd2eecb19ee2dfd77be272d5498c79797bc76b7

See more details on using hashes here.

File details

Details for the file omcore_cext-0.0.52-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for omcore_cext-0.0.52-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 95e815d2efee8a4603d4722e15d24cd0e21e2ff24be19a74cd297548ec72e050
MD5 c487cbf8dc4a0f636a5d36de1e27a591
BLAKE2b-256 988c2e3dd8f6d1c3720934c5e4302944a43be9d929ba5e01542398f86c010e66

See more details on using hashes here.

File details

Details for the file omcore_cext-0.0.52-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for omcore_cext-0.0.52-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 ae905e4154d533f1e02c6638539862135fcf150ffa64cf3ea84d9ae44cff7cb3
MD5 3e78c93558be78a0f43d11b17b0db5bc
BLAKE2b-256 2f71b7792aecc0d3c816ae5af1f96a123b0d58391c70815a9b28501d09f074ac

See more details on using hashes here.

File details

Details for the file omcore_cext-0.0.52-cp314-cp314t-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for omcore_cext-0.0.52-cp314-cp314t-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 b6c3223fc4be84d7eb2ea5eaebfbfc506a1be6f2b92de7fbe9e4d7e98aea2573
MD5 29e1919428e6f4edda9537d7d346d192
BLAKE2b-256 9cfae2a5e4c1b1e931699d962c7146573d283cc080fde6ca3fc25d77cdb55b97

See more details on using hashes here.

File details

Details for the file omcore_cext-0.0.52-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for omcore_cext-0.0.52-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 3a1a6b1059378d5b218447a1297ecc2645e3054d7694a7e6e78868a73f3a719a
MD5 b5139d41cac6e7ee9eb1423f5d6eb4c6
BLAKE2b-256 868361808a184aed68c20a8eb21e53522f25b96202686067ad72dbefed6be9e5

See more details on using hashes here.

File details

Details for the file omcore_cext-0.0.52-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for omcore_cext-0.0.52-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 d0fa0c3defef7ce1c06bb11fae0507bfb243a1ad6bd3a70ed82d03851dae1e05
MD5 1abd81b010ab5cf1ad7dd50e1b20c8b5
BLAKE2b-256 a9eae65f16c482ed7472bd7a3b50b0dafca186e3425fa23ab281657f04a5845f

See more details on using hashes here.

File details

Details for the file omcore_cext-0.0.52-cp314-cp314-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for omcore_cext-0.0.52-cp314-cp314-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 22e5904de44cdf4914aae8c879c3af2b78a005919c226331710176b4922575bf
MD5 af51738e1d98981b77918b11a5a58168
BLAKE2b-256 19ce83860fa532805bf0dae910056eaa69d7372c2eba9d5bee10ea03058d0491

See more details on using hashes here.

Release history Release notifications | RSS feed

0.0.53

7 files

This release

0.0.52 This release

7 files

0.0.51

7 files

0.0.50

7 files

0.0.49

7 files

0.0.48

7 files

0.0.47

7 files

0.0.46

7 files

0.0.45

7 files

0.0.44

7 files

0.0.43

7 files

0.0.42

2 files

0.0.41

2 files

0.0.40

2 files

0.0.39

2 files

0.0.38

2 files

0.0.37

2 files

0.0.36

2 files

0.0.35

2 files

0.0.34

2 files

0.0.33

2 files

0.0.32

2 files

0.0.31

2 files

0.0.30

2 files

0.0.29

2 files

0.0.28

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page