Metadata-Version: 2.4
Name: generic-ml-cache-bootstrap
Version: 1.0.0
Summary: Composition root and plugin discovery for generic-ml-cache: discovers gmlcache.adapters plugins (with load-time whitelisting and provenance trust) and wires the application.
Project-URL: Homepage, https://github.com/danielslobozian/generic-ml-cache
Project-URL: Repository, https://github.com/danielslobozian/generic-ml-cache
Project-URL: Issues, https://github.com/danielslobozian/generic-ml-cache/issues
Project-URL: Changelog, https://github.com/danielslobozian/generic-ml-cache/blob/main/CHANGELOG.md
Author: Daniel Slobozian
License-Expression: Apache-2.0
License-File: LICENSE
License-File: NOTICE
Keywords: ai,cache,composition-root,discovery,hexagonal,llm,plugins
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Software Development :: Libraries
Requires-Python: >=3.10
Requires-Dist: generic-ml-cache-adapters<2,>=1.0.0
Requires-Dist: generic-ml-cache-core<2,>=1.0.0
Provides-Extra: dev
Requires-Dist: coverage>=7; extra == 'dev'
Requires-Dist: import-linter>=2; extra == 'dev'
Requires-Dist: pyright>=1.1; extra == 'dev'
Requires-Dist: pytest-cov; extra == 'dev'
Requires-Dist: pytest-timeout; extra == 'dev'
Requires-Dist: pytest>=7; extra == 'dev'
Requires-Dist: ruff>=0.15; extra == 'dev'
Provides-Extra: encryption
Requires-Dist: generic-ml-cache-adapters[encryption]<2,>=1.0.0; extra == 'encryption'
Description-Content-Type: text/markdown

# generic-ml-cache-bootstrap

#### The composition root and plugin discovery for gmlcache

The startup layer that assembles the application. It discovers the
`gmlcache.adapters` plugins (whitelisting them at load time and judging which
distributions are trusted), then wires the [core](https://github.com/danielslobozian/generic-ml-cache/tree/main/packages/core)
use cases to the concrete [adapters](https://github.com/danielslobozian/generic-ml-cache/tree/main/packages/adapters)
and hands the drivers a ready application API.

It is the one place that freely wires both `core` and `adapters` — the
composition root in hexagonal terms. The drivers
([cli](https://github.com/danielslobozian/generic-ml-cache/tree/main/packages/cli),
daemon) get their wired application from `bootstrap` and reach the domain only
through the inbound ports of that `ApplicationApi` bundle; the DB-backed adapters
are grouped behind an injectable `PersistenceBackend`, so no driver ever touches a
raw connection. A driver keeps only a few deliberate *direct* edges to `adapters`,
each a driver-policy choice rather than domain wiring: the CLI's own
`encrypt`/`decrypt`/`rotate` command helpers (the crypto adapters) and its demo
stub adapter, and each driver selecting its own diagnostics (logging) adapter.
An adapter never imports `bootstrap` (that would be a leaf calling the composition
root). These edges are frozen by import-linter contracts.

## Install

You normally get it transitively (`pip install generic-ml-cache-cli` pulls it
in). Installed on its own:

```bash
pip install generic-ml-cache-bootstrap
```

## License

Apache-2.0 — see [`LICENSE`](https://github.com/danielslobozian/generic-ml-cache/blob/main/LICENSE)
and [`NOTICE`](https://github.com/danielslobozian/generic-ml-cache/blob/main/NOTICE).
