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.
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}"
]
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.
If you experience problems with setuptools_dynamic_dependencies, log them on
GitHub. If you want
to contribute, please fork the
project and submit a pull
request.
