Metadata-Version: 2.4
Name: openframe-tooling
Version: 0.1.1
Summary: OpenFrame Microservice Suite - developer tooling meta-package. Install tools by name or group.
Author-email: Furious Meteors Engineering <engineering@furiousmeteors.dev>
Maintainer-email: Furious Meteors Engineering <engineering@furiousmeteors.dev>
License: MIT
Project-URL: Homepage, https://github.com/Furious-Meteors/openframe-tooling
Project-URL: Documentation, https://furious-meteors.github.io/openframe-tooling/
Project-URL: Repository, https://github.com/Furious-Meteors/openframe-tooling
Project-URL: Changelog, https://github.com/Furious-Meteors/openframe-tooling/blob/production/.github/CHANGELOG.md
Project-URL: Bug Tracker, https://github.com/Furious-Meteors/openframe-tooling/issues
Keywords: openframe,tooling,schema-governance,contract-testing,scaffolding,documentation
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Typing :: Typed
Requires-Python: >=3.11
Description-Content-Type: text/markdown
Provides-Extra: schemas
Requires-Dist: openframe-schemas<1,>=0.1; extra == "schemas"
Provides-Extra: cli
Requires-Dist: openframe-cli<1,>=0.1; extra == "cli"
Provides-Extra: docs
Requires-Dist: openframe-docs<1,>=0.1; extra == "docs"
Provides-Extra: all
Requires-Dist: openframe-tooling[schemas]; extra == "all"
Requires-Dist: openframe-tooling[cli]; extra == "all"
Requires-Dist: openframe-tooling[docs]; extra == "all"

# openframe-tooling

A metadata-only package that provides named install shortcuts for the
`openframe-tooling` ecosystem. Install one tool, or everything — all with a
single `pip install` command.

---

## Install surface

### Individual tools

```bash
pip install openframe-tooling[schemas]   # openframe-schemas — cross-service schema governance
pip install openframe-tooling[cli]       # openframe-cli     — service scaffolding
pip install openframe-tooling[docs]      # openframe-docs    — doc-truth CI
```

### Everything

```bash
pip install openframe-tooling[all]       # all tools in the ecosystem
```

---

## What each tool does

- **openframe-schemas** — publishes `@contract`-decorated Pydantic models
  (marked via `openframe.core.schemas.contract`) to a versioned, file-based
  registry and detects breaking changes between versions. Ships a CLI
  (`openframe-schemas publish` / `check`) for use as a CI gate.
- **openframe-cli** — service scaffolding via Copier templates. Generates a
  full hexagonal-architecture OpenFrame service — domain, ports, service,
  adapter, `ApplicationBootstrap` wiring, and `tests/test_architecture.py`
  enforcing the boundary — from a single `openframe new service` command.
  `openframe check` runs architecture/pins/contracts checks in CI.
- **openframe-docs** — doc-truth CI: derives documentation claims from
  source rather than trusting prose. Three independent checkers —
  `check-pins` (README version claims vs. real package version),
  `check-sigs` (README code-block calls vs. real installed signatures),
  and `check-imports` (README imports vs. what actually resolves) — each
  usable standalone as a CI gate.

> **Note:** as of `0.1.0`, all three tools — `openframe-schemas`,
> `openframe-cli`, and `openframe-docs` — are published.

---

## Versioning

Each tool is versioned independently and published to PyPI under its own
name (e.g. `openframe-schemas`). This meta-package pins each one to its own
major-version range (see `[project.optional-dependencies]` in
`pyproject.toml`), so patch and minor releases are picked up automatically
on `pip install --upgrade`. Only a major version bump in an individual tool
requires a meta-package update.

When a new tool is added to the ecosystem, only this `pyproject.toml`
changes — one new line in `[project.optional-dependencies]` and an update to
the `all` group. No other file in the monorepo is touched.
