Metadata-Version: 2.4
Name: rind
Version: 0.1.0a2
Summary: A minimal PEP 517 build backend for creating metapackages
Author-email: Thomas Robitaille <thomas.robitaille@gmail.com>
License: BSD-3-Clause
Project-URL: Homepage, https://github.com/astrofrog/rind
Project-URL: Documentation, https://rind.readthedocs.io
Project-URL: Repository, https://github.com/astrofrog/rind
Keywords: packaging,build,metapackage,pep517,rind
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: BSD License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
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 :: Build Tools
Classifier: Topic :: System :: Software Distribution
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: setuptools_scm>=8.0
Requires-Dist: packaging
Requires-Dist: tomli; python_version < "3.11"
Provides-Extra: docs
Requires-Dist: sphinx>=7.0; extra == "docs"
Requires-Dist: sphinx-rtd-theme>=2.0; extra == "docs"
Requires-Dist: sphinx-copybutton; extra == "docs"
Provides-Extra: test
Requires-Dist: pytest>=7.0; extra == "test"
Requires-Dist: build; extra == "test"
Provides-Extra: dev
Requires-Dist: ruff>=0.9; extra == "dev"
Requires-Dist: pre-commit>=4.0; extra == "dev"
Requires-Dist: tox>=4.0; extra == "dev"
Dynamic: license-file

# rind

> **Warning**
> This package is experimental and under active development. The API may change without notice.

A minimal [PEP 517](https://peps.python.org/pep-0517/) build backend to make
it easy to create a **metapackage** that extends
a core package by installing additional dependencies.

## Why use rind?

Package maintainers often face a tension between two types of users:

- **Typical users** want recommended dependencies installed by default for the best experience, without needing to know about extras syntax like `pip install mypackage[recommended]`
- **Advanced users** (library authors, Docker image builders, CI pipelines) want minimal installations to reduce dependency conflicts, image sizes, and install times

Putting recommended dependencies behind extras places a burden on typical users to discover and use special syntax. But making them required penalizes advanced users who need lean installations.

One solution is to distribute two packages: a core package with minimal dependencies (e.g., `mypackage-core`) and a metapackage (e.g., `mypackage`) that depends on the core and adds recommended dependencies. However, this approach comes with maintenance challenges: versions must be carefully pinned, and metadata must be kept in sync.

**rind eliminates this burden** by letting you publish both packages from a single repository with automatic version pinning and metadata inheritance:

- **`mypackage-core`**: Minimal dependencies for advanced users
- **`mypackage`**: Batteries-included for typical users

Both provide the same `import mypackage` experience.

## Documentation

See the [documentation](https://rind.readthedocs.io) for information on how to use this package.

## License

BSD 3-Clause License. See [LICENSE](LICENSE) for details.
