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.
#4458
- Fix 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 #4465
.#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 #4490
.#2617
- Overriding Field.__deepcopy__
for RegexField. Closed via #4490
.#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
.#3951
- Request.data empty when multipart/form-data POSTed. Closed via #3951
.#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 #4406
.#4510
- Fix is_simple_callable
py3k compatibility. Accepted and merged into version-3-5
branch.#4508
- Support Python 3 annotations on fields callables. Resolved via #4510
.#4506
- Error when using Python return type Annotation. Resolved via #4510
.#4076
- Support for type annotated functions as field source callables. Resolved via #4510
.#4059
- Fix deprecated warning of inspect. Resolved via #4510
.#4459
- Add ability to disable permissions check in schema generation. Resolved via #4460
.#4433
- Add settings for html cutoff on related fields. Accepted and merged into version-3-5
branch.#4520
- ObtainAuthToken
no longer returns if a user is inactive. Closed via commit b689a3b
.#4521
- Add a test for inactive users with token auth. Closed via commit b689a3b
.#4505
- Fix 1.10 deprecation warnings. Accepted and merged into version-3-5
branch.#3870
- Fix for #3863: validators are not thread safe. Closed as duplicate of #3713
.#3863
- Validators are not thread safe. Closed as duplicate of #3713
.#4486
- Router doesn’t work if prefix is blank, though project urls.py handles prefix. Accepted and merged into version-3-5
branch.#4487
- Project level urls delegation and app level router. Closed via #4486
.#4518
- Problem serializing a custom many to many related field. Reviewed & closed.#4438
- Routers in versions 3.4.X. Reviewed & closed.#4528
- Add drf-url-filters
app to django-rest-framework
in filtering docs. Accepted & merged.#4467
- Store initkwargs
as view class attribute for schema discovery. Closed via #4527
#4463
- Schema generator overwrites explicitly defined url patterns to views with common methods. Closed via #4527
#4463
- Write failing test scenario to support issue #4463. Closed via #4527
#4431
- SchemaGenerator
is not smart. Closed via #4527
#4478
- Avoid overwriting data in SchemaGenerator.get_schema_content
. Closed via #4527
#4468
- get_category()
in SchemaGenerator
doesn’t behave as expected. Closed via #4527
#4441
- Consider adding fields for detail/list route + GET + query params to schema generation. Closed via #4527
#4503
- The list/detail_routes should be able to provide hints about the schema they use. Reviewed and closed.#4485
- SchemaGenerator
parameters of type list. Reviewed and closed.#4448
- Updated test (to fail) to show coreapi
schema generator does not generate links for all methods on multimethod list_routes. Closed via #4529
.#4400
- Multiple http methods per action in schema. Closed via #4529
.#4530
- Add drf-dynamic-fields
to third party packages. Accepted & merged.#4490
- Fix regression of RegexField
.#4500
- Fallback behavior for request parsing when request.POST already accessed.#4501
- Version 3.4.7.#4460
- Added SchemaGenerator.should_include_link()
.#4406
- Requests client.#4424
- API client.#4522
- Router schema_renderers
argument should set the renderers, not append to them.#4527
- Clean up schema generation.#4529
- Handle multiple methods on custom action.The 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.