Skip to content

Update packaging to 26.0#574

Open
pyup-bot wants to merge 1 commit intomasterfrom
pyup-update-packaging-23.1-to-26.0
Open

Update packaging to 26.0#574
pyup-bot wants to merge 1 commit intomasterfrom
pyup-update-packaging-23.1-to-26.0

Conversation

@pyup-bot
Copy link
Collaborator

This PR updates packaging from 23.1 to 26.0.

Changelog

26.0

~~~~~~~~~~~~~~~~~

Features:

* PEP 751: support pylock (:pull:`900`)
* PEP 794: import name metadata (:pull:`948`)
* Support for writing metadata to a file (:pull:`846`)
* Support ``__replace__`` on Version (:pull:`1003`)
* Support positional pattern matching for ``Version`` and ``SpecifierSet`` (:pull:`1004`)

Behavior adaptations:

* PEP 440 handling of prereleases for ``Specifier.contains``, ``SpecifierSet.contains``, and ``SpecifierSet.filter`` (:pull:`897`)
* Handle PEP 440 edge case in ``SpecifierSet.filter`` (:pull:`942`)
* Adjust arbitrary equality intersection preservation in ``SpecifierSet`` (:pull:`951`)
* Return ``False`` instead of raising for ``.contains`` with invalid version (:pull:`932`)
* Support arbitrary equality on arbitrary strings for ``Specifier`` and ``SpecifierSet``'s ``filter`` and ``contains`` method. (:pull:`954`)
* Only try to parse as ``Version`` on certain marker keys, return ``False`` on unequal ordered comparisons (:pull:`939`)

Fixes:

* Update ``_hash`` when unpickling ``Tag()`` (:pull:`860`)
* Correct comment and simplify implicit prerelease handling in ``Specifier.prereleases`` (:pull:`896`)
* Use explicit ``_GLibCVersion`` ``NamedTuple`` in ``_manylinux`` (:pull:`868`)
* Detect invalid license expressions containing ``()`` (:pull:`879`)
* Correct regex for metadata ``'name'`` format (:pull:`925`)
* Improve the message around expecting a semicolon (:pull:`833`)
* Support nested parens in license expressions (:pull:`931`)
* Add space before at symbol in ``Requirements`` string (:pull:`953`)
* A root logger use found, use a ``packaging`` logger instead (:pull:`965`)
* Better support for subclassing ``Marker`` and ``Requirement`` (:pull:`1022`)
* Normalize all extras, not just if it comes first (:pull:`1024`)
* Don't produce a broken repr if ``Marker`` fails to construct (:pull:`1033`)

Performance:

* Avoid recompiling regexes in the tokenizer for a 3x speedup (:pull:`1019`)
* Improve performance in ``_manylinux.py`` (:pull:`869`)
* Minor cleanups to ``Version`` (:pull:`913`)
* Skip redundant creation of ``Version``'s in specifier comparison (:pull:`986`)
* Cache the ``Specifier``'s ``Version`` (:pull:`985`)
* Make ``Version`` a little faster (:pull:`987`)
* Minor ``Version`` regex cleanup (:pull:`990`)
* Faster regex on Python 3.11.5+ for ``Version`` (:pull:`988`, :pull:`1055`)
* Lazily calculate ``_key`` in ``Version`` (:pull:`989`, :pull:`1048`)
* Faster ``canonicalize_version`` (:pull:`993`)
* Use ``re.fullmatch`` in a couple more places (:pull:`992`, :pull:`1029`)
* Use ``map`` instead of generator (:pull:`996`)
* Deprecate ``._version`` (``_Version``, a ``NamedTuple``) (:pull:`995`, :pull:`1062`)
* Avoid duplicate ``Version`` creation in ``canonicalize_version`` (:pull:`994`)
* Add ``__slots__`` to core classes  (:pull:`1001`, :pull:`1002`, :pull:`1032`)
* Use ``Version.__replace__`` in specifier comparison (:pull:`999`)
* Use ``_get_spec_version`` in more places in ``Specifier`` (:pull:`1005`)
* Pull ``set`` construction out of function (:pull:`1012`)
* Letter normalization dict for prereleases and the like (:pull:`1014`)
* Use ``str.partition`` in ``_parse_project_urls`` (:pull:`1013`)
* Avoid normalizing extras again when comparing (:pull:`1028`)
* Speed up ``Version.__str__`` by about 10% (:pull:`997`)
* Much faster ``canonicalize_name`` by avoiding a regex (:pull:`1030`, :pull:`1047`, :pull:`1064`)
* Faster zero stripping (:pull:`1058`)

Type annotations:

* Fix a type annotation (:pull:`907`)
* Fix type hint of function used with ``contextlib.contextmanager`` (:pull:`1046`)
* Fix tags return type in ``parse_wheel_filename`` docs (:pull:`973`)
* Add type hint for ``_version`` in ``.version.Version`` (:pull:`927`)
* Changed static type annotations in prereleases setter method in ``specifier.py`` (:pull:`930`)
* Statically type our test suite (:pull:`982`)

Internal:

