Back to Falcon

Changelog for Falcon 1.4.0

docs/changes/1.4.0.rst

4.2.03.7 KB
Original Source

Changelog for Falcon 1.4.0

.. falcon-release: 2018-01-16

Breaking Changes

  • :attr:falcon.testing.Result.json now returns None when the response body is empty, rather than raising an error.

Changes to Supported Platforms

  • Python 3 is now supported on PyPy as of PyPy3.5 v5.10.
  • Support for CPython 3.3 is now deprecated and will be removed in Falcon 2.0.
  • As with the previous release, Python 2.6 and Jython 2.7 remain deprecated and will no longer be supported in Falcon 2.0.

New & Improved

  • We added a new method, :meth:~.API.add_static_route, that makes it easy to serve files from a local directory. This feature provides an alternative to serving files from the web server when you don't have that option, when authorization is required, or for testing purposes.
  • Arguments can now be passed to hooks (see :ref:Hooks <hooks>).
  • The default JSON media type handler will now use ujson <https://pypi.python.org/pypi/ujson>_, if available, to speed up JSON (de)serialization under CPython.
  • Semantic validation via the format keyword is now enabled for the :meth:~falcon.media.validators.jsonschema.validate JSON Schema decorator.
  • We added a new helper, :meth:~falcon.Request.get_param_as_uuid, to the :class:~falcon.Request class.
  • Falcon now supports WebDAV methods (RFC 3253 <https://www.ietf.org/rfc/rfc3253.txt>_), such as UPDATE and REPORT.
  • We added a new property, :attr:~falcon.Response.downloadable_as, to the :class:~falcon.Response class for setting the Content-Disposition header.
  • :meth:~falcon.routing.create_http_method_map has been refactored into two new methods, :meth:~falcon.routing.map_http_methods and :meth:~falcon.routing.set_default_responders, so that custom routers can better pick and choose the functionality they need. The original method is still available for backwards-compatibility, but will be removed in a future release.
  • We added a new json param to :meth:~falcon.testing.simulate_request et al. to automatically serialize the request body from a JSON serializable object or type (for a complete list of serializable types, see json.JSONEncoder <https://docs.python.org/3.6/library/json.html#json.JSONEncoder>_).
  • :class:~.TestClient's simulate_*() methods now call :meth:~.TestClient.simulate_request to make it easier for subclasses to override :class:~.TestClient's behavior.
  • :class:~.TestClient can now be configured with a default set of headers to send with every request.
  • The :ref:FAQ <faq> has been reorganized and greatly expanded.
  • We restyled the docs to match https://falconframework.org

Fixed

  • Forwarded headers containing quoted strings with commas were not being parsed correctly. This has been fixed, and the parser generally made more robust.
  • :class:~falcon.media.JSONHandler was raising an error under Python 2.x when serializing strings containing Unicode code points. This issue has been fixed.
  • Overriding a resource class and calling its responders via super() did not work when passing URI template params as positional arguments. This has now been fixed.
  • Python 3.6 was generating warnings for strings containing '\s' within Falcon. These strings have been converted to raw strings to mitigate the warning.
  • Several syntax errors were found and fixed in the code examples used in the docs.

Contributors to this Release

Many thanks to all of our talented and stylish contributors for this release!

  • GriffGeorge
  • hynek
  • kgriffs
  • rhemz
  • santeyio
  • timc13
  • tyronegroves
  • vytas7
  • zhanghanyun