aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTom Christie2015-02-17 13:03:56 +0000
committerTom Christie2015-02-17 13:03:56 +0000
commit466bbbb308fee2e7bea3b1d8b1457bebccd9893c (patch)
tree045380efffeb281c8a5883ed21c7e605a1a66bfd
parent85bf127943bf896139b8980f06ac1e914c32efb4 (diff)
parent028c477c2242e7c322b68c4730ed1868008c37d8 (diff)
downloaddjango-rest-framework-466bbbb308fee2e7bea3b1d8b1457bebccd9893c.tar.bz2
Merge pull request #2568 from tomchristie/requirements-refactor
Requirements refactor.
-rw-r--r--docs/topics/project-management.md10
-rw-r--r--requirements.txt34
-rw-r--r--requirements/requirements-codestyle.txt3
-rw-r--r--requirements/requirements-documentation.txt2
-rw-r--r--requirements/requirements-optionals.txt4
-rw-r--r--requirements/requirements-packaging.txt11
-rw-r--r--requirements/requirements-testing.txt3
-rw-r--r--tox.ini13
8 files changed, 52 insertions, 28 deletions
diff --git a/docs/topics/project-management.md b/docs/topics/project-management.md
index 2a54fb94..dfe0d635 100644
--- a/docs/topics/project-management.md
+++ b/docs/topics/project-management.md
@@ -166,6 +166,16 @@ When a translator has finished translating their work needs to be downloaded fro
---
+## 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.
+
+You can check if there are any packages available at a newer version, by using the `pip-review` tool.
+
+Package upgrades should generally be treated as isolated pull requests. Also note that the `pip-dump` command does not work gracefully with our requirements layout style, so any edits should be made manually.
+
+---
+
## Project ownership
The PyPI package is owned by `@tomchristie`. As a backup `@j4mie` also has ownership of the package.
diff --git a/requirements.txt b/requirements.txt
index bf461179..4ec84f68 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,21 +1,13 @@
-# Minimum Django version
-Django>=1.4.11
-
-# Test requirements
-pytest-django==2.8.0
-pytest==2.6.4
-pytest-cov==1.6
-flake8==2.2.2
-
-# Optional packages
-markdown>=2.1.0
-django-guardian==1.2.4
-django-filter>=0.9.2
-
-# wheel for PyPI installs
-wheel==0.24.0
-# twine for secured PyPI uploads
-twine==1.4.0
-
-# MkDocs for documentation previews/deploys
-mkdocs==0.11.1
+# The base set of requirements for REST framework is actually
+# just Django, but for the purposes of development and testing
+# there are a number of packages that it is useful to install.
+
+# Laying these out as seperate requirements files, allows us to
+# only included the relevent sets when running tox, and ensures
+# we are only ever declaring out dependancies in one place.
+
+-r requirements/requirements-optionals.txt
+-r requirements/requirements-testing.txt
+-r requirements/requirements-documentation.txt
+-r requirements/requirements-codestyle.txt
+-r requirements/requirements-packaging.txt
diff --git a/requirements/requirements-codestyle.txt b/requirements/requirements-codestyle.txt
new file mode 100644
index 00000000..4e2be24c
--- /dev/null
+++ b/requirements/requirements-codestyle.txt
@@ -0,0 +1,3 @@
+# PEP8 code linting, which we run on all commits.
+flake8==2.3.0
+pep8==1.6.2
diff --git a/requirements/requirements-documentation.txt b/requirements/requirements-documentation.txt
new file mode 100644
index 00000000..5009436e
--- /dev/null
+++ b/requirements/requirements-documentation.txt
@@ -0,0 +1,2 @@
+# MkDocs to build our documentation.
+mkdocs==0.11.1
diff --git a/requirements/requirements-optionals.txt b/requirements/requirements-optionals.txt
new file mode 100644
index 00000000..af9937cf
--- /dev/null
+++ b/requirements/requirements-optionals.txt
@@ -0,0 +1,4 @@
+# Optional packages which may be used with REST framework.
+markdown==2.5.2
+django-guardian==1.2.5
+django-filter==0.9.2
diff --git a/requirements/requirements-packaging.txt b/requirements/requirements-packaging.txt
new file mode 100644
index 00000000..7782d63a
--- /dev/null
+++ b/requirements/requirements-packaging.txt
@@ -0,0 +1,11 @@
+# Wheel for PyPI installs.
+wheel==0.24.0
+
+# Twine for secured PyPI uploads.
+twine==1.4.0
+
+# Transifex client for managing translation resources.
+transifex-client==0.10
+
+# The pip-review tool for checking package upgrades.
+pip-tools==0.3.5
diff --git a/requirements/requirements-testing.txt b/requirements/requirements-testing.txt
new file mode 100644
index 00000000..a8d5d322
--- /dev/null
+++ b/requirements/requirements-testing.txt
@@ -0,0 +1,3 @@
+# PyTest for running the tests.
+pytest==2.6.4
+pytest-django==2.8.0
diff --git a/tox.ini b/tox.ini
index 76f4f09b..b96b4939 100644
--- a/tox.ini
+++ b/tox.ini
@@ -15,18 +15,17 @@ deps =
django16: Django==1.6.3 # Should track minimum supported
django17: Django==1.7.2 # Should track maximum supported
django18alpha: https://www.djangoproject.com/download/1.8a1/tarball/
- django-guardian==1.2.4
- pytest-django==2.8.0
- django-filter==0.9.2
- markdown>=2.1.0
+ -rrequirements/requirements-testing.txt
+ -rrequirements/requirements-optionals.txt
[testenv:py27-flake8]
deps =
- pytest==2.6.4
- flake8==2.2.2
+ -rrequirements/requirements-testing.txt
+ -rrequirements/requirements-codestyle.txt
commands = ./runtests.py --lintonly
[testenv:py27-docs]
deps =
- mkdocs>=0.11.1
+ -rrequirements/requirements-testing.txt
+ -rrequirements/requirements-documentation.txt
commands = mkdocs build