Skip to main content

Declarative setuptools Config Requirements Files Support

This projects adds the ability for projects using setuptools declarative configuration to specify requirements using requirements files.

There's a reason why this isn't, at least yet, supported by default. Please read why.

Anyway, if you know what you're doing, then this library solves the missing feature of defining requirements using requirements files.

setup.cfg

Your setup.cfg should include a section named requirements-files, like:

[requirements-files]
setup_requires = requirements/setup.txt
install_requires = requirements/base.txt
tests_require = requirements/tests.txt
extras_require =
  docs = requirements/docs.txt
  cli = requirements/cli.txt

⚠ ATTENTION

The requirements files MUST be included in the wheel file aswell as the source tarball

For the example shown above, in setup.cfg, add something like:

[options.data_files]
. = requirements/*.txt

Or something like the folowing on your MANIFEST.in:

include requirements/*.txt

Or, if you use setuptools-scm, the requirements files need to be committed to the SCM repo.

pyproject.toml

Your pyproject.toml should also include setuptools-declarative-requirements:

[build-system]
requires = ["setuptools>=50.3.2", "wheel", "setuptools-declarative-requirements"]
build-backend = "setuptools.build_meta"

setup.py

Some projects still use a setup.py shim, similar to:

#!/usr/bin/env python
import setuptools

if __name__ == "__main__":
    setuptools.setup()

If this is your case, your setup.cfg needs an extra bit of tweak. Make sure you have setuptools-declarative-requirements in your setup_requires:

[options]
setup_requires =
  setuptools>=50.3.2
  setuptools-declarative-requirements

Do Note That

⚠ This project makes no attempt to validate your requirements files.

The only thing it does is include every non empty line from your requirements files which does not start with #, -r or --.

Release files for setuptools-declarative-requirements 1.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for setuptools-declarative-requirements 1.3.0
File Size Uploaded
setuptools-declarative-requirements-1.3.0.tar.gz 21.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for setuptools-declarative-requirements 1.3.0
File Interpreter ABI Platform
setuptools_declarative_requirements-1.3.0-py3-none-any.whl Python 3 none any Details

Total release size: 30.2 kB

Release files / setuptools-declarative-requirements-1.3.0.tar.gz

Download URL setuptools-declarative-requirements-1.3.0.tar.gz
Size 21.0 kB
Tags Source
SHA-256 checksum
How to use checksums
57a5b9bb9ad350c278e8aa6be4cdebbcd925b9ba71d6a712a178a618cfb898f7
BLAKE2b-256 checksum
How to use checksums
f00685fb4a4ccb82f5040cd5ddc4ab55db5f9d16e0a1b43887e82a8e671e17cb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.7.12

Release files / setuptools_declarative_requirements-1.3.0-py3-none-any.whl

Download URL setuptools_declarative_requirements-1.3.0-py3-none-any.whl
Size 9.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
90f1e0e2bb41d2779a79cd25ca4e8c059b52b9dc53df54647b6d1dd9ae00978b
BLAKE2b-256 checksum
How to use checksums
146439aa062aabf855178080c75a5e6b2825ce5664623024b3e7def2883d5184
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.7.12

Release history Release notifications | RSS feed

This release

1.3.0 This release

2 release files

1.2.0

2 release files

1.1.0

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page