docs/changelog.rst
Changelog
=========
.. py:currentmodule:: ietfparse
:compare:`Next <1.9.0...main>` (Unreleased)
-------------------------------------------
- Removed deprecated functions: ``rewrite_url``, ``remove_url_auth``, ``parse_http_accept_header``,
``parse_link_header``, and ``parse_list_header``
- Replaced setup.py/cfg with pyproject.yaml and hatch_
- Replaced tox with hatch_ environments
- Replaced usage of the ``typing`` module with equivalents following :pep:`585`
.. _hatch: https://hatch.pypa.io/
:compare:`1.9.0 <1.8.0...1.9.0>` (08-Jul-2022)
----------------------------------------------
- Removed ``ietfparse.compat`` module.
- Changed ``algorithms.RemoveUrlAuthResult`` from a named tuple to a proper class.
- Deprecated using ``len()`` on the return value from :func:`algorithms.remove_url_auth`
- Replace type hints with annotations.
- Deprecated ``rewrite_url`` and ``remove_url_auth``. Use `yarl`_ instead. It is an
awesome library and a more general solution.
- Stop building universal wheels
.. _yarl: https://pypi.org/project/yarl/
:compare:`1.8.0 <1.7.0...1.8.0>` (11-Aug-2021)
----------------------------------------------
- Removing support for Python versions before 3.7
:compare:`1.7.0 <1.6.1...1.7.0>` (04-Nov-2020)
----------------------------------------------
.. rubric:: Behavioural Change
:func:`headers.parse_accept` used to fail with a :exc:`ValueError` when
it encountered an invalid content type value in the header. Now it skips
the invalid value. If you want the previous behaviour, then pass ``strict=True``.
- Advertise support for Python 3.7-3.9, remove 3.4 & 3.5
- Clarify that :func:`headers.parse_content_type` raises :exc:`ValueError`
when it encounters an invalid content type header
- Skip unparseable content types in :func:`headers.parse_accept` unless
the new ``strict`` parameter is truthy
:compare:`1.6.1 <1.6.0...1.6.1>` (26-Jan-2020)
----------------------------------------------
- Fixed project URL metadata.
- Updated links to refer to canonical URLs.
:compare:`1.6.0 <1.5.1...1.6.0>` (25-Jan-2020)
----------------------------------------------
- Switched from travis-ci to circle-ci.
- Add type stubs.
- Allow "bad whitespace" around ``=`` in link header parameter lists as
indicated in :rfc:`8288#section-3`.
- Replaced *nosetests* usage with the :mod:`unittest` module.
:compare:`1.5.1 <1.5.0...1.5.1>` (04-Mar-2018)
----------------------------------------------
- Add :rfc:`6839` content suffix support to :class:`datastructures.ContentType`
and :func:`headers.parse_content_type`
:compare:`1.5.0 <1.4.3...1.5.0>` (24-Dec-2017)
----------------------------------------------
- Officially drop support for Python 2.6 and 3.3.
- Change :func:`headers.parse_accept` to also prefer explicit highest
quality preferences over inferred highest quality preferences.
- Rename the ``normalized_parameter_values`` keyword of
:func:`headers._parse_parameter_list`. The current spelling is retained
with a deprecation warning. This will be removed in 2.0.
- Add ``normalize_parameter_names`` keyword to the
:func:`headers._parse_parameter_list` internal function.
- Add support for parsing :rfc:`7239` ``Forwarded`` headers with
:func:`headers.parse_forwarded`.
- Add :func:`algorithms.remove_url_auth`
:compare:`1.4.3 <1.4.2...1.4.3>` (30-Oct-2017)
----------------------------------------------
- Change parsing of qualified lists to retain the initial ordering whenever
possible. The algorithm prefers explicit highest quality (1.0) preferences
over inferred highest quality preferences. It also retains the initial
ordering in the presence of multiple highest quality matches. This affects
:func:`headers.parse_accept_charset`, :func:`headers.parse_accept_encoding`,
and :func:`headers.parse_accept_language`.
:compare:`1.4.2 <1.4.1...1.4.2>` (04-Jul-2017)
----------------------------------------------
- Add formatting of HTTP `Link`_ header using ``str(header)``.
:compare:`1.4.1 <1.4.0...1.4.1>` (03-Apr-2017)
----------------------------------------------
- Add some documentation about exceptions raised during header parsing.
:compare:`1.4.0 <1.3.0...1.4.0>` (18-Oct-2016)
----------------------------------------------
- Fixed parsing of lists like ``max-age=5, x-foo="prune"``. The previous
versions incorrectly produced ``['max-age=5', 'x-foo="prune']``.
- Added :func:`headers.parse_accept_encoding` which parses HTTP `Accept-Encoding`_
header values into a list.
- Added :func:`headers.parse_accept_language` which parses HTTP `Accept-Language`_
header values into a list.
:compare:`1.3.0 <1.2.2...1.3.0>` (11-Aug-2016)
----------------------------------------------
- Added :func:`headers.parse_cache_control` which parses HTTP `Cache-Control`_
header values into a dictionary.
- Renamed :func:`headers.parse_http_accept_header` to :func:`headers.parse_accept`,
adding a wrapper function that raises a deprecation function when invoking
:func:`headers.parse_http_accept_header`.
- Renamed :func:`headers.parse_link_header` to :func:`headers.parse_link`,
adding a wrapper function that raises a deprecation function when invoking
:func:`headers.parse_link_header`.
- Renamed :func:`headers.parse_list_header` to :func:`headers.parse_list`,
adding a wrapper function that raises a deprecation function when invoking
:func:`headers.parse_list_header`.
:compare:`1.2.2 <1.2.1...1.2.2>` (27-May-2015)
----------------------------------------------
- Added :func:`headers.parse_list_header` which parses generic comma-
separated list headers with support for quoted parts.
- Added :func:`headers.parse_accept_charset` which parses an HTTP
`Accept-Charset`_ header into a sorted list.
:compare:`1.2.1 <1.2.0...1.2.1>` (25-May-2015)
----------------------------------------------
- :func:`algorithms.select_content_type` claims to work with
:class:`datastructures.ContentType`` values but it was requiring
the augmented ones returned from :func:`algorithms.parse_http_accept_header`.
IOW, the algorithm required that the quality attribute exist.
:rfc:`7231#section-5.3.1` states that missing quality values are
treated as 1.0.
:compare:`1.2.0 <1.1.1...1.2.0>` (19-Apr-2015)
----------------------------------------------
- Added support for :rfc:`5988` ``Link`` headers. This consists
of :func:`headers.parse_link_header` and :class:`datastructures.LinkHeader`
:compare:`1.1.1 <1.1.0...1.1.1>` (10-Feb-2015)
----------------------------------------------
- Removed ``setupext`` module since it was causing problems with
source distributions.
:compare:`1.1.0 <1.0.0...1.1.0>` (26-Oct-2014)
----------------------------------------------
- Added :func:`algorithms.rewrite_url`
1.0.0 (21-Sep-2014)
-------------------
- Initial implementation containing the following functionality:
- :func:`algorithms.select_content_type`
- :class:`datastructures.ContentType`
- :class:`errors.NoMatch`
- :class:`errors.RootException`
- :func:`headers.parse_content_type`
- :func:`headers.parse_http_accept_header`
.. _Accept-Charset: https://tools.ietf.org/html/rfc7231#section-5.3.3
.. _Accept-Encoding: https://tools.ietf.org/html/rfc7231#section-5.3.4
.. _Accept-Language: https://tools.ietf.org/html/rfc7231#section-5.3.5
.. _Cache-Control: https://tools.ietf.org/html/rfc7231#section-5.2
.. _Link: https://tools.ietf.org/html/rfc5988