Merge pull request #739 from kgriffs/release-notes-1.0.0
doc(Changelogs): Add Changelog for 1.0.0 and prepare docs for release
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
Falcon |Docs| |Build Status| |codecov.io|
|
Falcon |Docs| |Build Status| |codecov.io|
|
||||||
==================================
|
=========================================
|
||||||
|
|
||||||
Perfection is finally attained not when there is no longer anything
|
Perfection is finally attained not when there is no longer anything
|
||||||
to add, but when there is no longer anything to take away.
|
to add, but when there is no longer anything to take away.
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ handling. It takes status, additional headers and body as input arguments.
|
|||||||
HTTPStatus
|
HTTPStatus
|
||||||
----------
|
----------
|
||||||
|
|
||||||
.. autoclass:: falcon.http_status.HTTPStatus
|
.. autoclass:: falcon.HTTPStatus
|
||||||
:members:
|
:members:
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,23 @@
|
|||||||
Changelog for Falcon 0.2.0
|
Changelog for Falcon 0.2.0
|
||||||
==========================
|
==========================
|
||||||
|
|
||||||
New
|
Breaking Changes
|
||||||
---
|
----------------
|
||||||
|
|
||||||
|
- The deprecated util.misc.percent\_escape and
|
||||||
|
util.misc.percent\_unescape functions were removed. Please use the
|
||||||
|
functions in the util.uri module instead.
|
||||||
|
- The deprecated function, API.set\_default\_route, was removed. Please
|
||||||
|
use sinks instead.
|
||||||
|
- HTTPRangeNotSatisfiable no longer accepts a media\_type parameter.
|
||||||
|
- When using the comma-delimited list convention,
|
||||||
|
req.get\_param\_as\_list(...) will no longer insert placeholders,
|
||||||
|
using the None type, for empty elements. For example, where
|
||||||
|
previously the query string "foo=1,,3" would result in ['1', None,
|
||||||
|
'3'], it will now result in ['1', '3'].
|
||||||
|
|
||||||
|
New & Improved
|
||||||
|
--------------
|
||||||
|
|
||||||
- Since 0.1 we've added proper RTD docs to make it easier for everyone
|
- Since 0.1 we've added proper RTD docs to make it easier for everyone
|
||||||
to get started with the framework. Over time we will continue adding
|
to get started with the framework. Over time we will continue adding
|
||||||
@@ -64,21 +79,6 @@ New
|
|||||||
- Python 3.4 is now fully supported.
|
- Python 3.4 is now fully supported.
|
||||||
- Various minor performance improvements
|
- Various minor performance improvements
|
||||||
|
|
||||||
Breaking Changes
|
|
||||||
----------------
|
|
||||||
|
|
||||||
- The deprecated util.misc.percent\_escape and
|
|
||||||
util.misc.percent\_unescape functions were removed. Please use the
|
|
||||||
functions in the util.uri module instead.
|
|
||||||
- The deprecated function, API.set\_default\_route, was removed. Please
|
|
||||||
use sinks instead.
|
|
||||||
- HTTPRangeNotSatisfiable no longer accepts a media\_type parameter.
|
|
||||||
- When using the comma-delimited list convention,
|
|
||||||
req.get\_param\_as\_list(...) will no longer insert placeholders,
|
|
||||||
using the None type, for empty elements. For example, where
|
|
||||||
previously the query string "foo=1,,3" would result in ['1', None,
|
|
||||||
'3'], it will now result in ['1', '3'].
|
|
||||||
|
|
||||||
Fixed
|
Fixed
|
||||||
-----
|
-----
|
||||||
|
|
||||||
@@ -97,4 +97,4 @@ Fixed
|
|||||||
submitted by the client, wsgiref will set the value of that header to
|
submitted by the client, wsgiref will set the value of that header to
|
||||||
an empty string in the WSGI environ.
|
an empty string in the WSGI environ.
|
||||||
- Resolved an issue causing several source files to not be Cythonized.
|
- Resolved an issue causing several source files to not be Cythonized.
|
||||||
- Docstrings have been edited for clarity and correctness.
|
- Docstrings have been edited for clarity and correctness.
|
||||||
|
|||||||
@@ -1,8 +1,13 @@
|
|||||||
Changelog for Falcon 0.3.0
|
Changelog for Falcon 0.3.0
|
||||||
==========================
|
==========================
|
||||||
|
|
||||||
New
|
Breaking Changes
|
||||||
---
|
----------------
|
||||||
|
- Date headers are now returned as :py:class:`datetime.datetime` objects
|
||||||
|
instead of strings.
|
||||||
|
|
||||||
|
New & Improved
|
||||||
|
--------------
|
||||||
|
|
||||||
- This release includes a new router architecture for improved performance
|
- This release includes a new router architecture for improved performance
|
||||||
and flexibility.
|
and flexibility.
|
||||||
@@ -23,11 +28,6 @@ New
|
|||||||
:py:attr:`falcon.HTTP_NO_CONTENT` vs. :py:attr:`falcon.HTTP_204`.)
|
:py:attr:`falcon.HTTP_NO_CONTENT` vs. :py:attr:`falcon.HTTP_204`.)
|
||||||
- Several minor performance optimizations were made to the code base.
|
- Several minor performance optimizations were made to the code base.
|
||||||
|
|
||||||
Breaking Changes
|
|
||||||
----------------
|
|
||||||
- Date headers are now returned as :py:class:`datetime.datetime` objects
|
|
||||||
instead of strings.
|
|
||||||
|
|
||||||
Fixed
|
Fixed
|
||||||
-----
|
-----
|
||||||
|
|
||||||
@@ -36,4 +36,4 @@ Fixed
|
|||||||
- Several errors in the documentation were corrected.
|
- Several errors in the documentation were corrected.
|
||||||
- The :py:mod:`six` package was pinned to 1.4.0 or better.
|
- The :py:mod:`six` package was pinned to 1.4.0 or better.
|
||||||
:py:attr:`six.PY2` is required by Falcon, but that wasn't added to
|
:py:attr:`six.PY2` is required by Falcon, but that wasn't added to
|
||||||
:py:mod:`six` until version 1.4.0.
|
:py:mod:`six` until version 1.4.0.
|
||||||
|
|||||||
147
doc/changes/1.0.0.rst
Normal file
147
doc/changes/1.0.0.rst
Normal file
@@ -0,0 +1,147 @@
|
|||||||
|
Changelog for Falcon 1.0.0
|
||||||
|
==========================
|
||||||
|
|
||||||
|
Breaking Changes
|
||||||
|
----------------
|
||||||
|
- The deprecated global hooks feature has been removed.
|
||||||
|
:class:`~falcon.API` no longer accepts `before` and `after`
|
||||||
|
kwargs. Applications can work around this by migrating any logic
|
||||||
|
contained in global hooks to reside in middleware components instead.
|
||||||
|
- The middleware method :meth:`process_resource` must now accept
|
||||||
|
an additional `params` argument. This gives the middleware method an
|
||||||
|
opportunity to interact with the values for any fields defined in a
|
||||||
|
route's URI template.
|
||||||
|
- The middleware method :meth:`process_resource` is now skipped when
|
||||||
|
no route is found for the incoming request. This avoids having to
|
||||||
|
include an ``if resource is not None`` check when implementing this
|
||||||
|
method. A sink may be used instead to execute logic in the case that
|
||||||
|
no route is found.
|
||||||
|
- An option was added to toggle automatic parsing of form params. Falcon
|
||||||
|
will no longer automatically parse, by default, requests that have the
|
||||||
|
content type "application/x-www-form-urlencoded". This was done to
|
||||||
|
avoid unintended side-effects that may arise from consuming the
|
||||||
|
request stream. It also makes it more straightforward for applications
|
||||||
|
to customize and extend the handling of form submissions. Applications
|
||||||
|
that require this functionality must re-enable it explicitly, by
|
||||||
|
setting a new request option that was added for that purpose, per the
|
||||||
|
example below::
|
||||||
|
|
||||||
|
app = falcon.API()
|
||||||
|
app.req_options.auto_parse_form_urlencoded = True
|
||||||
|
|
||||||
|
- The performance of composing the response body was
|
||||||
|
improved. As part of this work, the :attr:`Response.body_encoded`
|
||||||
|
attribute was removed. This property was only intended to be used by
|
||||||
|
the framework itself, but any dependent code can be migrated per
|
||||||
|
the example below::
|
||||||
|
|
||||||
|
# Before
|
||||||
|
body = resp.body_encoded
|
||||||
|
|
||||||
|
# After
|
||||||
|
if resp.body:
|
||||||
|
body = resp.body.encode('utf-8')
|
||||||
|
else:
|
||||||
|
body = b''
|
||||||
|
|
||||||
|
New & Improved
|
||||||
|
--------------
|
||||||
|
|
||||||
|
- A `code of conduct <https://github.com/falconry/falcon/blob/master/CODEOFCONDUCT.md>`_
|
||||||
|
was added to solidify our community's commitment to sustaining a
|
||||||
|
welcoming, respectful culture.
|
||||||
|
- CPython 3.5 is now fully supported.
|
||||||
|
- The constants HTTP_422, HTTP_428, HTTP_429, HTTP_431, HTTP_451, and
|
||||||
|
HTTP_511 were added.
|
||||||
|
- The :class:`~falcon.HTTPUnprocessableEntity`,
|
||||||
|
:class:`~falcon.HTTPTooManyRequests`, and
|
||||||
|
:class:`~falcon.HTTPUnavailableForLegalReasons` error classes were
|
||||||
|
added.
|
||||||
|
- The :any:`HTTPStatus` class is now available directly under
|
||||||
|
the `falcon` module, and has been properly documented.
|
||||||
|
- Support for HTTP redirections was added via a set of
|
||||||
|
:any:`HTTPStatus` subclasses. This should avoid the problem
|
||||||
|
of hooks and responder methods possibly overriding the redirect.
|
||||||
|
Raising an instance of one of these new redirection classes will
|
||||||
|
short-circuit request processing, similar to raising an instance of
|
||||||
|
:class:`~falcon.HTTPError`.
|
||||||
|
- The default 404 responder now raises an instance of
|
||||||
|
:class:`~falcon.HTTPError` instead of manipulating the
|
||||||
|
response object directly. This makes it possible to customize the
|
||||||
|
response body using a custom error handler or serializer.
|
||||||
|
- A new method, :meth:`~falcon.Response.get_header`, was added to
|
||||||
|
:class:`~falcon.Response`. Previously there was no way to check if a
|
||||||
|
header had been set. The new :meth:`~falcon.Response.get_header`
|
||||||
|
method facilitates this and other use cases.
|
||||||
|
- :meth:`falcon.Request.client_accepts_msgpack` now recognizes
|
||||||
|
"application/msgpack", in addition to "application/x-msgpack".
|
||||||
|
- The :any:`access_route` and
|
||||||
|
:any:`remote_addr` properties were added to
|
||||||
|
:class:`~falcon.Request` for getting upstream IP addresses.
|
||||||
|
- :class:`~falcon.Request` and :class:`~falcon.Response` now support
|
||||||
|
range units other than bytes.
|
||||||
|
- The `API` and `srmock` class types can now be customized in
|
||||||
|
:class:`~falcon.testing.TestBase`.
|
||||||
|
- Path segments with multiple field expressions may now be defined at
|
||||||
|
the same level as path segments having only a single field
|
||||||
|
expression. For example::
|
||||||
|
|
||||||
|
api.add_route('/files/{file_id}', resource_1)
|
||||||
|
api.add_route('/files/{file_id}.{ext}', resource_2)
|
||||||
|
|
||||||
|
- Support was added to :any:`API.add_route()` for passing through
|
||||||
|
additional args and kwargs to custom routers.
|
||||||
|
- Digits and the underscore character are now allowed in the
|
||||||
|
:meth:`falcon.routing.compile_uri_template` helper, for use in custom
|
||||||
|
router implementations.
|
||||||
|
- A new testing framework was added that should be more intuitive to
|
||||||
|
use than the old one. Several of Falcon's own tests were ported to use
|
||||||
|
the new framework (the remainder to be ported in a
|
||||||
|
subsequent release.) The new testing framework performs wsgiref
|
||||||
|
validation on all requests.
|
||||||
|
- The performance of setting :attr:`Response.content_range` was
|
||||||
|
improved by ~50%.
|
||||||
|
- A new param, `obs_date`, was added to
|
||||||
|
:meth:`falcon.Request.get_header_as_datetime`, and defaults to
|
||||||
|
``False``. This improves the method's performance when obsolete date
|
||||||
|
formats do not need to be supported.
|
||||||
|
|
||||||
|
Fixed
|
||||||
|
-----
|
||||||
|
|
||||||
|
- Field expressions at a given level in the routing tree no longer
|
||||||
|
mask alternative branches. When a single segment in a requested path
|
||||||
|
can match more than one node at that branch in the routing tree, and
|
||||||
|
the first branch taken happens to be the wrong one (i.e., the
|
||||||
|
subsequent nodes do not match, but they would have under a different
|
||||||
|
branch), the other branches that could result in a
|
||||||
|
successful resolution of the requested path will now be subsequently
|
||||||
|
tried, whereas previously the framework would behave as if no route
|
||||||
|
could be found.
|
||||||
|
- The user agent is now instructed to expire the cookie when it is
|
||||||
|
cleared via :meth:`~falcon.Response.unset_cookie`.
|
||||||
|
- Support was added for hooks that have been defined via
|
||||||
|
:meth:`functools.partial`.
|
||||||
|
- Tunneled UTF-8 characters in the request path are now properly
|
||||||
|
decoded, and a placeholder character is substituted for any invalid
|
||||||
|
code points.
|
||||||
|
- The instantiation of :any:`Request.context_type` is now
|
||||||
|
delayed until after all other properties of the
|
||||||
|
:class:`~falcon.Request` class have been initialized, in case the
|
||||||
|
context type's own initialization depends on any of
|
||||||
|
:class:`~falcon.Request`'s properties.
|
||||||
|
- A case was fixed in which reading from :any:`Request.stream`
|
||||||
|
could hang when using :mod:`wsgiref` to host the app.
|
||||||
|
- The default error serializer now sets the Vary header in responses.
|
||||||
|
Implementing this required passing the :class:`~falcon.Response`
|
||||||
|
object to the serializer, which would normally be a breaking change.
|
||||||
|
However, the framework was modified to detect old-style error
|
||||||
|
serializers and wrap them with a shim to make them compatible with
|
||||||
|
the new interface.
|
||||||
|
- A query string containing malformed percent-encoding no longer causes
|
||||||
|
the framework to raise an error.
|
||||||
|
- Additional tests were added for a few lines of code that were
|
||||||
|
previously not covered, due to deficiencies in code coverage reporting
|
||||||
|
that have since been corrected.
|
||||||
|
- The Cython note is no longer displayed when installing under Jython.
|
||||||
|
- Several errors and ambiguities in the documentation were corrected.
|
||||||
@@ -3,5 +3,6 @@ Changelogs
|
|||||||
|
|
||||||
.. toctree::
|
.. toctree::
|
||||||
|
|
||||||
|
1.0.0 <1.0.0>
|
||||||
0.3.0 <0.3.0>
|
0.3.0 <0.3.0>
|
||||||
0.2.0 <0.2.0>
|
0.2.0 <0.2.0>
|
||||||
|
|||||||
@@ -55,16 +55,16 @@ master_doc = 'index'
|
|||||||
|
|
||||||
# General information about the project.
|
# General information about the project.
|
||||||
project = u'Falcon'
|
project = u'Falcon'
|
||||||
copyright = u'2015, Rackspace Hosting et al. (as noted in the source code)'
|
copyright = u'2016, Rackspace Hosting et al. (as noted in the source code)'
|
||||||
|
|
||||||
# The version info for the project you're documenting, acts as replacement for
|
# The version info for the project you're documenting, acts as replacement for
|
||||||
# |version| and |release|, also used in various other places throughout the
|
# |version| and |release|, also used in various other places throughout the
|
||||||
# built documents.
|
# built documents.
|
||||||
#
|
#
|
||||||
# The short X.Y version.
|
# The short X.Y version.
|
||||||
version = '0.4'
|
version = '1.0'
|
||||||
# The full version, including alpha/beta/rc tags.
|
# The full version, including alpha/beta/rc tags.
|
||||||
release = '0.4.0'
|
release = '1.0.0'
|
||||||
|
|
||||||
# The language for content autogenerated by Sphinx. Refer to documentation
|
# The language for content autogenerated by Sphinx. Refer to documentation
|
||||||
# for a list of supported languages.
|
# for a list of supported languages.
|
||||||
|
|||||||
@@ -8,10 +8,6 @@ The Falcon Web Framework
|
|||||||
|
|
||||||
Release v\ |version| (:ref:`Installation <install>`)
|
Release v\ |version| (:ref:`Installation <install>`)
|
||||||
|
|
||||||
.. note::
|
|
||||||
|
|
||||||
This documentation targets the upcoming |version| release of Falcon.
|
|
||||||
|
|
||||||
Falcon is a minimalist WSGI library for building speedy web APIs and app
|
Falcon is a minimalist WSGI library for building speedy web APIs and app
|
||||||
backends. We like to think of Falcon as the `Dieter Rams` of web frameworks.
|
backends. We like to think of Falcon as the `Dieter Rams` of web frameworks.
|
||||||
|
|
||||||
|
|||||||
@@ -293,6 +293,13 @@ class API(object):
|
|||||||
corresponding request handlers, and Falcon will do the right
|
corresponding request handlers, and Falcon will do the right
|
||||||
thing.
|
thing.
|
||||||
|
|
||||||
|
Note:
|
||||||
|
Any additional args and kwargs not defined above are passed
|
||||||
|
through to the underlying router's ``add_route()`` method. The
|
||||||
|
default router does not expect any additional arguments, but
|
||||||
|
custom routers may take advantage of this feature to receive
|
||||||
|
additional options when setting up routes.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
# NOTE(richardolsson): Doing the validation here means it doesn't have
|
# NOTE(richardolsson): Doing the validation here means it doesn't have
|
||||||
|
|||||||
Reference in New Issue
Block a user