packaging
Advanced tools
+17
-0
| Changelog | ||
| --------- | ||
| 26.0rc3 - 2026-01-15 | ||
| ~~~~~~~~~~~~~~~~~~~~ | ||
| Fixes: | ||
| * Support CPython 3.11.0-3.11.4 and older PyPy3.11 (:pull:`1055`) | ||
| Performance: | ||
| * Faster zero stripping (:pull:`1058`) | ||
| CI: | ||
| * Test on first public release of CPython 3.11 and newer (:pull:`1056`) | ||
| * Fix publication job (again) (:pull:`1051`) | ||
| * Use ``actionlint`` to check CI workflows (:pull:`1052`) | ||
| 26.0rc2 - 2026-01-12 | ||
@@ -5,0 +22,0 @@ ~~~~~~~~~~~~~~~~~~~~ |
@@ -8,3 +8,3 @@ Metadata | ||
| Both `source distributions`_ and `binary distributions`_ | ||
| (_sdists_ and _wheels_, respectively) contain files recording the | ||
| (*sdists* and *wheels*, respectively) contain files recording the | ||
| `core metadata`_ for the distribution. This information is used for | ||
@@ -11,0 +11,0 @@ everything from recording the name of the distribution to the |
+1
-1
| Metadata-Version: 2.4 | ||
| Name: packaging | ||
| Version: 26.0rc2 | ||
| Version: 26.0rc3 | ||
| Summary: Core utilities for Python packages | ||
@@ -5,0 +5,0 @@ Author-email: Donald Stufft <donald@stufft.io> |
@@ -9,3 +9,3 @@ # This file is dual licensed under the terms of the Apache License, Version | ||
| __version__ = "26.0rc2" | ||
| __version__ = "26.0rc3" | ||
@@ -12,0 +12,0 @@ __author__ = "Donald Stufft and individual contributors" |
+17
-16
@@ -179,4 +179,11 @@ # This file is dual licensed under the terms of the Apache License, Version | ||
| # Possessive qualifiers were added in Python 3.11. | ||
| # CPython 3.11.0-3.11.4 had a bug: https://github.com/python/cpython/pull/107795 | ||
| # Older PyPy also had a bug. | ||
| VERSION_PATTERN = ( | ||
| _VERSION_PATTERN_OLD if sys.version_info < (3, 11) else _VERSION_PATTERN | ||
| _VERSION_PATTERN_OLD | ||
| if (sys.implementation.name == "cpython" and sys.version_info < (3, 11, 5)) | ||
| or (sys.implementation.name == "pypy" and sys.version_info < (3, 11, 13)) | ||
| or sys.version_info < (3, 11) | ||
| else _VERSION_PATTERN | ||
| ) | ||
@@ -619,8 +626,9 @@ """ | ||
| """ | ||
| # Unlike _strip_trailing_zeros, this leaves one 0. | ||
| # This leaves one 0. | ||
| rel = super().release | ||
| i = len(rel) | ||
| len_release = len(rel) | ||
| i = len_release | ||
| while i > 1 and rel[i - 1] == 0: | ||
| i -= 1 | ||
| return rel[:i] | ||
| return rel if i == len_release else rel[:i] | ||
@@ -667,13 +675,2 @@ | ||
| def _strip_trailing_zeros(release: tuple[int, ...]) -> tuple[int, ...]: | ||
| # We want to strip trailing zeros from a tuple of values. This starts | ||
| # from the end and returns as soon as it finds a non-zero value. When | ||
| # reading a lot of versions, this is a fairly hot function, so not using | ||
| # enumerate/reversed, which is slightly slower. | ||
| for i in range(len(release) - 1, -1, -1): | ||
| if release[i] != 0: | ||
| return release[: i + 1] | ||
| return () | ||
| def _cmpkey( | ||
@@ -689,3 +686,7 @@ epoch: int, | ||
| # trailing zeros removed. We will use this for our sorting key. | ||
| _release = _strip_trailing_zeros(release) | ||
| len_release = len(release) | ||
| i = len_release | ||
| while i and release[i - 1] == 0: | ||
| i -= 1 | ||
| _release = release if i == len_release else release[:i] | ||
@@ -692,0 +693,0 @@ # We need to "trick" the sorting algorithm to put 1.0.dev0 before 1.0a0. |
Alert delta unavailable
Currently unable to show alert delta for PyPI packages.
662195
0.05%13220
0.02%