Skip to content

Latest commit

 

History

History
352 lines (196 loc) · 7.93 KB

CHANGES.rst

File metadata and controls

352 lines (196 loc) · 7.93 KB

Changelog

6.0.5 (2024-02-01)

Bug fixes

  • Upgraded the C-API macros that have been deprecated in Python 3.9 and later removed in 3.13 -- by iemelyanov.

    Related issues and pull requests on GitHub: 862, 864, 868, 898.

  • Reverted to using the public argument parsing API :cPyArg_ParseTupleAndKeywords under Python 3.12 -- by charles-dyfis-net and webknjaz.

    The effect is that this change prevents build failures with clang 16.9.6 and gcc-14 reported in 926. It also fixes a segmentation fault crash caused by passing keyword arguments to :pyMultiDict.getall() <multidict.MultiDict.getall> discovered by jonaslb and hroncok while examining the problem.

    Related issues and pull requests on GitHub: 862, 909, 926, 929.

  • Fixed a SystemError: null argument to internal routine error on a MultiDict.items().isdisjoint() call when using C Extensions.

    Related issues and pull requests on GitHub: 927.

Improved documentation

  • On the Contributing docs page, a link to the Towncrier philosophy has been fixed.

    Related issues and pull requests on GitHub: 911.

Packaging updates and notes for downstreams

  • Stopped marking all files as installable package data -- by webknjaz.

    This change helps setuptools understand that C-headers are not to be installed under lib/python3.{x}/site-packages/.

    Related commits on GitHub: 31e1170.

  • Started publishing pure-python wheels to be installed as a fallback -- by webknjaz.

    Related commits on GitHub: 7ba0e72.

  • Switched from setuptools' legacy backend (setuptools.build_meta:__legacy__) to the modern one (setuptools.build_meta) by actually specifying the the [build-system] build-backend option in pyproject.toml -- by Jackenmen.

    Related issues and pull requests on GitHub: 802.

  • Declared Python 3.12 supported officially in the distribution package metadata -- by hugovk.

    Related issues and pull requests on GitHub: 877.

Contributor-facing changes

  • The test framework has been refactored. In the previous state, the circular imports reported in 837 caused the C-extension tests to be skipped.

    Now, there is a set of the pytest fixtures that is set up in a parametrized manner allowing to have a consistent way of accessing mirrored multidict implementations across all the tests.

    This change also implemented a pair of CLI flags (--c-extensions / --no-c-extensions) that allow to explicitly request deselecting the tests running against the C-extension.

    -- by webknjaz.

    Related issues and pull requests on GitHub: 98, 837, 915.

  • Updated the test pins lockfile used in the cibuildwheel test stage -- by hoodmane.

    Related issues and pull requests on GitHub: 827.

  • Added an explicit void for arguments in C-function signatures which addresses the following compiler warning:

    warning: a function declaration without a prototype is deprecated in all versions of C [-Wstrict-prototypes]

    -- by hoodmane

    Related issues and pull requests on GitHub: 828.

  • An experimental Python 3.13 job now runs in the CI -- webknjaz.

    Related issues and pull requests on GitHub: 920.

  • Added test coverage for the and <python:and>, or <python:or>, :pysub <python:object.__sub__>, and :pyxor <python:object.__xor__> operators in the multidict/_multidict_base.py module. It also covers :pyNotImplemented and ":py~typing.Iterable-but-not-:py~typing.Set" cases there.

    -- by a5r0n

    Related issues and pull requests on GitHub: 936.

  • The version of pytest is now capped below 8, when running MyPy against Python 3.7. This pytest release dropped support for said runtime.

    Related issues and pull requests on GitHub: 937.


6.0.4 (2022-12-24)

Bugfixes

  • Fixed a type annotations regression introduced in v6.0.2 under Python versions <3.10. It was caused by importing certain types only available in newer versions. (798)

6.0.3 (2022-12-03)

Features

  • Declared the official support for Python 3.11 — by mlegner. (872)

6.0.2 (2022-01-24)

Bugfixes

  • Revert 644, restore type annotations to as-of 5.2.0 version. (688)

6.0.1 (2022-01-23)

Bugfixes

  • Restored back MultiDict, CIMultiDict, MultiDictProxy, and CIMutiDictProxy generic type arguments; they are parameterized by value type, but the key type is fixed by container class.

    MultiDict[int] means MutableMultiMapping[str, int]. The key type of MultiDict is always str, while all str-like keys are accepted by API and converted to str internally.

    The same is true for CIMultiDict[int] which means MutableMultiMapping[istr, int]. str-like keys are accepted but converted to istr internally. (682)

6.0.0 (2022-01-22)

Features

  • Use METH_FASTCALL where it makes sense.

    MultiDict.add() is 2.2 times faster now, CIMultiDict.add() is 1.5 times faster. The same boost is applied to get*(), setdefault(), and pop*() methods. (681)

Bugfixes

  • Fixed type annotations for keys of multidict mapping classes. (644)
  • Support Multidict[int] for pure-python version. __class_getitem__ is already provided by C Extension, making it work with the pure-extension too. (678)

Deprecations and Removals

  • Dropped Python 3.6 support (680)

Misc

  • 659

5.2.0 (2021-10-03)

Features

    1. Added support Python 3.10
    2. Started shipping platform-specific wheels with the musl tag targeting typical Alpine Linux runtimes.
    3. Started shipping platform-specific arm64 wheels for Apple Silicon. (629)

Bugfixes

  • Fixed pure-python implementation that used to raise "Dictionary changed during iteration" error when iterated view (.keys(), .values() or .items()) was created before the dictionary's content change. (620)

5.1.0 (2020-12-03)

Features

  • Supported GenericAliases (MultiDict[str]) for Python 3.9+ 553

Bugfixes

  • Synchronized the declared supported Python versions in setup.py with actually supported and tested ones. 552

5.0.1 (2020-11-14)

Bugfixes

  • Provided x86 Windows wheels 550

5.0.0 (2020-10-12)

Features

  • Provided wheels for aarch64, i686, ppc64le, s390x architectures on Linux as well as x86_64. 500
  • Provided wheels for Python 3.9. 534

Removal

  • Dropped Python 3.5 support; Python 3.6 is the minimal supported Python version.

Misc

  • 503