[Python-modules-commits] [djangorestframework] 01/12: Import djangorestframework_3.4.0.orig.tar.gz

Brian May bam at moszumanska.debian.org
Fri Jul 15 10:42:29 UTC 2016


This is an automated email from the git hooks/post-receive script.

bam pushed a commit to branch master
in repository djangorestframework.

commit a05b6ba96710a9b0bf3f3ba34c84a6eb32d1cc53
Author: Brian May <bam at debian.org>
Date:   Fri Jul 15 18:47:44 2016 +1000

    Import djangorestframework_3.4.0.orig.tar.gz
---
 .gitignore                                         |   1 +
 .travis.yml                                        |  26 +-
 CONTRIBUTING.md                                    |   9 +-
 ISSUE_TEMPLATE.md                                  |  14 +
 PULL_REQUEST_TEMPLATE.md                           |   5 +
 README.md                                          |  28 +-
 docs/api-guide/authentication.md                   |  53 +--
 docs/api-guide/content-negotiation.md              |   2 +-
 docs/api-guide/fields.md                           |  13 +-
 docs/api-guide/filtering.md                        |  18 +-
 docs/api-guide/format-suffixes.md                  |   2 +-
 docs/api-guide/generic-views.md                    |   2 +-
 docs/api-guide/pagination.md                       |   4 +-
 docs/api-guide/parsers.md                          |  14 +-
 docs/api-guide/permissions.md                      |   4 +-
 docs/api-guide/relations.md                        |   2 +-
 docs/api-guide/renderers.md                        |   8 +-
 docs/api-guide/requests.md                         |   4 -
 docs/api-guide/routers.md                          |   6 +-
 docs/api-guide/schemas.md                          | 422 +++++++++++++++++++
 docs/api-guide/serializers.md                      |  45 ++-
 docs/api-guide/settings.md                         |   4 +-
 docs/api-guide/throttling.md                       |   2 +-
 docs/api-guide/validators.md                       |  73 +++-
 docs/api-guide/views.md                            |   6 +-
 docs/api-guide/viewsets.md                         |   2 +-
 docs/img/corejson-format.png                       | Bin 0 -> 20499 bytes
 docs/img/premium/rover-readme.png                  | Bin 0 -> 53118 bytes
 docs/img/premium/sentry-readme.png                 | Bin 0 -> 24584 bytes
 docs/img/premium/stream-readme.png                 | Bin 0 -> 19341 bytes
 docs/img/rover.png                                 | Bin 0 -> 61259 bytes
 docs/index.md                                      |  60 ++-
 docs/topics/2.3-announcement.md                    |   2 +-
 docs/topics/2.4-announcement.md                    |   2 +-
 docs/topics/3.0-announcement.md                    |   4 +-
 docs/topics/3.1-announcement.md                    |   4 +-
 docs/topics/3.2-announcement.md                    |   2 +-
 docs/topics/3.4-announcement.md                    | 194 +++++++++
 docs/topics/api-clients.md                         | 325 +++++++++++++++
 docs/topics/browsable-api.md                       |   2 +-
 docs/topics/contributing.md                        |   2 +-
 docs/topics/funding.md                             | 189 +++++----
 docs/topics/mozilla-grant.md                       |  67 +++
 docs/topics/project-management.md                  |   2 +-
 docs/topics/release-notes.md                       | 180 ++++++++-
 docs/topics/third-party-resources.md               |  18 +-
 docs/tutorial/2-requests-and-responses.md          |  10 +-
 docs/tutorial/3-class-based-views.md               |  14 +-
 docs/tutorial/4-authentication-and-permissions.md  |   2 +-
 .../5-relationships-and-hyperlinked-apis.md        |   6 +-
 docs/tutorial/6-viewsets-and-routers.md            |  26 +-
 docs/tutorial/7-schemas-and-client-libraries.md    | 221 ++++++++++
 docs/tutorial/quickstart.md                        |   6 +-
 docs_theme/base.html                               |  18 +-
 mkdocs.yml                                         |   6 +
 requirements/requirements-codestyle.txt            |   2 +-
 requirements/requirements-documentation.txt        |   2 +-
 requirements/requirements-optionals.txt            |   5 +-
 requirements/requirements-packaging.txt            |   4 +-
 requirements/requirements-testing.txt              |   2 +-
 rest_framework/__init__.py                         |   2 +-
 rest_framework/authentication.py                   |  11 +-
 .../authtoken/migrations/0001_initial.py           |   2 +-
 .../migrations/0002_auto_20160226_1747.py          |   2 +-
 rest_framework/authtoken/models.py                 |  12 +-
 rest_framework/compat.py                           | 165 ++++----
 rest_framework/decorators.py                       |   1 -
 rest_framework/exceptions.py                       |   4 +-
 rest_framework/fields.py                           |  59 +--
 rest_framework/filters.py                          | 122 ++++--
 rest_framework/generics.py                         |   3 -
 rest_framework/locale/ach/LC_MESSAGES/django.mo    | Bin 513 -> 513 bytes
 rest_framework/locale/ach/LC_MESSAGES/django.po    | 186 ++++-----
 rest_framework/locale/ar/LC_MESSAGES/django.mo     | Bin 4766 -> 5476 bytes
 rest_framework/locale/ar/LC_MESSAGES/django.po     | 215 +++++-----
 rest_framework/locale/be/LC_MESSAGES/django.mo     | Bin 655 -> 655 bytes
 rest_framework/locale/be/LC_MESSAGES/django.po     | 186 ++++-----
 rest_framework/locale/ca/LC_MESSAGES/django.mo     | Bin 9646 -> 9646 bytes
 rest_framework/locale/ca/LC_MESSAGES/django.po     | 186 ++++-----
 rest_framework/locale/ca_ES/LC_MESSAGES/django.mo  | Bin 528 -> 528 bytes
 rest_framework/locale/ca_ES/LC_MESSAGES/django.po  | 186 ++++-----
 rest_framework/locale/cs/LC_MESSAGES/django.mo     | Bin 9031 -> 9031 bytes
 rest_framework/locale/cs/LC_MESSAGES/django.po     | 186 ++++-----
 rest_framework/locale/da/LC_MESSAGES/django.mo     | Bin 9881 -> 9881 bytes
 rest_framework/locale/da/LC_MESSAGES/django.po     | 186 ++++-----
 rest_framework/locale/da_DK/LC_MESSAGES/django.mo  | Bin 529 -> 529 bytes
 rest_framework/locale/da_DK/LC_MESSAGES/django.po  | 186 ++++-----
 rest_framework/locale/de/LC_MESSAGES/django.mo     | Bin 10364 -> 10609 bytes
 rest_framework/locale/de/LC_MESSAGES/django.po     | 202 +++++-----
 rest_framework/locale/el/LC_MESSAGES/django.mo     | Bin 512 -> 13507 bytes
 rest_framework/locale/el/LC_MESSAGES/django.po     | 379 +++++++++--------
 rest_framework/locale/el_GR/LC_MESSAGES/django.mo  | Bin 527 -> 527 bytes
 rest_framework/locale/el_GR/LC_MESSAGES/django.po  | 186 ++++-----
 rest_framework/locale/en/LC_MESSAGES/django.mo     | Bin 10002 -> 10226 bytes
 rest_framework/locale/en/LC_MESSAGES/django.po     | 186 ++++-----
 rest_framework/locale/en_AU/LC_MESSAGES/django.mo  | Bin 532 -> 532 bytes
 rest_framework/locale/en_AU/LC_MESSAGES/django.po  | 186 ++++-----
 rest_framework/locale/en_CA/LC_MESSAGES/django.mo  | Bin 529 -> 529 bytes
 rest_framework/locale/en_CA/LC_MESSAGES/django.po  | 186 ++++-----
 rest_framework/locale/en_US/LC_MESSAGES/django.mo  | Bin 378 -> 378 bytes
 rest_framework/locale/en_US/LC_MESSAGES/django.po  | 182 ++++-----
 rest_framework/locale/es/LC_MESSAGES/django.mo     | Bin 10782 -> 10779 bytes
 rest_framework/locale/es/LC_MESSAGES/django.po     | 192 ++++-----
 rest_framework/locale/et/LC_MESSAGES/django.mo     | Bin 8732 -> 8732 bytes
 rest_framework/locale/et/LC_MESSAGES/django.po     | 186 ++++-----
 rest_framework/locale/fa/LC_MESSAGES/django.mo     | Bin 507 -> 507 bytes
 rest_framework/locale/fa/LC_MESSAGES/django.po     | 186 ++++-----
 rest_framework/locale/fa_IR/LC_MESSAGES/django.mo  | Bin 520 -> 520 bytes
 rest_framework/locale/fa_IR/LC_MESSAGES/django.po  | 186 ++++-----
 rest_framework/locale/fi/LC_MESSAGES/django.mo     | Bin 9993 -> 9993 bytes
 rest_framework/locale/fi/LC_MESSAGES/django.po     | 186 ++++-----
 rest_framework/locale/fr/LC_MESSAGES/django.mo     | Bin 10770 -> 10770 bytes
 rest_framework/locale/fr/LC_MESSAGES/django.po     | 186 ++++-----
 rest_framework/locale/fr_CA/LC_MESSAGES/django.mo  | Bin 527 -> 527 bytes
 rest_framework/locale/fr_CA/LC_MESSAGES/django.po  | 186 ++++-----
 rest_framework/locale/gl/LC_MESSAGES/django.mo     | Bin 515 -> 515 bytes
 rest_framework/locale/gl/LC_MESSAGES/django.po     | 186 ++++-----
 rest_framework/locale/gl_ES/LC_MESSAGES/django.mo  | Bin 669 -> 669 bytes
 rest_framework/locale/gl_ES/LC_MESSAGES/django.po  | 186 ++++-----
 rest_framework/locale/he_IL/LC_MESSAGES/django.mo  | Bin 528 -> 528 bytes
 rest_framework/locale/he_IL/LC_MESSAGES/django.po  | 186 ++++-----
 rest_framework/locale/hu/LC_MESSAGES/django.mo     | Bin 9123 -> 9123 bytes
 rest_framework/locale/hu/LC_MESSAGES/django.po     | 186 ++++-----
 rest_framework/locale/id/LC_MESSAGES/django.mo     | Bin 510 -> 510 bytes
 rest_framework/locale/id/LC_MESSAGES/django.po     | 186 ++++-----
 rest_framework/locale/it/LC_MESSAGES/django.mo     | Bin 10359 -> 10359 bytes
 rest_framework/locale/it/LC_MESSAGES/django.po     | 186 ++++-----
 rest_framework/locale/ja/LC_MESSAGES/django.mo     | Bin 11941 -> 11941 bytes
 rest_framework/locale/ja/LC_MESSAGES/django.po     | 186 ++++-----
 rest_framework/locale/ko_KR/LC_MESSAGES/django.mo  | Bin 10022 -> 10022 bytes
 rest_framework/locale/ko_KR/LC_MESSAGES/django.po  | 186 ++++-----
 rest_framework/locale/mk/LC_MESSAGES/django.mo     | Bin 10623 -> 10623 bytes
 rest_framework/locale/mk/LC_MESSAGES/django.po     | 186 ++++-----
 rest_framework/locale/nb/LC_MESSAGES/django.mo     | Bin 9803 -> 9803 bytes
 rest_framework/locale/nb/LC_MESSAGES/django.po     | 186 ++++-----
 rest_framework/locale/nl/LC_MESSAGES/django.mo     | Bin 9165 -> 10373 bytes
 rest_framework/locale/nl/LC_MESSAGES/django.po     | 303 +++++++-------
 rest_framework/locale/nn/LC_MESSAGES/django.mo     | Bin 524 -> 524 bytes
 rest_framework/locale/nn/LC_MESSAGES/django.po     | 186 ++++-----
 rest_framework/locale/no/LC_MESSAGES/django.mo     | Bin 516 -> 516 bytes
 rest_framework/locale/no/LC_MESSAGES/django.po     | 186 ++++-----
 rest_framework/locale/pl/LC_MESSAGES/django.mo     | Bin 10799 -> 10801 bytes
 rest_framework/locale/pl/LC_MESSAGES/django.po     | 188 ++++-----
 rest_framework/locale/pt/LC_MESSAGES/django.mo     | Bin 517 -> 517 bytes
 rest_framework/locale/pt/LC_MESSAGES/django.po     | 186 ++++-----
 rest_framework/locale/pt_BR/LC_MESSAGES/django.mo  | Bin 10238 -> 10238 bytes
 rest_framework/locale/pt_BR/LC_MESSAGES/django.po  | 186 ++++-----
 rest_framework/locale/pt_PT/LC_MESSAGES/django.mo  | Bin 534 -> 534 bytes
 rest_framework/locale/pt_PT/LC_MESSAGES/django.po  | 186 ++++-----
 rest_framework/locale/ro/LC_MESSAGES/django.mo     | Bin 556 -> 10895 bytes
 rest_framework/locale/ro/LC_MESSAGES/django.po     | 379 +++++++++--------
 rest_framework/locale/ru/LC_MESSAGES/django.mo     | Bin 11360 -> 13430 bytes
 rest_framework/locale/ru/LC_MESSAGES/django.po     | 237 +++++------
 rest_framework/locale/sk/LC_MESSAGES/django.mo     | Bin 9411 -> 9411 bytes
 rest_framework/locale/sk/LC_MESSAGES/django.po     | 186 ++++-----
 rest_framework/locale/sv/LC_MESSAGES/django.mo     | Bin 10073 -> 10426 bytes
 rest_framework/locale/sv/LC_MESSAGES/django.po     | 206 +++++-----
 rest_framework/locale/tr/LC_MESSAGES/django.mo     | Bin 10548 -> 10550 bytes
 rest_framework/locale/tr/LC_MESSAGES/django.po     | 188 ++++-----
 rest_framework/locale/tr_TR/LC_MESSAGES/django.mo  | Bin 10520 -> 10522 bytes
 rest_framework/locale/tr_TR/LC_MESSAGES/django.po  | 188 ++++-----
 rest_framework/locale/uk/LC_MESSAGES/django.mo     | Bin 590 -> 13352 bytes
 rest_framework/locale/uk/LC_MESSAGES/django.po     | 381 +++++++++---------
 rest_framework/locale/vi/LC_MESSAGES/django.mo     | Bin 510 -> 510 bytes
 rest_framework/locale/vi/LC_MESSAGES/django.po     | 186 ++++-----
 rest_framework/locale/zh_CN/LC_MESSAGES/django.mo  | Bin 10007 -> 10007 bytes
 rest_framework/locale/zh_CN/LC_MESSAGES/django.po  | 186 ++++-----
 .../{zh-Hans => zh_Hans}/LC_MESSAGES/django.mo     | Bin 9796 -> 9796 bytes
 .../{zh-Hans => zh_Hans}/LC_MESSAGES/django.po     | 188 ++++-----
 .../{zh-Hant => zh_Hant}/LC_MESSAGES/django.mo     | Bin 529 -> 529 bytes
 .../{zh-Hant => zh_Hant}/LC_MESSAGES/django.po     | 186 ++++-----
 rest_framework/locale/zh_TW/LC_MESSAGES/django.mo  | Bin 522 -> 522 bytes
 rest_framework/locale/zh_TW/LC_MESSAGES/django.po  | 186 ++++-----
 rest_framework/metadata.py                         |   4 +-
 rest_framework/pagination.py                       |  65 ++-
 rest_framework/parsers.py                          |   5 -
 rest_framework/permissions.py                      |   2 +-
 rest_framework/relations.py                        |   9 +-
 rest_framework/renderers.py                        |  84 ++--
 rest_framework/request.py                          |   2 +
 rest_framework/response.py                         |   3 +-
 rest_framework/routers.py                          |  50 ++-
 rest_framework/schemas.py                          | 300 ++++++++++++++
 rest_framework/serializers.py                      |  53 ++-
 rest_framework/settings.py                         |   4 +-
 .../static/rest_framework/js/ajax-form.js          | 169 ++++----
 rest_framework/static/rest_framework/js/csrf.js    |  71 ++--
 rest_framework/static/rest_framework/js/default.js |  72 ++--
 .../static/rest_framework/js/jquery-1.11.3.min.js  |   5 -
 .../static/rest_framework/js/jquery-1.12.4.min.js  |   5 +
 rest_framework/templates/rest_framework/admin.html | 447 +++++++++++----------
 .../templates/rest_framework/admin/detail.html     |  12 +-
 .../templates/rest_framework/admin/list.html       |  34 +-
 .../templates/rest_framework/admin/list_value.html |  16 +-
 rest_framework/templates/rest_framework/base.html  | 438 ++++++++++----------
 .../rest_framework/horizontal/checkbox.html        |   2 +-
 .../horizontal/checkbox_multiple.html              |   2 +-
 .../templates/rest_framework/horizontal/input.html |   2 +-
 .../templates/rest_framework/horizontal/radio.html |   2 +-
 .../rest_framework/horizontal/select.html          |   2 +-
 .../rest_framework/horizontal/select_multiple.html |   2 +-
 .../rest_framework/horizontal/textarea.html        |   2 +-
 .../templates/rest_framework/raw_data_form.html    |   2 +-
 .../rest_framework/vertical/checkbox.html          |   2 +-
 .../rest_framework/vertical/checkbox_multiple.html |   2 +-
 .../templates/rest_framework/vertical/input.html   |   2 +-
 .../templates/rest_framework/vertical/radio.html   |   2 +-
 .../templates/rest_framework/vertical/select.html  |   2 +-
 .../rest_framework/vertical/select_multiple.html   |   2 +-
 .../rest_framework/vertical/textarea.html          |   2 +-
 rest_framework/test.py                             |  11 +-
 rest_framework/throttling.py                       |   2 +-
 rest_framework/urlpatterns.py                      |   2 +-
 rest_framework/utils/breadcrumbs.py                |   7 +-
 rest_framework/utils/encoders.py                   |  12 +-
 rest_framework/utils/html.py                       |   6 +-
 rest_framework/utils/model_meta.py                 |  63 +--
 rest_framework/utils/representation.py             |   8 +-
 rest_framework/utils/serializer_helpers.py         |   4 +-
 rest_framework/validators.py                       |  41 +-
 rest_framework/versioning.py                       |  13 +-
 rest_framework/views.py                            |  12 +-
 rest_framework/viewsets.py                         |   1 +
 runtests.py                                        |   2 +-
 schema-support                                     |   0
 setup.py                                           |   3 +-
 tests/browsable_api/test_browsable_api.py          |  22 +-
 tests/browsable_api/test_browsable_nested_api.py   |   4 +-
 tests/browsable_api/test_form_rendering.py         |  53 +++
 tests/browsable_api/views.py                       |   3 +-
 tests/conftest.py                                  |  19 +-
 tests/description.py                               |  25 --
 tests/models.py                                    |  29 +-
 tests/test_authentication.py                       | 235 ++++++++---
 tests/test_description.py                          |  16 +-
 tests/test_exceptions.py                           |  21 +
 tests/test_fields.py                               |  63 ++-
 tests/test_filters.py                              |  85 +++-
 tests/test_generics.py                             |   7 +-
 tests/test_htmlrenderer.py                         |   8 +-
 tests/test_metadata.py                             |  16 +-
 tests/test_middleware.py                           |   6 +-
 tests/test_model_serializer.py                     |  57 ++-
 tests/test_multitable_inheritance.py               |   4 +-
 tests/test_pagination.py                           |  13 +
 tests/test_permissions.py                          |   2 +
 tests/test_relations_generic.py                    |   2 +-
 tests/test_relations_hyperlink.py                  |  26 +-
 tests/test_relations_pk.py                         |  38 +-
 tests/test_relations_slug.py                       |   3 +
 tests/test_renderers.py                            |  16 +-
 tests/test_request.py                              |   9 +-
 tests/test_response.py                             |  21 +-
 tests/test_reverse.py                              |   5 +-
 tests/test_routers.py                              |  13 +-
 tests/test_schemas.py                              | 137 +++++++
 tests/test_serializer_bulk_update.py               |   2 +
 tests/test_serializer_nested.py                    |  29 ++
 tests/test_settings.py                             |   7 +-
 tests/test_testing.py                              |   5 +-
 tests/test_utils.py                                |  30 +-
 tests/test_validation.py                           |   1 +
 tests/test_validators.py                           |  85 ++++
 tests/test_versioning.py                           |  45 ++-
 tests/test_write_only_fields.py                    |   4 +-
 tests/utils.py                                     |  24 --
 tox.ini                                            |  19 +-
 267 files changed, 8993 insertions(+), 7122 deletions(-)

