Skip to main content

A setuptools plugin that allows for dependencies that are dependent on the package's version number.

Project description

Generic BeeWare Logo

setuptools_dynamic_dependencies

Python Versions PyPI Version Maturity BSD License Discord server

setuptools_dynamic_dependencies is a setuptools plugin that allows you to define project requirements that are dynamically dependent on other properties (such as project version). This can be useful in monorepositories which contain a "core" package and a number of "backend" packages, and you want to enforce a version dependency between the backend and the core.

Usage

You must be using a pyproject.toml-based project configuration. setup.cfg and setup.py configurations are not supported.

Add setuptools_dynamic_dependencies to the build-system requirements for your project:

[build-system]
requires = ["setuptools_dynamic_dependencies"]

Declare "dependencies" as being dynamic in your [project] table:

[project]
dynamic = ["dependencies"]

Then, add a [tool.setuptools_dynamic_dependencies] section to your configuration. In this section, add an dependencies key for any requirements. In the following example, dynamic-package will be pinned to the same version as the package being built:

[tool.setuptools_dynamic_requires]
dependencies = [
    "dynamic-package == {version}"
]

So - if this was the pyproject.toml for "myproject", and you were building v1.2.3, the dependency would be set to dynamic_package == 1.2.3. This version value can come from a setuptool_scm dynamic version, if required.

You can also specify a [tool.setuptools_dynamic_dependencies.optional-dependencies] to define dynamic optional requirements:

[tool.setuptools_dynamic_dependencies.optional-dependencies]
feature = [
    "dynamic-package == {version}"
]

Community

setuptools_dynamic_dependencies is part of the BeeWare suite. You can talk to the community through:

We foster a welcoming and respectful community as described in our BeeWare Community Code of Conduct.

Contributing

If you experience problems with setuptools_dynamic_dependencies, log them on GitHub. If you want to contribute code, please fork the code and submit a pull request.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page