This month has been mainly working towards the 3.5.0 release, with related work on the Python client library, the command line client, and Swagger and RAML schema support.
We’re roughly stable on issues and pull requests, having moved down to 160 open issues at the end of the month, from 166 at the start.
APIClient.get()when path contains unicode arguments. Accepted & merged.
#4457- Get actual view instance involved when generating view OPTION and description. Reviewed & closed.
#4465- Fixed an issue where the incorrect value is set to ResolverMatch.func_name of api_view decorated view. Accepted & merged.
#4462- When run the
django.core.urlresolvers.resolve ( '/')to the @api_view decorated function, ResolverMatch.func_name has been set a invalid dotted name. Closed via
#4466- APITestCase and to_representation problem. Reviewed & closed
#4474- Wrap docs/* to 80 chars where possible. Reviewed & closed
#4475- Line wrap docs to 80 chars. Reviewed & closed
#4480- Namespaced, Django settings controlled rest_framework API duplicates. Reviewed & closed.
#4481- Update to correct location of reverse relation doc. Accepted & merged.
#4443- Transparently keep reference of routers in urls generated by routers. Reviewed & closed.
#4489- Add a test to show a regression with RegexField and compiled regex. Closed via
Field.__deepcopy__for RegexField. Closed via
#4493- Fix indentation regression in API listing. Accepted & merged.
#4495- Fix response rendering with empty context. Accepted & merged.
#4026- Fix issue #3951: Request.data empty when multipart/form-data POSTed. Closed via
#3951- Request.data empty when multipart/form-data POSTed. Closed via
#4499- Accept model instances as valid data for relational fields. Reviewed & closed.
#4502- Schema generation doesn’t support response schemas. Reviewed & closed.
#4504- Add support for models with custom primary key. Reviewed & closed.
#4509- Framework returns wrong response code (400) . Reviewed & closed.
#4511- Conversion error in
utils.encoders.JSONEncoder. Reviewed & closed.
#4513- Remove code for old Django versions. Accepted & merged.
#4517- Nested relationship serialization depends on related_name which is optional. Reviewed & closed.
#4405- Requests client. Resolved via
is_simple_callablepy3k compatibility. Accepted and merged into
#4508- Support Python 3 annotations on fields callables. Resolved via
#4506- Error when using Python return type Annotation. Resolved via
#4076- Support for type annotated functions as field source callables. Resolved via
#4059- Fix deprecated warning of inspect. Resolved via
#4459- Add ability to disable permissions check in schema generation. Resolved via
#4433- Add settings for html cutoff on related fields. Accepted and merged into
ObtainAuthTokenno longer returns if a user is inactive. Closed via commit
#4521- Add a test for inactive users with token auth. Closed via commit
#4505- Fix 1.10 deprecation warnings. Accepted and merged into
#3870- Fix for #3863: validators are not thread safe. Closed as duplicate of
#3863- Validators are not thread safe. Closed as duplicate of
#4486- Router doesn’t work if prefix is blank, though project urls.py handles prefix. Accepted and merged into
#4487- Project level urls delegation and app level router. Closed via
#4518- Problem serializing a custom many to many related field. Reviewed & closed.
#4438- Routers in versions 3.4.X. Reviewed & closed.
django-rest-frameworkin filtering docs. Accepted & merged.
initkwargsas view class attribute for schema discovery. Closed via
#4463- Schema generator overwrites explicitly defined url patterns to views with common methods. Closed via
#4463- Write failing test scenario to support issue #4463. Closed via
SchemaGeneratoris not smart. Closed via
#4478- Avoid overwriting data in
SchemaGenerator.get_schema_content. Closed via
SchemaGeneratordoesn’t behave as expected. Closed via
#4441- Consider adding fields for detail/list route + GET + query params to schema generation. Closed via
#4503- The list/detail_routes should be able to provide hints about the schema they use. Reviewed and closed.
SchemaGeneratorparameters of type list. Reviewed and closed.
#4448- Updated test (to fail) to show
coreapischema generator does not generate links for all methods on multimethod list_routes. Closed via
#4400- Multiple http methods per action in schema. Closed via
drf-dynamic-fieldsto third party packages. Accepted & merged.
#4490- Fix regression of
#4500- Fallback behavior for request parsing when request.POST already accessed.
#4501- Version 3.4.7.
#4406- Requests client.
#4424- API client.
schema_renderersargument should set the renderers, not append to them.
#4527- Clean up schema generation.
#4529- Handle multiple methods on custom action.
requests test client and
coreapi test client are almost complete. These tools will allow you to write test your application using either
requests or a
coreapi client. Interestingly they also allow you to write tests that can be run either locally, or directly against your staging and/or live environment.
There has been a 2.0 release of the
coreapi package, and a new release of the
coreapi-cli tool. This brings support for uploads and downloads to our Python client library and command line tool. The Python client library is now extensively documented, at http://core-api.github.io/python-client/
Releases of both a
raml-codec package, and a
django-rest-raml third-party app are working towards bring the RAML API console as a drop-in option for documenting your API.
Further work has been ongoing in improving the schema support introduced in 3.4, and ensuring the 2.x iteration of
django-rest-swagger presents a seemless documentation option. There are lots of areas that have been addressed here, and the 3.5 release should address the vast majority of remaining issues.
Against a baseline of £48,000/yr revenue (not salary) we’re now at about 95% sustainability.
As ever, reaching the crucial tipping point of sustainability is tremendously important to the long-term success of the project. If your business has not yet signed up for a paid plan, please consider doing so.
As ever, thanks to all our sponsors, contributors, and users for your ongoing support.
— Tom Christie, 3rd October, 2016.