diff --git a/.gitignore b/.gitignore
index e9222c2..4176808 100644
--- a/.gitignore
+++ b/.gitignore
@@ -11,6 +11,7 @@
 /*.egg-info/
 /env/
 MANIFEST
+coverage.*
 
 !.gitignore
 !.travis.yml
diff --git a/.travis.yml b/.travis.yml
index 9aca4f3..c9d9a16 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,7 +1,7 @@
 language: python
 
 python:
-  - "3.5"
+    - "3.5"
 
 sudo: false
 
@@ -11,21 +11,28 @@ env:
     - TOX_ENV=py35-django19
     - TOX_ENV=py34-django19
     - TOX_ENV=py27-django19
+    - TOX_ENV=py35-django18
     - TOX_ENV=py34-django18
     - TOX_ENV=py33-django18
     - TOX_ENV=py32-django18
     - TOX_ENV=py27-django18
-    - TOX_ENV=py34-django17
-    - TOX_ENV=py33-django17
-    - TOX_ENV=py32-django17
-    - TOX_ENV=py27-django17
+    - TOX_ENV=py27-django110
+    - TOX_ENV=py35-django110
+    - TOX_ENV=py34-django110
+    - TOX_ENV=py27-djangomaster
+    - TOX_ENV=py34-djangomaster
+    - TOX_ENV=py35-djangomaster
 
 matrix:
-  fast_finish: true
+    fast_finish: true
+    allow_failures:
+      - env: TOX_ENV=py27-djangomaster
+      - env: TOX_ENV=py34-djangomaster
+      - env: TOX_ENV=py35-djangomaster
 
 install:
-  # Virtualenv < 14 is required to keep the Python 3.2 builds running.
-  - pip install tox "virtualenv<14"
+    # Virtualenv < 14 is required to keep the Python 3.2 builds running.
+    - pip install tox "virtualenv<14"
 
 script:
     - tox -e $TOX_ENV
@@ -33,3 +40,6 @@ script:
 after_success:
     - pip install codecov
     - codecov -e TOX_ENV
+
+notifications:
+    email: false
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index a383660..03865b7 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -33,7 +33,7 @@ Some tips on good issue reporting:
 * When describing issues try to phrase your ticket in terms of the *behavior* you think needs changing rather than the *code* you think need changing.
 * Search the issue list first for related items, and make sure you're running the latest version of REST framework before reporting an issue.
 * If reporting a bug, then try to include a pull request with a failing test case.  This will help us quickly identify if there is a valid issue, and make sure that it gets fixed more quickly if there is one.
-* Feature requests will often be closed with a recommendation that they be implemented outside of the core REST framework library.  Keeping new feature requests implemented as third party libraries allows us to keep down the maintenance overhead of REST framework, so that the focus can be on continued stability, bugfixes, and great documentation.
+* Feature requests will often be closed with a recommendation that they be implemented outside of the core REST framework library.  Keeping new feature requests implemented as third party libraries allows us to keep down the maintenance overhead of REST framework, so that the focus can be on continued stability, bug fixes, and great documentation.
 * Closing an issue doesn't necessarily mean the end of a discussion.  If you believe your issue has been closed incorrectly, explain why and we'll consider if it needs to be reopened.
 
 ## Triaging issues
@@ -118,10 +118,6 @@ Always run the tests before submitting pull requests, and ideally run `tox` in o
 
 Once you've made a pull request take a look at the Travis build status in the GitHub interface and make sure the tests are running as you'd expect.
 
-![Travis status][travis-status]
-
-*Above: Travis build notifications*
-
 ## Managing compatibility issues
 
 Sometimes, in order to ensure your code works on various different versions of Django, Python or third party libraries, you'll need to run slightly different code depending on the environment.  Any code that branches in this way should be isolated into the `compat.py` module, and should provide a single common interface that the rest of the codebase can use.
@@ -203,9 +199,8 @@ If you want to draw attention to a note or warning, use a pair of enclosing line
 [so-filter]: http://stackexchange.com/filters/66475/rest-framework
 [issues]: https://github.com/tomchristie/django-rest-framework/issues?state=open
 [pep-8]: http://www.python.org/dev/peps/pep-0008/
-[travis-status]: ../img/travis-status.png
 [pull-requests]: https://help.github.com/articles/using-pull-requests
-[tox]: http://tox.readthedocs.org/en/latest/
+[tox]: https://tox.readthedocs.io/en/latest/
 [markdown]: http://daringfireball.net/projects/markdown/basics
 [docs]: https://github.com/tomchristie/django-rest-framework/tree/master/docs
 [mou]: http://mouapp.com/
diff --git a/ISSUE_TEMPLATE.md b/ISSUE_TEMPLATE.md
new file mode 100644
index 0000000..55b3e53
--- /dev/null
+++ b/ISSUE_TEMPLATE.md
@@ -0,0 +1,14 @@
+## Checklist
+
+- [ ] I have verified that that issue exists against the `master` branch of Django REST framework.
+- [ ] I have searched for similar issues in both open and closed tickets and cannot find a duplicate.
+- [ ] This is not a usage question. (Those should be directed to the [discussion group](https://groups.google.com/forum/#!forum/django-rest-framework) instead.)
+- [ ] This cannot be dealt with as a third party library. (We prefer new functionality to be [in the form of third party libraries](http://www.django-rest-framework.org/topics/third-party-resources/#about-third-party-packages) where possible.)
+- [ ] I have reduced the issue to the simplest possible case.
+- [ ] I have included a failing test as a pull request. (If you are unable to do so we can still accept the issue.)
+
+## Steps to reproduce
+
+## Expected behavior
+
+## Actual behavior
diff --git a/PULL_REQUEST_TEMPLATE.md b/PULL_REQUEST_TEMPLATE.md
new file mode 100644
index 0000000..49f980c
--- /dev/null
+++ b/PULL_REQUEST_TEMPLATE.md
@@ -0,0 +1,5 @@
+*Note*: Before submitting this pull request, please review our [contributing guidelines](https://github.com/tomchristie/django-rest-framework/blob/master/CONTRIBUTING.md#pull-requests).
+
+## Description
+
+Please describe your pull request. If it fixes a bug or resolves a feature request, be sure to link to that issue. When linking to an issue, please use `refs #...` in the description of the pull request.
diff --git a/README.md b/README.md
index 862fb0e..a8e1afb 100644
--- a/README.md
+++ b/README.md
@@ -3,6 +3,7 @@
 [![build-status-image]][travis]
 [![coverage-status-image]][codecov]
 [![pypi-version]][pypi]
+[![Gitter](https://badges.gitter.im/tomchristie/django-rest-framework.svg)](https://gitter.im/tomchristie/django-rest-framework?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
 
 **Awesome web-browsable Web APIs.**
 
@@ -10,9 +11,23 @@ Full documentation for the project is available at [http://www.django-rest-frame
 
 ---
 
-**Note**: We have now released Django REST framework 3.3. For older codebases you may want to refer to the version 2.4.4 [source code][2.4-code], and [documentation][2.4-docs].
+# Funding
 
-For more details see the 3.3 [announcement][3.3-announcement] and [release notes][3.3-release-notes].
+REST framework is a *collaboratively funded project*. If you use
+REST framework commercially we strongly encourage you to invest in its
+continued development by **[signing up for a paid plan][funding]**.
+
+The initial aim is to provide a single full-time position on REST framework.
+Right now we're over 58% of the way towards achieving that.
+*Every single sign-up makes a significant impact.*
+
+<p align="center">
+  <a href="http://jobs.rover.com/"><img src="https://raw.githubusercontent.com/tomchristie/django-rest-framework/master/docs/img/premium/rover-readme.png"/></a>
+  <a href="https://getsentry.com/welcome/"><img src="https://raw.githubusercontent.com/tomchristie/django-rest-framework/master/docs/img/premium/sentry-readme.png"/></a>
+  <a href="https://getstream.io/?utm_source=drf&utm_medium=banner&utm_campaign=drf"><img src="https://raw.githubusercontent.com/tomchristie/django-rest-framework/master/docs/img/premium/stream-readme.png"/></a>
+</p>
+
+*Many thanks to all our [wonderful sponsors][sponsors], and in particular to our premium backers, [Rover](http://jobs.rover.com/), [Sentry](https://getsentry.com/welcome/), and [Stream](https://getstream.io/?utm_source=drf&utm_medium=banner&utm_campaign=drf).*
 
 ---
 
@@ -37,7 +52,7 @@ There is a live example API for testing purposes, [available here][sandbox].
 # Requirements
 
 * Python (2.7, 3.2, 3.3, 3.4, 3.5)
-* Django (1.7, 1.8, 1.9)
+* Django (1.8, 1.9, 1.10)
 
 # Installation
 
@@ -169,6 +184,9 @@ Send a description of the issue via email to [rest-framework-security at googlegrou
 [group]: https://groups.google.com/forum/?fromgroups#!forum/django-rest-framework
 [sandbox]: http://restframework.herokuapp.com/
 
+[funding]: https://fund.django-rest-framework.org/topics/funding/
+[sponsors]: https://fund.django-rest-framework.org/topics/funding/#our-sponsors
+
 [oauth1-section]: http://www.django-rest-framework.org/api-guide/authentication/#django-rest-framework-oauth
 [oauth2-section]: http://www.django-rest-framework.org/api-guide/authentication/#django-oauth-toolkit
 [serializer-section]: http://www.django-rest-framework.org/api-guide/serializers/#serializers
@@ -183,7 +201,3 @@ Send a description of the issue via email to [rest-framework-security at googlegrou
 
 [docs]: http://www.django-rest-framework.org/
 [security-mail]: mailto:rest-framework-security at googlegroups.com
-[2.4-code]: https://github.com/tomchristie/django-rest-framework/tree/version-2.4.x
-[2.4-docs]: http://tomchristie.github.io/rest-framework-2-docs/
-[3.3-announcement]: http://www.django-rest-framework.org/topics/3.3-announcement/
-[3.3-release-notes]: http://www.django-rest-framework.org/topics/release-notes/#33x-series
diff --git a/docs/api-guide/authentication.md b/docs/api-guide/authentication.md
index 3d1cfd1..8d880b0 100644
--- a/docs/api-guide/authentication.md
+++ b/docs/api-guide/authentication.md
@@ -44,7 +44,7 @@ The default authentication schemes may be set globally, using the `DEFAULT_AUTHE
     }
 
 You can also set the authentication scheme on a per-view or per-viewset basis,
-using the `APIView` class based views.
+using the `APIView` class-based views.
 
     from rest_framework.authentication import SessionAuthentication, BasicAuthentication
     from rest_framework.permissions import IsAuthenticated
@@ -128,11 +128,10 @@ To use the `TokenAuthentication` scheme you'll need to [configure the authentica
 
 ---
 
-**Note:** Make sure to run `manage.py syncdb` after changing your settings. The `rest_framework.authtoken` app provides both Django (from v1.7) and South database migrations. See [Schema migrations](#schema-migrations) below.
+**Note:** Make sure to run `manage.py migrate` after changing your settings. The `rest_framework.authtoken` app provides Django database migrations.
 
 ---
 
-
 You'll also need to create tokens for your users.
 
     from rest_framework.authtoken.models import Token
@@ -144,6 +143,8 @@ For clients to authenticate, the token key should be included in the `Authorizat
 
     Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b
 
+**Note:** If you want to use a different keyword in the header, such as `Bearer`, simply subclass `TokenAuthentication` and set the `keyword` class variable.
+
 If successfully authenticated, `TokenAuthentication` provides the following credentials.
 
 * `request.user` will be a Django `User` instance.
@@ -206,6 +207,10 @@ The `obtain_auth_token` view will return a JSON response when valid `username` a
 
 Note that the default `obtain_auth_token` view explicitly uses JSON requests and responses, rather than using default renderer and parser classes in your settings.  If you need a customized version of the `obtain_auth_token` view, you can do so by overriding the `ObtainAuthToken` view class, and using that in your url conf instead.
 
+By default there are no permissions or throttling applied to the  `obtain_auth_token` view. If you do wish to apply throttling you'll need to override the view class,
+and include them using the `throttle_classes` attribute.
+
+
 ##### With Django admin
 
 It is also possible to create Tokens manually through admin interface. In case you are using a large user base, we recommend that you monkey patch the `TokenAdmin` class to customize it to your needs, more specifically by declaring the `user` field as `raw_field`.
@@ -217,38 +222,6 @@ It is also possible to create Tokens manually through admin interface. In case y
     TokenAdmin.raw_id_fields = ('user',)
 
 
-#### Schema migrations
-
-The `rest_framework.authtoken` app includes both Django native migrations (for Django versions >1.7) and South migrations (for Django versions <1.7) that will create the authtoken table.
-
-----
-
-**Note**: From REST Framework v2.4.0 using South with Django <1.7 requires upgrading South v1.0+
-
-----
-
-
-If you're using a [custom user model][custom-user-model] you'll need to make sure that any initial migration that creates the user table runs before the authtoken table is created.
-
-You can do so by inserting a `needed_by` attribute in your user migration:
-
-    class Migration:
-
-        needed_by = (
-            ('authtoken', '0001_initial'),
-        )
-
-        def forwards(self):
-            ...
-
-For more details, see the [south documentation on dependencies][south-dependencies].
-
-Also note that if you're using a `post_save` signal to create tokens, then the first time you create the database tables, you'll need to ensure any migrations are run prior to creating any superusers.  For example:
-
-    python manage.py syncdb --noinput  # Won't create a superuser just yet, due to `--noinput`.
-    python manage.py migrate
-    python manage.py createsuperuser
-
 ## SessionAuthentication
 
 This authentication scheme uses Django's default session backend for authentication.  Session authentication is appropriate for AJAX clients that are running in the same session context as your website.
@@ -392,9 +365,7 @@ HTTP Signature (currently a [IETF draft][http-signature-ietf-draft]) provides a
 [throttling]: throttling.md
 [csrf-ajax]: https://docs.djangoproject.com/en/dev/ref/csrf/#ajax
 [mod_wsgi_official]: http://code.google.com/p/modwsgi/wiki/ConfigurationDirectives#WSGIPassAuthorization
-[custom-user-model]: https://docs.djangoproject.com/en/dev/topics/auth/customizing/#specifying-a-custom-user-model
-[south-dependencies]: http://south.readthedocs.org/en/latest/dependencies.html
-[django-oauth-toolkit-getting-started]: https://django-oauth-toolkit.readthedocs.org/en/latest/rest-framework/getting_started.html
+[django-oauth-toolkit-getting-started]: https://django-oauth-toolkit.readthedocs.io/en/latest/rest-framework/getting_started.html
 [django-rest-framework-oauth]: http://jpadilla.github.io/django-rest-framework-oauth/
 [django-rest-framework-oauth-authentication]: http://jpadilla.github.io/django-rest-framework-oauth/authentication/
 [django-rest-framework-oauth-permissions]: http://jpadilla.github.io/django-rest-framework-oauth/permissions/
@@ -403,7 +374,7 @@ HTTP Signature (currently a [IETF draft][http-signature-ietf-draft]) provides a
 [oauth-1.0a]: http://oauth.net/core/1.0a
 [django-oauth-plus]: http://code.larlet.fr/django-oauth-plus
 [django-oauth2-provider]: https://github.com/caffeinehit/django-oauth2-provider
-[django-oauth2-provider-docs]: https://django-oauth2-provider.readthedocs.org/en/latest/
+[django-oauth2-provider-docs]: https://django-oauth2-provider.readthedocs.io/en/latest/
 [rfc6749]: http://tools.ietf.org/html/rfc6749
 [django-oauth-toolkit]: https://github.com/evonove/django-oauth-toolkit
 [evonove]: https://github.com/evonove/
@@ -417,9 +388,9 @@ HTTP Signature (currently a [IETF draft][http-signature-ietf-draft]) provides a
 [djangorestframework-httpsignature]: https://github.com/etoccalino/django-rest-framework-httpsignature
 [amazon-http-signature]: http://docs.aws.amazon.com/general/latest/gr/signature-version-4.html
 [http-signature-ietf-draft]: https://datatracker.ietf.org/doc/draft-cavage-http-signatures/
-[hawkrest]: http://hawkrest.readthedocs.org/en/latest/
+[hawkrest]: https://hawkrest.readthedocs.io/en/latest/
 [hawk]: https://github.com/hueniverse/hawk
-[mohawk]: http://mohawk.readthedocs.org/en/latest/
+[mohawk]: https://mohawk.readthedocs.io/en/latest/
 [mac]: http://tools.ietf.org/html/draft-hammer-oauth-v2-mac-token-05
 [djoser]: https://github.com/sunscrapers/djoser
 [django-rest-auth]: https://github.com/Tivix/django-rest-auth
diff --git a/docs/api-guide/content-negotiation.md b/docs/api-guide/content-negotiation.md
index bc3b09f..bd408fe 100644
--- a/docs/api-guide/content-negotiation.md
+++ b/docs/api-guide/content-negotiation.md
@@ -77,7 +77,7 @@ The default content negotiation class may be set globally, using the `DEFAULT_CO
         'DEFAULT_CONTENT_NEGOTIATION_CLASS': 'myapp.negotiation.IgnoreClientContentNegotiation',
     }
 
-You can also set the content negotiation used for an individual view, or viewset, using the `APIView` class based views.
+You can also set the content negotiation used for an individual view, or viewset, using the `APIView` class-based views.
 
 	from myapp.negotiation import IgnoreClientContentNegotiation
     from rest_framework.response import Response
diff --git a/docs/api-guide/fields.md b/docs/api-guide/fields.md
index 5acaf12..f95608a 100644
--- a/docs/api-guide/fields.md
+++ b/docs/api-guide/fields.md
@@ -81,7 +81,13 @@ A text string that may be used as a description of the field in HTML form fields
 
 ### `initial`
 
-A value that should be used for pre-populating the value of HTML form fields.
+A value that should be used for pre-populating the value of HTML form fields. You may pass a callable to it, just as
+you may do with any regular Django `Field`:
+
+    import datetime
+    from rest_framework import serializers
+    class ExampleSerializer(serializers.Serializer):
+        day = serializers.DateField(initial=datetime.date.today)
 
 ### `style`
 
@@ -255,9 +261,10 @@ Corresponds to `django.db.models.fields.DecimalField`.
 
 - `max_digits` The maximum number of digits allowed in the number. Note that this number must be greater than or equal to decimal_places.
 - `decimal_places` The number of decimal places to store with the number.
-- `coerce_to_string` Set to `True` if string values should be returned for the representation, or `False` if `Decimal` objects should be returned. Defaults to the same value as the `COERCE_DECIMAL_TO_STRING` settings key, which will be `True` unless overridden. If `Decimal` objects are returned by the serializer, then the final output format will be determined by the renderer.
+- `coerce_to_string` Set to `True` if string values should be returned for the representation, or `False` if `Decimal` objects should be returned. Defaults to the same value as the `COERCE_DECIMAL_TO_STRING` settings key, which will be `True` unless overridden. If `Decimal` objects are returned by the serializer, then the final output format will be determined by the renderer. Note that setting `localize` will force the value to `True`.
 - `max_value` Validate that the number provided is no greater than this value.
 - `min_value` Validate that the number provided is no less than this value.
+- `localize` Set to `True` to enable localization of input and output based on the current locale. This will also force `coerce_to_string` to `True`. Defaults to `False`. Note that data formatting is enabled if you have set `USE_L10N=True` in your settings file.
 
 #### Example usage
 
@@ -664,7 +671,7 @@ The [django-rest-framework-hstore][django-rest-framework-hstore] package provide
 [strftime]: http://docs.python.org/2/library/datetime.html#strftime-and-strptime-behavior
 [django-widgets]: https://docs.djangoproject.com/en/dev/ref/forms/widgets/
 [iso8601]: http://www.w3.org/TR/NOTE-datetime
-[drf-compound-fields]: http://drf-compound-fields.readthedocs.org
+[drf-compound-fields]: https://drf-compound-fields.readthedocs.io
 [drf-extra-fields]: https://github.com/Hipo/drf-extra-fields
 [djangorestframework-recursive]: https://github.com/heywbj/django-rest-framework-recursive
 [django-rest-framework-gis]: https://github.com/djangonauts/django-rest-framework-gis
diff --git a/docs/api-guide/filtering.md b/docs/api-guide/filtering.md
index c323007..8664dcc 100644
--- a/docs/api-guide/filtering.md
+++ b/docs/api-guide/filtering.md
@@ -96,7 +96,7 @@ The default filter backends may be set globally, using the `DEFAULT_FILTER_BACKE
     }
 
 You can also set the filter backends on a per-view, or per-viewset basis,
-using the `GenericAPIView` class based views.
+using the `GenericAPIView` class-based views.
 
     from django.contrib.auth.models import User
     from myapp.serializers import UserSerializer
@@ -105,7 +105,7 @@ using the `GenericAPIView` class based views.
 
     class UserListView(generics.ListAPIView):
         queryset = User.objects.all()
-        serializer = UserSerializer
+        serializer_class = UserSerializer
         filter_backends = (filters.DjangoFilterBackend,)
 
 ## Filtering and object lookups
@@ -178,8 +178,8 @@ For more advanced filtering requirements you can specify a `FilterSet` class tha
     from rest_framework import generics
 
     class ProductFilter(filters.FilterSet):
-        min_price = django_filters.NumberFilter(name="price", lookup_type='gte')
-        max_price = django_filters.NumberFilter(name="price", lookup_type='lte')
+        min_price = django_filters.NumberFilter(name="price", lookup_expr='gte')
+        max_price = django_filters.NumberFilter(name="price", lookup_expr='lte')
         class Meta:
             model = Product
             fields = ['category', 'in_stock', 'min_price', 'max_price']
@@ -257,7 +257,7 @@ The `SearchFilter` class will only be applied if the view has a `search_fields`
 
     class UserListView(generics.ListAPIView):
         queryset = User.objects.all()
-        serializer = UserSerializer
+        serializer_class = UserSerializer
         filter_backends = (filters.SearchFilter,)
         search_fields = ('username', 'email')
 
@@ -380,7 +380,7 @@ A complete example using both `DjangoObjectPermissionsFilter` and `DjangoObjectP
     	'change' or 'delete' permissions.
 		"""
         queryset = Event.objects.all()
-        serializer = EventSerializer
+        serializer_class = EventSerializer
         filter_backends = (filters.DjangoObjectPermissionsFilter,)
         permission_classes = (myapp.permissions.CustomObjectPermissions,)
 
@@ -435,9 +435,9 @@ The [djangorestframework-word-filter][django-rest-framework-word-search-filter]
 
 [cite]: https://docs.djangoproject.com/en/dev/topics/db/queries/#retrieving-specific-objects-with-filters
 [django-filter]: https://github.com/alex/django-filter
-[django-filter-docs]: https://django-filter.readthedocs.org/en/latest/index.html
-[guardian]: https://django-guardian.readthedocs.org/
-[view-permissions]: https://django-guardian.readthedocs.org/en/latest/userguide/assign.html
+[django-filter-docs]: https://django-filter.readthedocs.io/en/latest/index.html
+[guardian]: https://django-guardian.readthedocs.io/
+[view-permissions]: https://django-guardian.readthedocs.io/en/latest/userguide/assign.html
 [view-permissions-blogpost]: http://blog.nyaruka.com/adding-a-view-permission-to-django-models
 [nullbooleanselect]: https://github.com/django/django/blob/master/django/forms/widgets.py
 [search-django-admin]: https://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.search_fields
diff --git a/docs/api-guide/format-suffixes.md b/docs/api-guide/format-suffixes.md
index 13717b0..05dde47 100644
--- a/docs/api-guide/format-suffixes.md
+++ b/docs/api-guide/format-suffixes.md
@@ -42,7 +42,7 @@ When using `format_suffix_patterns`, you must make sure to add the `'format'` ke
     def comment_list(request, format=None):
         # do stuff...
 
-Or with class based views:
+Or with class-based views:
 
     class CommentList(APIView):
         def get(self, request, format=None):
diff --git a/docs/api-guide/generic-views.md b/docs/api-guide/generic-views.md
index e6e3005..d7dc30c 100644
--- a/docs/api-guide/generic-views.md
+++ b/docs/api-guide/generic-views.md
@@ -7,7 +7,7 @@ source: mixins.py
 >
 > — [Django Documentation][cite]
 
-One of the key benefits of class based views is the way they allow you to compose bits of reusable behavior.  REST framework takes advantage of this by providing a number of pre-built views that provide for commonly used patterns.
+One of the key benefits of class-based views is the way they allow you to compose bits of reusable behavior.  REST framework takes advantage of this by providing a number of pre-built views that provide for commonly used patterns.
 
 The generic views provided by REST framework allow you to quickly build API views that map closely to your database models.
 
diff --git a/docs/api-guide/pagination.md b/docs/api-guide/pagination.md
index f704a32..0dd935b 100644
--- a/docs/api-guide/pagination.md
+++ b/docs/api-guide/pagination.md
@@ -47,14 +47,14 @@ You can then apply your new style to a view using the `.pagination_class` attrib
 
     class BillingRecordsView(generics.ListAPIView):
         queryset = Billing.objects.all()
-        serializer = BillingRecordsSerializer
+        serializer_class = BillingRecordsSerializer
         pagination_class = LargeResultsSetPagination
 
 Or apply the style globally, using the `DEFAULT_PAGINATION_CLASS` settings key. For example:
 
     REST_FRAMEWORK = {
         'DEFAULT_PAGINATION_CLASS': 'apps.core.pagination.StandardResultsSetPagination'
-        }
+    }
 
 ---
 
diff --git a/docs/api-guide/parsers.md b/docs/api-guide/parsers.md
index 84fd6e5..ef2859f 100644
--- a/docs/api-guide/parsers.md
+++ b/docs/api-guide/parsers.md
@@ -35,7 +35,7 @@ The default set of parsers may be set globally, using the `DEFAULT_PARSER_CLASSE
     }
 
 You can also set the parsers used for an individual view, or viewset,
-using the `APIView` class based views.
+using the `APIView` class-based views.
 
     from rest_framework.parsers import JSONParser
     from rest_framework.response import Response
@@ -51,7 +51,7 @@ using the `APIView` class based views.
             return Response({'received data': request.data})
 
 Or, if you're using the `@api_view` decorator with function based views.
-    
+
     from rest_framework.decorators import api_view
     from rest_framework.decorators import parser_classes
 
@@ -93,7 +93,9 @@ You will typically want to use both `FormParser` and `MultiPartParser` together
 
 Parses raw file upload content.  The `request.data` property will be a dictionary with a single key `'file'` containing the uploaded file.
 
-If the view used with `FileUploadParser` is called with a `filename` URL keyword argument, then that argument will be used as the filename.  If it is called without a `filename` URL keyword argument, then the client must set the filename in the `Content-Disposition` HTTP header.  For example `Content-Disposition: attachment; filename=upload.jpg`.
+If the view used with `FileUploadParser` is called with a `filename` URL keyword argument, then that argument will be used as the filename.
+
+If it is called without a `filename` URL keyword argument, then the client must set the filename in the `Content-Disposition` HTTP header.  For example `Content-Disposition: attachment; filename=upload.jpg`.
 
 **.media_type**: `*/*`
 
@@ -105,6 +107,7 @@ If the view used with `FileUploadParser` is called with a `filename` URL keyword
 
 ##### Basic usage example:
 
+    # views.py
     class FileUploadView(views.APIView):
         parser_classes = (FileUploadParser,)
 
@@ -115,6 +118,11 @@ If the view used with `FileUploadParser` is called with a `filename` URL keyword
             # ...
             return Response(status=204)
 
+    # urls.py
+    urlpatterns = [
+        # ...
+        url(r'^upload/(?P<filename>[^/]+)$', FileUploadView.as_view())
+    ]
 
 ---
 
diff --git a/docs/api-guide/permissions.md b/docs/api-guide/permissions.md
index bbac824..402875c 100644
--- a/docs/api-guide/permissions.md
+++ b/docs/api-guide/permissions.md
@@ -71,7 +71,7 @@ If not specified, this setting defaults to allowing unrestricted access:
     )
 
 You can also set the authentication policy on a per-view, or per-viewset basis,
-using the `APIView` class based views.
+using the `APIView` class-based views.
 
     from rest_framework.permissions import IsAuthenticated
     from rest_framework.response import Response
@@ -144,7 +144,7 @@ To use custom model permissions, override `DjangoModelPermissions` and set the `
 
 #### Using with views that do not include a `queryset` attribute.
 