* Test and declare support for Python 3.14 (:pull:`901`)
* Change our license metadata to use an SPDX license expression (:pull:`881`, :pull:`924`)
* Expand the Ruff checks run on our codebase (:pull:`835`, :pull:`957`, :pull:`959`,
:pull:`963`, :pull:`956`, :pull:`961`, :pull:`964`, :pull:`958`, :pull:`960`, :pull:`968`,
:pull:`967`, :pull:`966`, :pull:`969`, :pull:`980`, :pull:`979`, :pull:`962`, :pull:`984`,
:pull:`972`)
* Add spell checking (:pull:`904`, :pull:`910`, :pull:`1015`)
* Improve links back to source in the documentation (:pull:`991`)
* Add case insensitivity tests for arbitrary equality (:pull:`975`)
* Fix incorrectly implicitly concatenated string in specifiers test (:pull:`946`)
* Simpler else instead of assert in a check (:pull:`1027`, :pull:`1031`)
* Synchronize documentation and code for markers (:pull:`1008`)
* Use the GitHub Actions slim runner for the all pass check (:pull:`1021`)
* Use ``actionlint`` to check CI workflows (:pull:`1052`)
* Use Trusted Publishing (:pull:`893`, :pull:`1043`, :pull:`1045`, :pull:`1051`)
* Use zizmor to check CI (:pull:`1035`)
* Test on first public release of CPython 3.11 and newer (:pull:`1056`)


Since the final release candidate: Faster ``canonicalize_name``, especially on
Python 3.12 and 3.13, where performance regressed previously (:pull:`1064`),
and reintroduce (deprecated) support for ``Version._.version`` (:pull:`1062`).

26.0rc3

~~~~~~~~~~~~~~~~~~~~

Third release candidate for 26.0. Avoid bug in CPython 3.11.0-3.11.4 and older
PyPy 3.11 (:pull:`1055`).

26.0rc2

~~~~~~~~~~~~~~~~~~~~

Second release candidate for 26.0. Fixed a regression in (private)
``Version._key`` for ``packaging_legacy`` (:pull:`1048`), and speed up
stripping zeros a little more (:pull:`1058`).

26.0rc1

~~~~~~~~~~~~~~~~~~~~

First release candidate for 26.0.

25.0

~~~~~~~~~~~~~~~~~

* PEP 751: Add support for ``extras`` and ``dependency_groups`` markers. (:issue:`885`)
* PEP 738: Add support for Android platform tags. (:issue:`880`)

24.2

~~~~~~~~~~~~~~~~~

* PEP 639: Implement License-Expression and License-File (:issue:`828`)
* Use ``!r`` formatter for error messages with filenames (:issue:`844`)
* Add support for PEP 730 iOS tags (:issue:`832`)
* Fix prerelease detection for ``>`` and ``<`` (:issue:`794`)
* Fix uninformative error message (:issue:`830`)
* Refactor ``canonicalize_version`` (:issue:`793`)
* Patch python_full_version unconditionally (:issue:`825`)
* Fix doc for ``canonicalize_version`` to mention ``strip_trailing_zero`` and a typo in a docstring (:issue:`801`)
* Fix typo in Version ``__str__`` (:issue:`817`)
* Support creating a ``SpecifierSet`` from an iterable of ``Specifier`` objects (:issue:`775`)

24.1

~~~~~~~~~~~~~~~~~

* Document ``markers.default_environment()`` (:issue:`753`).
* Add support for Python 3.13 (:issue:`783`).
* Modernise type annotations (:issue:`785`).
* Work around ``platform.python_version()`` returning non PEP 440 compliant version
for non-tagged CPython builds (:issue:`802`).

24.0

~~~~~~~~~~~~~~~~~

* Do specifier matching correctly when the specifier contains an epoch number
and has more components than the version (:issue:`683`)
* Support the experimental ``--disable-gil`` builds in packaging.tags
(:issue:`727`)
* BREAKING: Make optional ``metadata.Metadata`` attributes default to ``None`` (:issue:`733`)
* Fix errors when trying to access the ``description_content_type``, ``keywords``,
and ``requires_python`` attributes on ``metadata.Metadata`` when those values
have not been provided (:issue:`733`)
* Fix a bug preventing the use of the built in ``ExceptionGroup`` on versions of
Python that support it (:issue:`725`)

23.2

~~~~~~~~~~~~~~~~~

* Document calendar-based versioning scheme (:issue:`716`)
* Enforce that the entire marker string is parsed (:issue:`687`)
* Requirement parsing no longer automatically validates the URL (:issue:`120`)
* Canonicalize names for requirements comparison (:issue:`644`)
* Introduce ``metadata.Metadata`` (along with ``metadata.ExceptionGroup`` and ``metadata.InvalidMetadata``; :issue:`570`)
* Introduce the ``validate`` keyword parameter to ``utils.normalize_name()`` (:issue:`570`)
* Introduce ``utils.is_normalized_name()`` (:issue:`570`)
* Make ``utils.parse_sdist_filename()`` and ``utils.parse_wheel_filename()``
raise ``InvalidSdistFilename`` and ``InvalidWheelFilename``, respectively,
when the version component of the name is invalid
* Remove support for Python 3.7 (:issue:`783`)
Links

@codecov
Copy link

codecov bot commented Jan 22, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 100.00%. Comparing base (5f02dc7) to head (e828ae0).

Additional details and impacted files
@@            Coverage Diff            @@
##            master      #574   +/-   ##
=========================================
  Coverage   100.00%   100.00%           
=========================================
  Files           12        12           
  Lines          126       126           
=========================================
  Hits           126       126           
Flag Coverage Δ
?

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant