Metadata-Version: 2.4
Name: texpkg
Version: 0.2.5
Summary: TeX packages as Python packages: a typed texmodel API and the TeX it compiles against in one wheel, with versioned data, migrations and static linking between packages.
Author-Email: Ilja Orlovs <ilja@release.art>
License-Expression: MIT
License-File: LICENSE
Classifier: Development Status :: 3 - Alpha
Classifier: Programming Language :: Python :: 3.15
Classifier: Typing :: Typed
Project-URL: Homepage, https://github.com/release-art/texpkg
Project-URL: Repository, https://github.com/release-art/texpkg
Requires-Python: <3.16,>=3.15
Requires-Dist: texmodel>=0.8.0
Requires-Dist: pydantic>=2.14.1
Provides-Extra: build
Requires-Dist: typer>=0.27.3; extra == "build"
Requires-Dist: pdm-backend>=2.4; extra == "build"
Description-Content-Type: text/markdown

# texpkg

TeX packages published as Python packages. A texpkg package is one wheel: a typed [texmodel](https://github.com/release-art/texmodel)
API and the TeX it compiles against, at one version. Installed, it is a Python module with a fixed API to load, render,
save and check document directories, with versioned data and migrations; packages can build on each other, the base
embedded in the dependent at build time.

An author declares a package (`Distribution`, `Kind`, `Asset`) and builds it with `texpkg-build`, a pdm build hook. The
spec, the API reference and the decisions are in [docs/texpkg-plan.md](docs/texpkg-plan.md); what texpkg does not do is in
[docs/known-limitations.md](docs/known-limitations.md).

```zsh
pdm install
git config core.hooksPath .githooks   # pre-commit runs ruff, pyright and import-linter
bin/autoformat.sh
bin/test.sh                           # pytest, 100% coverage gate
```