-If you're using this permission with a view that uses an overridden `get_queryset()` method there may not be a `queryset` attribute on the view. In this case we suggest also marking the view with a sential queryset, so that this class can determine the required permissions. For example:
+If you're using this permission with a view that uses an overridden `get_queryset()` method there may not be a `queryset` attribute on the view. In this case we suggest also marking the view with a sentinel queryset, so that this class can determine the required permissions. For example:
 
     queryset = User.objects.none()  # Required for DjangoModelPermissions
 
diff --git a/docs/api-guide/relations.md b/docs/api-guide/relations.md
index 31a78f2..8695b2c 100644
--- a/docs/api-guide/relations.md
+++ b/docs/api-guide/relations.md
@@ -489,7 +489,7 @@ See the Django documentation on [reverse relationships][reverse-relationships] f
 
 ## Generic relationships
 
-If you want to serialize a generic foreign key, you need to define a custom field, to determine explicitly how you want serialize the targets of the relationship.
+If you want to serialize a generic foreign key, you need to define a custom field, to determine explicitly how you want to serialize the targets of the relationship.
 
 For example, given the following model for a tag, which has a generic relationship with other arbitrary models:
 
diff --git a/docs/api-guide/renderers.md b/docs/api-guide/renderers.md
index b495fd0..a957783 100644
--- a/docs/api-guide/renderers.md
+++ b/docs/api-guide/renderers.md
@@ -28,7 +28,7 @@ The default set of renderers may be set globally, using the `DEFAULT_RENDERER_CL
     }
 
 You can also set the renderers used for an individual view, or viewset,
-using the `APIView` class based views.
+using the `APIView` class-based views.
 
     from django.contrib.auth.models import User
     from rest_framework.renderers import JSONRenderer
@@ -471,6 +471,10 @@ Comma-separated values are a plain-text tabular data format, that can be easily
 
 [Django REST Pandas] provides a serializer and renderers that support additional data processing and output via the [Pandas] DataFrame API.  Django REST Pandas includes renderers for Pandas-style CSV files, Excel workbooks (both `.xls` and `.xlsx`), and a number of [other formats]. It is maintained by [S. Andrew Sheppard][sheppard] as part of the [wq Project][wq].
 
+## LaTeX
+
+[Rest Framework Latex] provides a renderer that outputs PDFs using Laulatex. It is maintained by [Pebble (S/F Software)][mypebble].
+
 
 [cite]: https://docs.djangoproject.com/en/dev/ref/template-response/#the-rendering-process
 [conneg]: content-negotiation.md
@@ -506,3 +510,5 @@ Comma-separated values are a plain-text tabular data format, that can be easily
 [other formats]: https://github.com/wq/django-rest-pandas#supported-formats
 [sheppard]: https://github.com/sheppard
 [wq]: https://github.com/wq
+[mypebble]: https://github.com/mypebble
+[Rest Framework Latex]: https://github.com/mypebble/rest-framework-latex
diff --git a/docs/api-guide/requests.md b/docs/api-guide/requests.md
index 94cdb14..393b1ab 100644
--- a/docs/api-guide/requests.md
+++ b/docs/api-guide/requests.md
@@ -118,10 +118,6 @@ For more information see the [browser enhancements documentation].
 
 You won't typically need to directly access the request's content, as you'll normally rely on REST framework's default request parsing behavior.
 
-If you do need to access the raw content directly, you should use the `.stream` property in preference to using `request.content`, as it provides transparent support for browser-based non-form content.
-
-For more information see the [browser enhancements documentation].
-
 ---
 
 # Standard HttpRequest attributes
diff --git a/docs/api-guide/routers.md b/docs/api-guide/routers.md
index d73606d..10a86bd 100644
--- a/docs/api-guide/routers.md
+++ b/docs/api-guide/routers.md
@@ -226,9 +226,9 @@ The following example will only route to the `list` and `retrieve` actions, and
             ),
             Route(
             	url=r'^{prefix}/{lookup}$',
-               mapping={'get': 'retrieve'},
-               name='{basename}-detail',
-               initkwargs={'suffix': 'Detail'}
+                mapping={'get': 'retrieve'},
+                name='{basename}-detail',
+                initkwargs={'suffix': 'Detail'}
             ),
             DynamicDetailRoute(
             	url=r'^{prefix}/{lookup}/{methodnamehyphen}$',
diff --git a/docs/api-guide/schemas.md b/docs/api-guide/schemas.md
new file mode 100644
index 0000000..b39c35f
--- /dev/null
+++ b/docs/api-guide/schemas.md
@@ -0,0 +1,422 @@
+source: schemas.py
+
+# Schemas
+
+> A machine-readable [schema] describes what resources are available via the API, what their URLs are, how they are represented and what operations they support.
+>
+> — Heroku, [JSON Schema for the Heroku Platform API][cite]
+
+API schemas are a useful tool that allow for a range of use cases, including
+generating reference documentation, or driving dynamic client libraries that
+can interact with your API.
+
+## Representing schemas internally
+
+REST framework uses [Core API][coreapi] in order to model schema information in
+a format-independent representation. This information can then be rendered
+into various different schema formats, or used to generate API documentation.
+
+When using Core API, a schema is represented as a `Document` which is the
+top-level container object for information about the API. Available API
+interactions are represented using `Link` objects. Each link includes a URL,
+HTTP method, and may include a list of `Field` instances, which describe any
+parameters that may be accepted by the API endpoint. The `Link` and `Field`
+instances may also include descriptions, that allow an API schema to be
+rendered into user documentation.
+
+Here's an example of an API description that includes a single `search`
+endpoint:
+
+    coreapi.Document(
+        title='Flight Search API',
+        url='https://api.example.org/',
+        content={
+            'search': coreapi.Link(
+                url='/search/',
+                action='get',
+                fields=[
+                    coreapi.Field(
+                        name='from',
+                        required=True,
+                        location='query',
+                        description='City name or airport code.'
+                    ),
+                    coreapi.Field(
+                        name='to',
+                        required=True,
+                        location='query',
+                        description='City name or airport code.'
+                    ),
+                    coreapi.Field(
+                        name='date',
+                        required=True,
+                        location='query',
+                        description='Flight date in "YYYY-MM-DD" format.'
+                    )
+                ],
+                description='Return flight availability and prices.'
+            )
+        }
+    )
+
+## Schema output formats
+
+In order to be presented in an HTTP response, the internal representation
+has to be rendered into the actual bytes that are used in the response.
+
+[Core JSON][corejson] is designed as a canonical format for use with Core API.
+REST framework includes a renderer class for handling this media type, which
+is available as `renderers.CoreJSONRenderer`.
+
+Other schema formats such as [Open API][open-api] ("Swagger"),
+[JSON HyperSchema][json-hyperschema], or [API Blueprint][api-blueprint] can
+also be supported by implementing a custom renderer class.
+
+## Schemas vs Hypermedia
+
+It's worth pointing out here that Core API can also be used to model hypermedia
+responses, which present an alternative interaction style to API schemas.
+
+With an API schema, the entire available interface is presented up-front
+as a single endpoint. Responses to individual API endpoints are then typically
+presented as plain data, without any further interactions contained in each
+response.
+
+With Hypermedia, the client is instead presented with a document containing
+both data and available interactions. Each interaction results in a new
+document, detailing both the current state and the available interactions.
+
+Further information and support on building Hypermedia APIs with REST framework
... 34265 lines suppressed ...

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/python-modules/packages/djangorestframework.git



More information about the Python-modules-commits mailing list