diff --git a/pyproject.toml b/pyproject.toml index da608a26c..aa4722f33 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -33,6 +33,47 @@ classifiers = [ dynamic = [ "version" ] dependencies = [ "django>=4.2" ] + +optional-dependencies.documentation = [ + # MkDocs to build our documentation. + "mkdocs==1.6", + # pylinkvalidator to check for broken links in documentation. + "pylinkvalidator==0.3", +] +optional-dependencies.optional = [ + # Optional packages which may be used with REST framework. + "coreapi==2.3.1", + "coreschema==0.0.4", + "django-filter", + "django-guardian>=2.4,<2.5", + "inflection==0.5.1", + "legacy-cgi; python_version>='3.13'", + "markdown>=3.3.7", + "psycopg[binary]>=3.1.8", + "pygments~=2.17.0", + "pyyaml>=5.3.1,<5.4", +] +optional-dependencies.packaging = [ + # Transifex client for managing translation resources. + "transifex-client", + # Twine for secured PyPI uploads. + "twine>=3.4.2,<4.0.2", + + # Wheel for PyPI installs. + "wheel>=0.36.2,<0.40", + +] +optional-dependencies.testing = [ + # temporary pin of attrs + "attrs==22.1", + "importlib-metadata<5", + + # Pytest for running the tests. + "pytest>=7.0.1,<8", + "pytest-cov>=4,<5", + "pytest-django>=4.5.2,<5", + "pytz", +] urls.Changelog = "https://www.django-rest-framework.org/community/release-notes/" urls.Funding = "https://fund.django-rest-framework.org/topics/funding/" urls.Homepage = "https://www.django-rest-framework.org" diff --git a/requirements.txt b/requirements.txt deleted file mode 100644 index c3a1f1187..000000000 --- a/requirements.txt +++ /dev/null @@ -1,13 +0,0 @@ -# The base set of requirements for REST framework is actually -# just Django and pytz, but for the purposes of development -# and testing there are a number of packages that are useful -# to install. - -# Laying these out as separate requirements files, allows us to -# only included the relevant sets when running tox, and ensures -# we are only ever declaring our dependencies in one place. - --r requirements/requirements-optionals.txt --r requirements/requirements-testing.txt --r requirements/requirements-documentation.txt --r requirements/requirements-packaging.txt diff --git a/requirements/requirements-documentation.txt b/requirements/requirements-documentation.txt deleted file mode 100644 index 2cf936ef3..000000000 --- a/requirements/requirements-documentation.txt +++ /dev/null @@ -1,5 +0,0 @@ -# MkDocs to build our documentation. -mkdocs==1.6.0 - -# pylinkvalidator to check for broken links in documentation. -pylinkvalidator==0.3 diff --git a/requirements/requirements-optionals.txt b/requirements/requirements-optionals.txt deleted file mode 100644 index a19e4d192..000000000 --- a/requirements/requirements-optionals.txt +++ /dev/null @@ -1,11 +0,0 @@ -# Optional packages which may be used with REST framework. -coreapi==2.3.1 -coreschema==0.0.4 -django-filter -django-guardian>=2.4.0,<2.5 -inflection==0.5.1 -legacy-cgi; python_version>="3.13" -markdown>=3.3.7 -psycopg[binary]>=3.1.8 -pygments~=2.17.0 -pyyaml>=5.3.1,<5.4 diff --git a/requirements/requirements-packaging.txt b/requirements/requirements-packaging.txt deleted file mode 100644 index 81f22a35a..000000000 --- a/requirements/requirements-packaging.txt +++ /dev/null @@ -1,8 +0,0 @@ -# Wheel for PyPI installs. -wheel>=0.36.2,<0.40.0 - -# Twine for secured PyPI uploads. -twine>=3.4.2,<4.0.2 - -# Transifex client for managing translation resources. -transifex-client diff --git a/requirements/requirements-testing.txt b/requirements/requirements-testing.txt deleted file mode 100644 index a3821a508..000000000 --- a/requirements/requirements-testing.txt +++ /dev/null @@ -1,9 +0,0 @@ -# Pytest for running the tests. -pytest>=7.0.1,<8.0 -pytest-cov>=4.0.0,<5.0 -pytest-django>=4.5.2,<5.0 -importlib-metadata<5.0 -# temporary pin of attrs -attrs==22.1.0 -pytz # Remove when dropping support for Django<5.0 -setuptools>=77.0.3 diff --git a/tox.ini b/tox.ini index 6980d0bfa..936527f16 100644 --- a/tox.ini +++ b/tox.ini @@ -22,28 +22,24 @@ deps = django52: Django>=5.2,<6.0 django60: Django>=6.0,<6.1 djangomain: https://github.com/django/django/archive/main.tar.gz - -rrequirements/requirements-testing.txt - -rrequirements/requirements-optionals.txt + .[testing, optional] [testenv:base] ; Ensure optional dependencies are not required deps = - django<6.1 - -rrequirements/requirements-testing.txt + .[testing] [testenv:dist] commands = python -W error::DeprecationWarning -W error::PendingDeprecationWarning runtests.py --no-pkgroot --staticfiles {posargs} deps = - django<6.1 - -rrequirements/requirements-testing.txt - -rrequirements/requirements-optionals.txt + .[testing, optional] [testenv:docs] skip_install = true commands = mkdocs build deps = - -rrequirements/requirements-testing.txt - -rrequirements/requirements-documentation.txt + .[testing, optional] + [testenv:py312-djangomain] ignore_outcome = true