diff --git a/AUTHORS b/AUTHORS index 96702c6a0..fece25507 100644 --- a/AUTHORS +++ b/AUTHORS @@ -131,6 +131,7 @@ listed below by date of first contribution: * John G G (john-g-g) * Aryan Iyappan (aryaniyaps) * Eujin Ong (euj1n0ng) +* Libor JelĂ­nek (liborjelinek) (et al.) diff --git a/docs/_newsfragments/2051.bugfix.rst b/docs/_newsfragments/2051.bugfix.rst deleted file mode 100644 index 7f51c1097..000000000 --- a/docs/_newsfragments/2051.bugfix.rst +++ /dev/null @@ -1,4 +0,0 @@ -Some essential files were unintentionally omitted from the source distribution -archive, rendering it unsuitable to run the test suite off. -This has been fixed, and the ``sdist`` tarball should now be usable as a base -for packaging Falcon in OS distributions. diff --git a/docs/_newsfragments/2146.bugfix.rst b/docs/_newsfragments/2146.bugfix.rst deleted file mode 100644 index ab27e52ba..000000000 --- a/docs/_newsfragments/2146.bugfix.rst +++ /dev/null @@ -1,6 +0,0 @@ - -:ref:`WebSocket ` implementation has been fixed to properly handle -:class:`~falcon.HTTPError` and :class:`~falcon.HTTPStatus` exceptions raised by -custom :func:`error handlers `. -The WebSocket connection is now correctly closed with an appropriate code -instead of bubbling up an unhandled error to the application server. diff --git a/docs/_newsfragments/2157.bugfix.rst b/docs/_newsfragments/2157.bugfix.rst deleted file mode 100644 index f2a33e7f1..000000000 --- a/docs/_newsfragments/2157.bugfix.rst +++ /dev/null @@ -1 +0,0 @@ -:class:`~falcon.testing.TestCase` mimics behavior of real WSGI servers following WSGI spec where is said that ``PATH_INFO`` CGI variable for WSGI app is already percent-decoded. However, this breaks routing if slash (encoded as ``%2F``) is part of path element, not a path separator, as explained in the FAQ :ref:`routing_encoded_slashes`. The workaround based on some WSGI servers' non-standard CGI variables described in :ref:`raw_url_path_recipe` recipe breaks tests because :py:func:`falcon.testing.helpers.create_environ` hard-code CGI variable ``RAW_URI`` to ``/`` instead to real path *before* percent-decoding. \ No newline at end of file diff --git a/docs/changes/3.1.2.rst b/docs/changes/3.1.2.rst new file mode 100644 index 000000000..9720b9161 --- /dev/null +++ b/docs/changes/3.1.2.rst @@ -0,0 +1,54 @@ +Changelog for Falcon 3.1.2 +========================== + +Summary +------- + +This is a minor point release fixing a couple of high impact bugs, +as well as publishing binary wheels for the recently released CPython 3.12. + + +Changes to Supported Platforms +------------------------------ + +- Falcon is now supported (including binary wheels) on CPython 3.12. + A couple of remaining stdlib deprecations from 3.11 and 3.12 will be + addressed in Falcon 4.0. +- As with the previous release, Python 3.5 & 3.6 remain deprecated and + will no longer be supported in Falcon 4.0. +- EOL Python 3.7 will no longer be actively supported in 4.0, but the framework + should still continue to install from source. We may remove the support for + 3.7 altogether later in the 4.x series if we are faced with incompatible + ecosystem changes in typing, Cython, etc. + + +Fixed +----- + +- Some essential files were unintentionally omitted from the source distribution + archive, rendering it unsuitable to run the test suite off. + This has been fixed, and the ``sdist`` tarball should now be usable as a base + for packaging Falcon in OS distributions. (`#2051 `__) +- :ref:`WebSocket ` implementation has been fixed to properly handle + :class:`~falcon.HTTPError` and :class:`~falcon.HTTPStatus` exceptions raised by + custom :func:`error handlers `. + The WebSocket connection is now correctly closed with an appropriate code + instead of bubbling up an unhandled error to the application server. (`#2146 `__) +- Falcon's :class:`~falcon.testing.TestClient` mimics the behavior of real WSGI + servers (and the WSGI spec) by presenting the ``PATH_INFO`` CGI variable + already in the percent-decoded form. However, the client also used to + indiscriminately set the non-standard ``RAW_URI`` CGI variable to ``/``, which + made writing tests for apps :ref:`decoding raw URL path ` + cumbersome. This has been fixed, and the raw path of a simulated request is now + preserved in ``RAW_URI``. (`#2157 `__) + + +Contributors to this Release +---------------------------- + +Many thanks to those who contributed to this bugfix release: + +- `CaselIT `__ +- `kgriffs `__ +- `liborjelinek `__ +- `vytas7 `__ diff --git a/docs/changes/3.1.3.rst b/docs/changes/3.1.3.rst new file mode 100644 index 000000000..416e77133 --- /dev/null +++ b/docs/changes/3.1.3.rst @@ -0,0 +1,11 @@ +Changelog for Falcon 3.1.3 +========================== + +Summary +------- + +This is a minor bugfix release that only pins the ``pytest-asyncio`` test +dependency in order to prevent an incompatible version from interfering with +the build workflow. + +This release is otherwise identical to :doc:`Falcon 3.1.2 <3.1.2>`. diff --git a/docs/changes/4.0.0.rst b/docs/changes/4.0.0.rst index 457343885..93359c678 100644 --- a/docs/changes/4.0.0.rst +++ b/docs/changes/4.0.0.rst @@ -13,7 +13,12 @@ Changes to Supported Platforms ------------------------------ - CPython 3.11 is now fully supported. (`#2072 `__) +- CPython 3.12 will be fully supported. (`#2196 `__) - End-of-life Python 3.5 & 3.6 are no longer supported. (`#2074 `__) +- Python 3.7 is no longer actively supported, but the framework should still + continue to install from source. We may remove the support for 3.7 altogether + later in the 4.x series if we are faced with incompatible ecosystem changes + in typing, Cython, etc. .. towncrier release notes start diff --git a/docs/changes/index.rst b/docs/changes/index.rst index f122227ae..06371e311 100644 --- a/docs/changes/index.rst +++ b/docs/changes/index.rst @@ -4,6 +4,8 @@ Changelogs .. toctree:: 4.0.0 <4.0.0> + 3.1.3 <3.1.3> + 3.1.2 <3.1.2> 3.1.1 <3.1.1> 3.1.0 <3.1.0> 3.0.1 <3.0.1> diff --git a/requirements/tests b/requirements/tests index 187bb054e..19b34bcd3 100644 --- a/requirements/tests +++ b/requirements/tests @@ -7,7 +7,8 @@ requests testtools; python_version < '3.10' # ASGI Specific (daphne is installed on a its own tox env) -pytest-asyncio +# TODO(vytas): Some ASGI tests hang with pytest-asyncio-0.23 on 3.8 & 3.9. +pytest-asyncio < 0.22.0 aiofiles httpx uvicorn >= 0.17.0 @@ -24,3 +25,6 @@ python-rapidjson; platform_machine != 's390x' and platform_machine != 'aarch64' # wheels are missing some EoL interpreters and non-x86 platforms; build would fail unless rust is available orjson; platform_python_implementation != 'PyPy' and platform_machine != 's390x' and platform_machine != 'aarch64' + +# Images for 3.7 on emulated architectures seem to only have OpenSSL 1.0.2 +urllib3 < 2.0; python_version <= '3.7'