Releases: pypa/packaging
Releases · pypa/packaging
26.0rc3
Immutable
release. Only release title and notes can be modified.
What's Changed
Fixes:
Performance:
CI:
- Test on first public release of CPython 3.11 and newer by @henryiii in #1056
- Fix publication job (again) by @henryiii in #1051
- Use
actionlintto check CI workflows by @miketheman in #1052
Documentation:
- Fix formatting of distribution types in metadata.rst by @brettcannon in #1053
Full Changelog: 26.0rc2...26.0rc3
26.0rc2
Immutable
release. Only release title and notes can be modified.
What's Changed
Fixes:
Performance:
Internal:
- Fix type hint of function used with
contextlib.contextmanagerby @SpecLad in #1046 - Always run tests by @henryiii in #1044
- Fix a changelog number by @henryiii in #1042
- Fix the publish job by @henryiii in #1043
- Get the correct tag on publish by @henryiii in #1045
Full Changelog: 26.0rc1...26.0rc2
26.0rc1
Immutable
release. Only release title and notes can be modified.
What's Changed
Features:
- PEP 751: support pylock by @sbidoul in #900
- PEP 794: import name metadata by @brettcannon in #948
- Support writing metadata by @henryiii in #846
- Support
__replace__forVersionby @henryiii in #1003 - Support positional pattern matching for
VersionandSpecifierby @henryiii in #1004
Behavior adaptations:
- PEP 440 handling of prereleases for
Specifier.contains,SpecifierSet.contains, andSpecifierSet.filterby @notatallshaw in #897 - Handle PEP 440 edge case in
SpecifierSet.filterby @notatallshaw in #942 - Adjust arbitrary equality intersection preservation in
SpecifierSetby @notatallshaw in #951 - Return
Falseinstead of raising for.containswith invalid version by @Liam-DeVoe in #932 - Support arbitrary equality on arbitrary strings for
SpecifierandSpecifierSet'sfilterandcontainsmethod. by @notatallshaw in #954 - Only try to parse as
Versionon certain marker keys, returnFalseon unequal ordered comparsions by @JP-Ellis in #939
Fixes:
- Update
_hashwhen unpicklingTag()by @dholth in #860 - Correct comment and simplify implicit prerelease handling in
Specifier.prereleasesby @notatallshaw in #896 - Use explicit
_GLibCVersionNamedTuplein_manylinuxby @cthoyt in #868 - Detect invalid license expressions containing
()by @bwoodsend in #879 - Correct regex for metadata
'name'format by @di in #925 - Improve the message around expecting a semicolon by @pradyunsg in #833
- Support nested parens in license expressions by @Liam-DeVoe in #931
- Add space before at symbol in
Requirementsstring by @henryiii in #953 - A root logger use found by ruff LOG, use
packaginglogger instead by @henryiii in #965 - Better support for subclassing
MarkerandRequirementby @henryiii in #1022 - Normalize all extras, not just if it comes first by @henryiii in #1024
- Don't produce a broken repr if
Markerfails to construct by @henryiii in #1033
Performance:
- Avoid recompiling regexes in the tokenizer for a 3x speedup by @hauntsaninja in #1019
- Improve performance in
_manylinux.pyby @cthoyt in #869 - Minor cleanups to
Versionby @bearomorphism in #913 - Skip redundant creation of
Versions in specifier comparison by @notatallshaw in #986 - Cache
Specifier's Version by @notatallshaw in #985 - Make
Versiona little faster by @henryiii in #987 - Minor
Versionregex cleanup by @henryiii in #990 - Faster regex on Python 3.11+ by @henryiii in #988
- Lazily calculate
_keyinVersionby @notatallshaw in #989 - Faster
canonicalize_versionby @henryiii in #993 - Use
fullmatchin a couple more places by @henryiii in #992 - Use
fullmatchfor markers too by @henryiii in #1029 - Use
mapinstead of generator by @henryiii in #996 - Drop
._version(_Version, aNamedTuple) by @henryiii in #995 - Avoid duplicate
Versioncreation incanonicalize_versionby @henryiii in #994 - Add
__slots__toVersionby @henryiii in #1001 - Add
__slots__toSpecifiers by @henryiii in #1002 - Add
__slots__toNodes by @henryiii in #1032 - Use
version.__replace__in specifier comparison by @notatallshaw in #999 - Use
_get_spec_versionin more places inSpecifierby @notatallshaw in #1005 - Pull
setconstruction out of function by @henryiii in #1012 - Letter normalization dict for prereleases and the like by @henryiii in #1014
- Avoid normalizing extras again when comparing by @henryiii in #1028
- Speed up
Version.__str__by about 10% by @henryiii in #997 - Double the performance of
canonicalize_nameby avoiding a regex by @henryiii in #1030
Type annotations:
- Fix a type annotation by @brettcannon in #907
- Fix tags return type in
parse_wheel_filenamedocs by @ncoghlan in #973 - Add type hint for
_versionin.version.Versionby @brettcannon in #927 - Changed static type annotations in prereleases setter method in
specifier.pyby @subhajitsaha01 in #930 - Statically type the tests by @henryiii in #982
Internal:
- Test and declare support Python 3.14 by @henryiii in #901
- Modernize and speed up tests on Python 3.14 by @henryiii in #903
- Change our license metadata to use an SPDX license expression by @cdce8p in #881
- No need for
license-filesby @DimitriPapadopoulos in #924 - Update mypy by @hauntsaninja in #891
- Some config updates by @henryiii in #902
- Add spell check and rst check by @henryiii in #904
- Clean up ruff ignores by @henryiii in #905
- Update example for env marker
python_versionby @trim21 in #908 - Move codespell configuration into pyproject.toml by @yarikoptic in #910
- Check warning a little more precisely by @henryiii in #837
- Speed up mypy a little by @henryiii in #836
- Apply ruff/flake8-pyi rules (PYI) by @DimitriPapadopoulos in #835
- Better local runs for codespell by @henryiii in #911
- Remove outdated/confusing Gist link by @stefan6419846 in #921
- Fix docs and docs ci after #897 landed by @notatallshaw in #926
- Run twine-check on push in CI by @EpicWink in #922
ruffwas renamedruff-checkin pre-commit by @henryiii in #933- Fix incorrectly implicitly concatenated string in specifiers test by @notatallshaw in #946
- Simplify conditional by @ofek in #949
- Modernize nox, use dependency-groups for tests by @henryiii in #952
- Add more checks that don't affect anything by @henryiii in #957
- Enable Ruff ISC rule by @henryiii in #959
- Ruff code FLY by @henryiii in #963
- pytest
log_levelis better thanlog_cli_levelby @henryiii in #956 - Ruff code TRY by @henryiii in #961
- Add the ruff PL checks by @henryiii in #964
- Enable Ruff ARG rules by @henryiii in #958
- Ruff PT code (pytest) by @henryiii in #960
- Add ruff DTZ by @henryiii in #968
- Add ruff BLE by @henryiii in #967
- Add the ruff SIM checks by @henryiii in #966
- Adding ruff PERF by @henryiii in #969
- Move some config into coverage config by @henryiii in #971
- Check ruff C4 by @henryiii in #962
- Adding ruff T20 by @henryiii in #972
- Add a tests pass job by @henryiii in #977
- Add ruff TC by @henryiii in #980
- Adding part of ruff RET by @henryiii in #979
- Reorder mypy check by @henryiii in #983
- Enable ruff ALL by @henryiii in #984
- Link back to repo/source in furo by ...
25.0
What's Changed
- Re-add a test for Unicode file name parsing by @Siddhesh-Agarwal in #863
- Upgrade to ruff 0.9.1 by @DimitriPapadopoulos in #865
- Add support for PEP 738 Android tags by @mhsmith in #880
- feat(markers): support 'extras' and 'dependency_groups' markers by @frostming in #888
New Contributors
- @Siddhesh-Agarwal made their first contribution in #863
- @mhsmith made their first contribution in #880
- @frostming made their first contribution in #888
Full Changelog: 24.2...25.0
24.2
What's Changed
- The source is auto-formatted with ruff, not black by @DimitriPapadopoulos in #798
- Bump the github-actions group across 1 directory with 3 updates by @dependabot in #813
- Apply ruff rules (RUF) by @DimitriPapadopoulos in #800
- Fix typo in Version
__str__by @aryanpingle in #817 - Bump the github-actions group with 3 updates by @dependabot in #819
- Get rid of duplicate test cases by @DimitriPapadopoulos in #821
- Fix doc for canonicalize_version and a typo in a docstring by @Laurent-Dx in #801
- docs: public/base_version comparison by @henryiii in #818
- Apply ruff/bugbear rules (B) by @DimitriPapadopoulos in #787
- Apply ruff/pyupgrade rules (UP) by @DimitriPapadopoulos in #786
- Add a changelog entry for dropping Python 3.7 support by @alexwlchan in #824
- Patch python_full_version unconditionally by @jaraco in #825
- Refactor canonicalize_version by @jaraco in #793
- Allow creating a SpecifierSet from a list of specifiers by @pfmoore in #777
- Fix uninformative error message by @abravalheri in #830
- Fix prerelease detection for
>and<by @notatallshaw in #794 - Bump the github-actions group across 1 directory with 4 updates by @dependabot in #839
- Add support for PEP 730 iOS tags. by @freakboy3742 in #832
- Update the changelog to reflect 24.1 changes by @pradyunsg in #840
- Mention updating changelog in release process by @pradyunsg in #841
- Add a comment as to why
Metadata.nameisn't normalized by @brettcannon in #842 - Use !r formatter for error messages with filenames. by @Carreau in #844
- PEP 639: Implement License-Expression and License-File by @ewdurbin in #828
- Bump the github-actions group with 4 updates by @dependabot in #852
- Upgrade to latest mypy by @hauntsaninja in #853
- Extraneous quotes by @ewdurbin in #848
New Contributors
- @aryanpingle made their first contribution in #817
- @Laurent-Dx made their first contribution in #801
- @alexwlchan made their first contribution in #824
- @jaraco made their first contribution in #825
- @notatallshaw made their first contribution in #794
- @freakboy3742 made their first contribution in #832
- @Carreau made their first contribution in #844
- @ewdurbin made their first contribution in #828
Full Changelog: 24.1...24.2
24.1
What's Changed
- pyupgrade/black/isort/flake8 → ruff by @DimitriPapadopoulos in #769
- Add support for Python 3.13 and drop EOL 3.7 by @hugovk in #783
- Bump the github-actions group with 4 updates by @dependabot in #782
- Fix typo in
_parserdocstring by @pradyunsg in #784 - Modernise type annotations using FA rules from ruff by @pradyunsg in #785
- Document
markers.default_environment()by @edgarrmondragon in #753 - Bump the github-actions group with 3 updates by @dependabot in #789
- Work around platform.python_version() returning non PEP 440 compliant version for non-tagged CPython builds by @sbidoul in #802
New Contributors
- @dependabot made their first contribution in #782
- @edgarrmondragon made their first contribution in #753
Full Changelog: 24.0...24.1
24.0
What's Changed
- Fix specifier matching when the specifier is long and has an epoch by @SpecLad in #712
- Clarify version split/join usage by @uranusjr in #725
- Default optional metadata values to None by @dstufft in #734
- Stop using deprecated/removed keys by @dstufft in #739
- Correctly use the ExceptionGroup shim only when needed by @dstufft in #736
- Update CHANGELOG entry about
validatekwarg by @pradyunsg in #731 - Support --disable-gil builds (PEP 703) in packaging.tags by @colesbury in #728
- Skip
test_glibc_version_string_ctypes_raise_oserrorifctypesis unavailable by @kevinchang96 in #741 - Enable CodeQL by @joycebrum in #743
- PEP 703: Rename
Py_NOGILtoPy_GIL_DISABLEDby @hugovk in #747 - Replace PEP references with PUG links by @jeanas in #750
- Remove coverage ignore for non-existent file by @shenanigansd in #752
- Update URLs by @DimitriPapadopoulos in #764
- Configure dependabot by @joycebrum in #757
- Hash pin github actions by @joycebrum in #758
- Apply some refurb suggestions by @DimitriPapadopoulos in #763
- Appply some bugbear suggestions by @DimitriPapadopoulos in #761
- Apply some ruff suggestions by @DimitriPapadopoulos in #772
- Add riscv64 as a supported manylinux architecture by @markdryan in #751
New Contributors
- @colesbury made their first contribution in #728
- @kevinchang96 made their first contribution in #741
- @jeanas made their first contribution in #750
- @shenanigansd made their first contribution in #752
- @markdryan made their first contribution in #751
Full Changelog: 23.2...24.0
23.2
What's Changed
- parse_marker should consume the entire source string by @mwerschy in #687
- Create a Security Policy file by @joycebrum in #695
- Add python 3.12 to CI by @mayeut in #689
- Remove URL validation from requirement parsing by @uranusjr in #684
- Add types for packaging.version._Version by @hauntsaninja in #665
- Add PyPy 3.10 to CI by @mayeut in #699
- Remove unused argument in
_manylinux._is_compatibleby @mayeut in #700 - Canonicalize names for requirements comparison by @astrojuanlu in #696
- Add platform tag support for LoongArch by @loongson-zn in #693
- Ability to install
armv7l manylinux/musllinuxwheels onarmv8lby @mayeut in #690 - Include CHANGELOG.rst in sdist by @astrojuanlu in #704
- Update pyupgrade to Python 3.7+ by @fangchenli in #580
- Fix version pattern pre-releases by @deathaxe in #705
- Fix typos found by codespell by @DimitriPapadopoulos in #706
- Support enriched metadata by @brettcannon in #686
- Correct rST syntax in CHANGELOG.rst by @atugushev in #709
- fix: platform tag for GraalPy by @mayeut in #711
- Document that this library uses a calendar-based versioning scheme by @faph in #717
- fix: Update copyright date for docs by @garrypolley in #713
- Bump pip version to avoid known vulnerabilities by @joycebrum in #720
- Typing annotations fixed in version.py by @jolaf in #723
- parse_{sdist,wheel}_filename: don't raise InvalidVersion by @SpecLad in #721
- Fix code blocks in CHANGELOG.md by @edmorley in #724
New Contributors
- @mwerschy made their first contribution in #687
- @joycebrum made their first contribution in #695
- @astrojuanlu made their first contribution in #696
- @loongson-zn made their first contribution in #693
- @fangchenli made their first contribution in #580
- @deathaxe made their first contribution in #705
- @DimitriPapadopoulos made their first contribution in #706
- @atugushev made their first contribution in #709
- @faph made their first contribution in #717
- @garrypolley made their first contribution in #713
- @jolaf made their first contribution in #723
- @SpecLad made their first contribution in #721
- @edmorley made their first contribution in #724
Full Changelog: 23.1...23.2
23.1
What's Changed
- chore: add typed classifier by @miketheman in #655
- Improve parser error messaging around mistakes in/around version specifiers by @pradyunsg in #662
- Upgrade to latest mypy by @hauntsaninja in #664
- Delete print() from test_tags by @nikodemas in #668
- Update our linters by @pradyunsg in #676
- Improve error for local version label with unsupported operators by @pradyunsg in #675
- Parse raw metadata by @brettcannon in #671
- Handle prefix match with zeros at end of prefix correctly by @pradyunsg in #674
- Relax typing of
_keyon_BaseVersionby @di in #669 - Replace spaces in platform names with underscores by @tucked in #620
- Import underlying parser function as an underscored variable by @pradyunsg in #663
New Contributors
- @miketheman made their first contribution in #655
- @nikodemas made their first contribution in #668
- @tucked made their first contribution in #620
Full Changelog: 23.0...23.1
23.0
What's Changed
- Remove unused LPAREN token from tokenizer by @hrnciar in #630
- Reorganise the project layout and version management by @pradyunsg in #626
- Correctly handle non-normalised specifiers in requirements by @pradyunsg in #634
- Use stable Python 3.11 in tests by @153957 in #641
- Fix typing for
specifiers.BaseSpecifier.filter()by @henryiii in #643 - Correctly handle trailing whitespace on URL requirements by @pradyunsg in #642
- refactor _generic_api to use EXT_SUFFIX by @mattip in #607
- Allow
"extra"to beNonein the marker environment by @pradyunsg in #650 - Fix typos by @kianmeng in #648
- Update changelog for release by @pradyunsg in #656
New Contributors
Full Changelog: 22.0...23.0