This commit is contained in:
Pravin 2025-12-12 15:12:03 +00:00 committed by GitHub
commit 0256b47d9c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
11 changed files with 63 additions and 76 deletions

View File

@ -28,7 +28,6 @@ jobs:
python-version: ${{ matrix.python-version }}
allow-prereleases: true
cache: 'pip'
cache-dependency-path: 'requirements/*.txt'
- name: Upgrade packaging tools
run: python -m pip install --upgrade pip setuptools virtualenv wheel
@ -60,7 +59,7 @@ jobs:
python-version: '3.13'
- name: Install dependencies
run: pip install -r requirements/requirements-documentation.txt
run: pip install --group docs
# Start mkdocs server and wait for it to be ready
- run: mkdocs serve &

View File

@ -7,7 +7,7 @@ on:
paths:
- docs/**
- docs_theme/**
- requirements/requirements-documentation.txt
- pyproject.toml
- mkdocs.yml
- .github/workflows/mkdocs-deploy.yml
@ -25,5 +25,5 @@ jobs:
- uses: actions/setup-python@v6
with:
python-version: 3.x
- run: pip install -r requirements/requirements-documentation.txt
- run: pip install --group docs
- run: mkdocs gh-deploy

View File

@ -75,8 +75,7 @@ To run the tests, clone the repository, and then:
# Setup the virtual environment
python3 -m venv env
source env/bin/activate
pip install -e .
pip install -r requirements.txt
pip install -e . --group dev
# Run the tests
./runtests.py

View File

@ -81,14 +81,6 @@ When pushing the release to PyPI ensure that your environment has been installed
---
## Project requirements
All our test requirements are pinned to exact versions, in order to ensure that our test runs are reproducible. We maintain the requirements in the `requirements` directory. The requirements files are referenced from the `tox.ini` configuration file, ensuring we have a single source of truth for package versions used in testing.
Package upgrades should generally be treated as isolated pull requests. You can check if there are any packages available at a newer version, by using the `pip list --outdated`.
---
## Project ownership
The PyPI package is owned by `@tomchristie`. As a backup `@j4mie` also has ownership of the package.

View File

@ -33,6 +33,46 @@ classifiers = [
dynamic = [ "version" ]
dependencies = [ "django>=4.2" ]
[dependency-groups]
dev = [
{ include-group = "docs" },
{ include-group = "optional" },
{ include-group = "test" },
]
test = [
# 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",
# Remove when dropping support for Django<5.0
"pytz",
]
docs = [
# MkDocs to build our documentation.
"mkdocs==1.6",
# pylinkvalidator to check for broken links in documentation.
"pylinkvalidator==0.3",
]
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",
]
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"

View File

@ -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

View File

@ -1,5 +0,0 @@
# MkDocs to build our documentation.
mkdocs==1.6.0
# pylinkvalidator to check for broken links in documentation.
pylinkvalidator==0.3

View File

@ -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

View File

@ -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

View File

@ -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

35
tox.ini
View File

@ -15,35 +15,38 @@ envdir = {toxworkdir}/venvs/{envname}
setenv =
PYTHONDONTWRITEBYTECODE=1
PYTHONWARNINGS=once
dependency_groups =
test
optional
deps =
django42: Django>=4.2,<5.0
django50: Django>=5.0,<5.1
django51: Django>=5.1,<5.2
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
django42: Django>=4.2,<5.0
django50: Django>=5.0,<5.1
django51: Django>=5.1,<5.2
django52: Django>=5.2,<6.0
django60: Django>=6.0,<6.1
djangomain: https://github.com/django/django/archive/main.tar.gz
[testenv:base]
; Ensure optional dependencies are not required
dependency_groups =
test
deps =
django<6.1
-rrequirements/requirements-testing.txt
[testenv:dist]
commands = python -W error::DeprecationWarning -W error::PendingDeprecationWarning runtests.py --no-pkgroot --staticfiles {posargs}
dependency_groups =
test
optional
deps =
django<6.1
-rrequirements/requirements-testing.txt
-rrequirements/requirements-optionals.txt
[testenv:docs]
skip_install = true
commands = mkdocs build
commands =
mkdocs build
dependency_groups =
test
docs
deps =
-rrequirements/requirements-testing.txt
-rrequirements/requirements-documentation.txt
[testenv:py312-djangomain]
ignore_outcome = true