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 code, please fork the
code and submit a pull
request.