Skip to content

Latest commit

 

History

History
829 lines (463 loc) · 18.8 KB

CHANGES.rst

File metadata and controls

829 lines (463 loc) · 18.8 KB

Changelog

6.4.3

(2025-04-10)

Bug fixes

  • Fixed building the library in debug mode.

    Related issues and pull requests on GitHub: :issue:`1144`.

  • Fixed custom PyType_GetModuleByDef() when non-heap type object was passed.

    Related issues and pull requests on GitHub: :issue:`1147`.

Packaging updates and notes for downstreams


6.4.2

(2025-04-09)

Bug fixes


6.4.1

(2025-04-09)

No significant changes.


6.4.0

(2025-04-09)

Bug fixes

Features

  • Switched C Extension to use heap types and the module state.

    Related issues and pull requests on GitHub: :issue:`1125`.

  • Started building armv7l wheels -- by :user:`bdraco`.

    Related issues and pull requests on GitHub: :issue:`1127`.


6.3.2

(2025-04-03)

Bug fixes


6.3.1

(2025-04-01)

Bug fixes


6.3.0

(2025-03-31)

Bug fixes

  • Set operations for KeysView and ItemsView of case-insensitive multidicts and their proxies are processed in case-insensitive manner.

    Related issues and pull requests on GitHub: :issue:`965`.

  • Rewrote :class:`multidict.CIMultiDict` and it proxy to always return :class:`multidict.istr` keys. istr is derived from :class:`str`, thus the change is backward compatible.

    The performance boost is about 15% for some operations for C Extension, pure Python implementation have got a visible (15% - 230%) speedup as well.

    Related issues and pull requests on GitHub: :issue:`1097`.

  • Fixed a crash when extending a multidict from multidict proxy if C Extensions were used.

    Related issues and pull requests on GitHub: :issue:`1100`.

Features

Contributor-facing changes

  • Started running benchmarks for the pure Python implementation in addition to the C implementation -- by :user:`bdraco`.

    Related issues and pull requests on GitHub: :issue:`1092`.

  • The the project-wide Codecov metric is no longer reported via GitHub Checks API. The combined value is not very useful because one of the sources (MyPy) cannot reach 100% with the current state of the ecosystem. We may want to reconsider in the future. Instead, we now have two separate “runtime coverage” metrics for library code and tests. They are to be kept at 100% at all times. And the “type coverage” metric will remain advisory, at a lower threshold.

    The default patch metric check is renamed to “runtime” to better reflect its semantics. This one will also require 100% coverage. Another “typing” patch coverage metric is now reported alongside it. It's considered advisory, just like its project counterpart.

    When looking at Codecov, one will likely want to look at MyPy and pytest flags separately. It is usually best to avoid looking at the PR pages that sometimes display combined coverage incorrectly.

    The change additionally disables the deprecated GitHub Annotations integration in Codecov.

    Finally, the badge coloring range now starts at 100%.

    Coverage metrics

    -- by :user:`webknjaz`

    Related issues and pull requests on GitHub: :issue:`1093`.

Miscellaneous internal changes

  • Synchronized :file:`pythoncapi_compat.h` with the latest available version.

    Related issues and pull requests on GitHub: :issue:`1063`.

  • Moved registering ABCs for C Extension classes from C to Python.

    Related issues and pull requests on GitHub: :issue:`1083`.

  • Refactored the internal pair_list implementation.

    Related issues and pull requests on GitHub: :issue:`1084`.

  • Implemented views comparison and disjoints in C instead of Python helpers.

    The performance boost is about 40%.

    Related issues and pull requests on GitHub: :issue:`1096`.


6.2.0

(2025-03-17)

Bug fixes

  • Fixed in checks throwing an exception instead of returning :data:`False` when testing non-strings.

    Related issues and pull requests on GitHub: :issue:`1045`.

  • Fixed a leak when the last accessed module in PyInit__multidict() init is not released.

    Related issues and pull requests on GitHub: :issue:`1061`.

Features

Packaging updates and notes for downstreams

  • Started publishing wheels made for the free-threaded build of CPython 3.13 -- by :user:`lysnikolaou`.

    Related issues and pull requests on GitHub: :issue:`1015`.

Miscellaneous internal changes

  • Used stricter typing across the code base, resulting in improved typing accuracy across multidict classes. Funded by an NLnet grant.

    Related issues and pull requests on GitHub: :issue:`1046`.


6.1.0 (2024-09-09)

Bug fixes

  • Covered the unreachable code path in multidict._multidict_base._abc_itemsview_register() with typing -- by :user:`skinnyBat`.

    Related issues and pull requests on GitHub: :issue:`928`.

Features

Removals and backward incompatible breaking changes

Contributor-facing changes

  • Added tests to have full code coverage of the multidict._multidict_base._viewbaseset_richcmp() function -- by :user:`skinnyBat`.

    Related issues and pull requests on GitHub: :issue:`928`.

  • The deprecated ::set-output workflow command has been replaced by the $GITHUB_OUTPUT environment variable in the GitHub Actions CI/CD workflow definition.

    Related issues and pull requests on GitHub: :issue:`940`.

  • codecov-action has been temporarily downgraded to v3 in the GitHub Actions CI/CD workflow definitions in order to fix uploading coverage to Codecov. See this issue for more details.

    Related issues and pull requests on GitHub: :issue:`941`.

  • In the GitHub Actions CI/CD workflow definition, the Get pip cache dir step has been fixed for Windows runners by adding shell: bash. See actions/runner#2224 for more details.

    Related issues and pull requests on GitHub: :issue:`942`.

  • Interpolation of the pip cache keys has been fixed by adding missing $ syntax in the GitHub Actions CI/CD workflow definition.

    Related issues and pull requests on GitHub: :issue:`943`.


6.0.5 (2024-02-01)

Bug fixes

Improved documentation

Packaging updates and notes for downstreams

Contributor-facing changes


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. (:issue:`798`)

6.0.3 (2022-12-03)

Features

6.0.2 (2022-01-24)

Bugfixes

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. (:issue:`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. (:issue:`681`)

Bugfixes

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

Deprecations and Removals

Misc

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. (:issue:`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. (:issue:`620`)

5.1.0 (2020-12-03)

Features

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

Bugfixes

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

5.0.1 (2020-11-14)

Bugfixes


5.0.0 (2020-10-12)

Features

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

Removal

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

Misc