@@ -4,7 +4,91 @@ Changelog
44*unreleased *
55~~~~~~~~~~~~
66
7- No unreleased changes.
7+ Features:
8+
9+ * PEP 783: add handling for Emscripten wheel tags in (:pull: `804 `)
10+ * PEP 803: add handling for the ``abi3.abi3t `` free-threading tag in (:pull: `1099 `)
11+ * PEP 723: add ``packaging.dependency_groups `` module, based on the ``dependency-groups `` package in (:pull: `1065 `)
12+ * Add the ``packaging.direct_url `` module in (:pull: `944 `)
13+ * Add the ``packaging.errors `` module in (:pull: `1071 `)
14+ * Add ``SpecifierSet.is_unsatisfiable `` using ranges (new internals that will be expanded in future versions) in (:pull: `1119 `)
15+ * Add ``create_compatible_tags_selector `` to select compatible tags in (:pull: `1110 `)
16+ * Add a ``key `` argument to ``SpecifierSet.filter() `` in (:pull: `1068 `)
17+ * Support ``& `` and ``| `` for ``Marker ``'s in (:pull: `1146 `)
18+ * Normalize ``Version.__replace__ `` and add ``Version.from_parts `` in (:pull: `1078 `)
19+ * Add an option to validate compressed tag set sort order in ``parse_wheel_filename `` in (:pull: `1150 `)
20+
21+ Behavior adaptations:
22+
23+ * Narrow exclusion of pre-releases for ``<V.postN `` to match spec in (:pull: `1140 `)
24+ * Narrow exclusion of post-releases for ``>V `` to match spec in (:pull: `1141 `)
25+ * Rename ``format_full_version `` to ``_format_full_version `` to make it visibly private in (:pull: `1125 `)
26+ * Restrict local version to ASCII in (:pull: `1102 `)
27+
28+ Pylock (PEP 751) updates:
29+
30+ * Add pylock ``select `` function in (:pull: `1092 `)
31+ * Document pylock ``select() `` method and ``PylockSelectError `` in (:pull: `1153 `)
32+ * Add ``filename `` property to ``PackageSdist `` and ``PackageWheel ``, more validation in (:pull: `1095 `)
33+ * Give preference to path over url in (:pull: `1128 `)
34+ * Validate name/version consistency in file names in (:pull: `1114 `)
35+
36+ Fixes:
37+
38+ * Fix ``> `` comparison for versions with dev+local segments in (:pull: `1097 `)
39+ * Fix incorrect self-comparison for ``InfinityType `` and ``NegativeInfinityType `` in (:pull: `1093 `)
40+ * Canonicalize when deduplicating specifiers in ``SpecifierSet `` in (:pull: `1109 `)
41+ * Fix charset error message formatting in (:pull: `1121 `)
42+ * Handle the ``key `` parameter in ``SpecifierSet.filter `` when specifiers are empty and prerelease is ``False `` in (:pull: `1096 `)
43+ * Standardize inner components of ``repr `` output in (:pull: `1090 `)
44+ * ``Specifier ``'s ``=== `` uses original string, not normalized, when available in (:pull: `1124 `)
45+ * Propagate int-max-str-digits ``ValueError `` in (:pull: `1155 `)
46+
47+ Performance:
48+
49+ * Add fast path for parsing simple versions (digits and dots only) in (:pull: `1082 `)
50+ * Add fast path for ``Version `` to ``Version `` comparison by skipping ``_key `` property in (:pull: `1083 `)
51+ * Cache ``Version `` hash value in dedicated slot in (:pull: `1118 `)
52+ * Overhaul ``_cmpkey `` to remove use of custom objects in (:pull: `1116 `)
53+ * Skip ``__replace__ `` in Specifier comparison if not needed in (:pull: `1081 `)
54+ * ``SpecifierSet `` use ``tuple `` instead of ``frozenset `` for ``_specs `` in (:pull: `1108 `)
55+ * Speed up complex ``SpecifierSet `` filtering by implementing cost-based ordering in (:pull: `1105 `)
56+ * Speed up wildcard comparison in (:pull: `1111 `)
57+ * Stream PEP440 filtering in ``SpecifierSet.filter `` in (:pull: `1076 `)
58+ * Add ``__slots__ `` to ``Marker `` in (:pull: `1147 `)
59+ * Simply ``Specifier `` regex in (:pull: `1106 `)
60+ * Skip using the hash property internally in (:pull: `1115 `)
61+
62+ Internal:
63+
64+ * Add downstream testing in (:pull: `1049 `)
65+ * Benchmarking suite in (:pull: `1059 `)
66+ * Benchmark variance reduction in (:pull: `1107 `)
67+ * Add property-based tests for PEP 440 in (:pull: `1144 `)
68+ * Clean up a few ``collections.namedtuple `` in tests in (:pull: `1070 `)
69+ * Do not reload the tags module in tests in (:pull: `1152 `)
70+ * Limit ``dir() `` / tab-completion in REPL in (:pull: `1011 `)
71+ * Add more ``__all__`/`__dir__ `` in (:pull: `1069 `)
72+ * Cleanup pre-commit a bit in (:pull: `1080 `)
73+ * Pin pre-commit file, use dependabot in (:pull: `1133 `)
74+ * Remove sphinx-toolbox in (:pull: `1135 `)
75+ * Use docs group, faster readthedocs in (:pull: `1061 `)
76+ * Add free-threaded Python to CI in (:pull: `1098 `)
77+ * Simplify combining ``SpecifierSet.prereleases `` in (:pull: `1073 `)
78+ * Use direct operator methods in ``_compare_compatible `` in (:pull: `1100 `)
79+ * Remove unnecessary if statement in ``Specifier.prereleases `` in (:pull: `1074 `)
80+ * Remove unneeded nesting in ``Specifier.prereleases `` in (:pull: `1072 `)
81+
82+ Documentation:
83+
84+ * Fix documentation: grammar, typos, formatting, and outdated references in (:pull: `1084 `)
85+ * Fix versionadded for ``Version.from_parts() `` in (:pull: `1134 `)
86+ * Document ``& `` and ``| `` operators for combining ``Marker `` objects in (:pull: `1151 `)
87+ * Expand and clean up ``Version `` documentation in (:pull: `1089 `)
88+ * Move license docs inline in (:pull: `1131 `)
89+ * Move markers inline in (:pull: `1104 `)
90+ * Move tags docs to inline in (:pull: `1130 `)
91+ * Move utilities inline, like other modules in (:pull: `1103 `)
892
99326.0 - 2026-01-20
1094~~~~~~~~~~~~~~~~~
0 commit comments