- update to 26.0:
* Features:
- PEP 751: support pylock (PR #900)
- PEP 794: import name metadata (PR #948)
- Support for writing metadata to a file (PR #846)
- Support __replace__ on Version (PR #1003)
- Support positional pattern matching for Version and SpecifierSet (PR #1004)
* Behavior adaptations:
- PEP 440 handling of prereleases for Specifier.contains,
SpecifierSet.contains, and SpecifierSet.filter (PR #897)
- Handle PEP 440 edge case in SpecifierSet.filter (PR #942)
- Adjust arbitrary equality intersection preservation in SpecifierSet (PR #951)
- Return False instead of raising for .contains with invalid version (PR #932)
- Support arbitrary equality on arbitrary strings for Specifier
and SpecifierSet’s filter and contains method. (PR #954)
- Only try to parse as Version on certain marker keys,
return False on unequal ordered comparisons (PR #939)
* Fixes:
- Update _hash when unpickling Tag() (PR #860)
- Correct comment and simplify implicit prerelease handling in
Specifier.prereleases (PR #896)
- Use explicit _GLibCVersion NamedTuple in _manylinux (PR #868)
- Detect invalid license expressions containing () (PR #879)
- Correct regex for metadata 'name' format (PR #925)
- Improve the message around expecting a semicolon (PR #833)
- Support nested parens in license expressions (PR #931)
- Add space before at symbol in Requirements string (PR #953)
- A root logger use found, use a packaging logger instead (PR #965)
- Better support for subclassing Marker and Requirement (PR #1022)
- Normalize all extras, not just if it comes first (PR #1024)
- Don’t produce a broken repr if Marker fails to construct (PR #1033)
* Performance:
- Avoid recompiling regexes in the tokenizer for a 3x speedup (PR #1019)
- Improve performance in _manylinux.py (PR #869)
- Minor cleanups to Version (PR #913)
- Skip redundant creation of Version’s in specifier comparison (PR #986)
- Cache the Specifier’s Version (PR #985)
- Make Version a little faster (PR #987)
- Minor Version regex cleanup (PR #990)
- Faster regex on Python 3.11.5+ for Version (PR #988, PR #1055)
- Lazily calculate _key in Version (PR #989, PR #1048)
- Faster canonicalize_version (PR #993)
- Use re.fullmatch in a couple more places (PR #992, PR #1029)
- Use map instead of generator (PR #996)
- Deprecate ._version (_Version, a NamedTuple) (PR #995, PR #1062)
- Avoid duplicate Version creation in canonicalize_version (PR #994)
- Add __slots__ to core classes (PR #1001, PR #1002, PR #1032)
- Use Version.__replace__ in specifier comparison (PR #999)
- Use _get_spec_version in more places in Specifier (PR #1005)
- Pull set construction out of function (PR #1012)
- Letter normalization dict for prereleases and the like (PR #1014)
- Use str.partition in _parse_project_urls (PR #1013)
- Avoid normalizing extras again when comparing (PR #1028)
- Speed up Version.__str__ by about 10% (PR #997)
- Much faster canonicalize_name by avoiding a regex
(PR #1030, PR #1047, PR #1064)
- Faster zero stripping (PR #1058)
* Type annotations:
- Fix a type annotation (PR #907)
- Fix type hint of function used with contextlib.contextmanager (PR #1046)
- Fix tags return type in parse_wheel_filename docs (PR #973)
- Add type hint for _version in .version.Version (PR #927)
- Changed static type annotations in prereleases setter method
in specifier.py (PR #930)
- Statically type our test suite (PR #982)
* Internal:
- Test and declare support for Python 3.14 (PR #901)
- Change our license metadata to use an SPDX license expression
(PR #881, PR #924)
- Expand the Ruff checks run on our codebase (PR #835, PR #957,
PR #959, PR #963, PR #956, PR #961, PR #964, PR #958, PR #960,
PR #968, PR #967, PR #966, PR #969, PR #980, PR #979, PR #962,
PR #984, PR #972)
- Add spell checking (PR #904, PR #910, PR #1015)
- Improve links back to source in the documentation (PR #991)
- Add case insensitivity tests for arbitrary equality (PR #975)
- Fix incorrectly implicitly concatenated string in specifiers test (PR #946)
- Simpler else instead of assert in a check (PR #1027, PR #1031)
- Synchronize documentation and code for markers (PR #1008)
- Use the GitHub Actions slim runner for the all pass check (PR #1021)
- Use actionlint to check CI workflows (PR #1052)
- Use Trusted Publishing (PR #893, PR #1043, PR #1045, PR #1051)
- Use zizmor to check CI (PR #1035)
- Test on first public release of CPython 3.11 and newer (PR #1056)
Since the final release candidate: Faster canonicalize_name,
especially on Python 3.12 and 3.13, where performance regressed
previously (PR #1064), and reintroduce (deprecated) support for
Version._.version (PR #1062).
- Move %sle15_python_module_pythons macro just above the Name, outside
of all the if-else logic
OBS-URL: https://build.opensuse.org/request/show/1330019
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-packaging?expand=0&rev=38
- update to 26.0:
* Features:
- PEP 751: support pylock (PR #900)
- PEP 794: import name metadata (PR #948)
- Support for writing metadata to a file (PR #846)
- Support __replace__ on Version (PR #1003)
- Support positional pattern matching for Version and SpecifierSet (PR #1004)
* Behavior adaptations:
- PEP 440 handling of prereleases for Specifier.contains,
SpecifierSet.contains, and SpecifierSet.filter (PR #897)
- Handle PEP 440 edge case in SpecifierSet.filter (PR #942)
- Adjust arbitrary equality intersection preservation in SpecifierSet (PR #951)
- Return False instead of raising for .contains with invalid version (PR #932)
- Support arbitrary equality on arbitrary strings for Specifier
and SpecifierSet’s filter and contains method. (PR #954)
- Only try to parse as Version on certain marker keys,
return False on unequal ordered comparisons (PR #939)
* Fixes:
- Update _hash when unpickling Tag() (PR #860)
- Correct comment and simplify implicit prerelease handling in
Specifier.prereleases (PR #896)
- Use explicit _GLibCVersion NamedTuple in _manylinux (PR #868)
- Detect invalid license expressions containing () (PR #879)
- Correct regex for metadata 'name' format (PR #925)
- Improve the message around expecting a semicolon (PR #833)
- Support nested parens in license expressions (PR #931)
- Add space before at symbol in Requirements string (PR #953)
- A root logger use found, use a packaging logger instead (PR #965)
- Better support for subclassing Marker and Requirement (PR #1022)
- Normalize all extras, not just if it comes first (PR #1024)
- Don’t produce a broken repr if Marker fails to construct (PR #1033)
* Performance:
- Avoid recompiling regexes in the tokenizer for a 3x speedup (PR #1019)
- Improve performance in _manylinux.py (PR #869)
- Minor cleanups to Version (PR #913)
- Skip redundant creation of Version’s in specifier comparison (PR #986)
- Cache the Specifier’s Version (PR #985)
- Make Version a little faster (PR #987)
- Minor Version regex cleanup (PR #990)
- Faster regex on Python 3.11.5+ for Version (PR #988, PR #1055)
- Lazily calculate _key in Version (PR #989, PR #1048)
- Faster canonicalize_version (PR #993)
- Use re.fullmatch in a couple more places (PR #992, PR #1029)
- Use map instead of generator (PR #996)
- Deprecate ._version (_Version, a NamedTuple) (PR #995, PR #1062)
- Avoid duplicate Version creation in canonicalize_version (PR #994)
- Add __slots__ to core classes (PR #1001, PR #1002, PR #1032)
- Use Version.__replace__ in specifier comparison (PR #999)
- Use _get_spec_version in more places in Specifier (PR #1005)
- Pull set construction out of function (PR #1012)
- Letter normalization dict for prereleases and the like (PR #1014)
- Use str.partition in _parse_project_urls (PR #1013)
- Avoid normalizing extras again when comparing (PR #1028)
- Speed up Version.__str__ by about 10% (PR #997)
- Much faster canonicalize_name by avoiding a regex
(PR #1030, PR #1047, PR #1064)
- Faster zero stripping (PR #1058)
* Type annotations:
- Fix a type annotation (PR #907)
- Fix type hint of function used with contextlib.contextmanager (PR #1046)
- Fix tags return type in parse_wheel_filename docs (PR #973)
- Add type hint for _version in .version.Version (PR #927)
- Changed static type annotations in prereleases setter method
in specifier.py (PR #930)
- Statically type our test suite (PR #982)
* Internal:
- Test and declare support for Python 3.14 (PR #901)
- Change our license metadata to use an SPDX license expression
(PR #881, PR #924)
- Expand the Ruff checks run on our codebase (PR #835, PR #957,
PR #959, PR #963, PR #956, PR #961, PR #964, PR #958, PR #960,
PR #968, PR #967, PR #966, PR #969, PR #980, PR #979, PR #962,
PR #984, PR #972)
- Add spell checking (PR #904, PR #910, PR #1015)
- Improve links back to source in the documentation (PR #991)
- Add case insensitivity tests for arbitrary equality (PR #975)
- Fix incorrectly implicitly concatenated string in specifiers test (PR #946)
- Simpler else instead of assert in a check (PR #1027, PR #1031)
- Synchronize documentation and code for markers (PR #1008)
- Use the GitHub Actions slim runner for the all pass check (PR #1021)
- Use actionlint to check CI workflows (PR #1052)
- Use Trusted Publishing (PR #893, PR #1043, PR #1045, PR #1051)
- Use zizmor to check CI (PR #1035)
- Test on first public release of CPython 3.11 and newer (PR #1056)
Since the final release candidate: Faster canonicalize_name,
especially on Python 3.12 and 3.13, where performance regressed
previously (PR #1064), and reintroduce (deprecated) support for
Version._.version (PR #1062).
OBS-URL: https://build.opensuse.org/request/show/1330006
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-packaging?expand=0&rev=89
- skip primary build only for Tumbleweed (adjust version)
* Improve parser error messaging around mistakes in/around
- Ignore python3.6.2 since the test doesn't support it.
- Add Provides: for python*dist(packaging): work around boo#1186870
- add no-legacyversion-warning.patch to restore compatibility with 20.4
* Fix a bug that caused a 32-bit OS that runs on a 64-bit ARM CPU
- add issue_254.patch to fix tests under non-x86_64 pplatforms
* Add proper trove classifiers for PyPy support
* Scale back depending on ctypes for manylinux support detection
* Officially support Python 3.8
* Add major, minor, and micro aliases to packaging.version.Version
OBS-URL: https://build.opensuse.org/request/show/1277200
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-packaging?expand=0&rev=36
* Improve parser error messaging around mistakes in/around
- Ignore python3.6.2 since the test doesn't support it.
- Add Provides: for python*dist(packaging): work around boo#1186870
- add no-legacyversion-warning.patch to restore compatibility with 20.4
* Fix a bug that caused a 32-bit OS that runs on a 64-bit ARM CPU
- add issue_254.patch to fix tests under non-x86_64 pplatforms
* Add proper trove classifiers for PyPy support
* Scale back depending on ctypes for manylinux support detection
* Officially support Python 3.8
* Add major, minor, and micro aliases to packaging.version.Version
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-packaging?expand=0&rev=84
- update to 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`)
OBS-URL: https://build.opensuse.org/request/show/1158406
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-packaging?expand=0&rev=33
* 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`)
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-packaging?expand=0&rev=78
- Update ot 23.2:
* parse_marker should consume the entire source string in #687
* Create a Security Policy file in #695
* Add python 3.12 to CI in #689
* Remove URL validation from requirement parsing in #684
* Add types for packaging.version._Version in #665
* Add PyPy 3.10 to CI in #699
* Remove unused argument in _manylinux._is_compatible in #700
* Canonicalize names for requirements comparison in #696
* Add platform tag support for LoongArch in #693
* Ability to install armv7l manylinux/musllinux wheels on armv8l in #690
* Include CHANGELOG.rst in sdist in #704
* Update pyupgrade to Python 3.7+ in #580
* Fix version pattern pre-releases in #705
* Fix typos found by codespell in #706
* Support enriched metadata in #686
* Correct rST syntax in CHANGELOG.rst in #709
* fix: platform tag for GraalPy in #711
* Document that this library uses a calendar-based versioning scheme in #717
* fix: Update copyright date for docs in #713
* Bump pip version to avoid known vulnerabilities in #720
* Typing annotations fixed in version.py in #723
* parse_{sdist,wheel}_filename: don't raise InvalidVersion in #721
* Fix code blocks in CHANGELOG.md in #724
OBS-URL: https://build.opensuse.org/request/show/1124436
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-packaging?expand=0&rev=76
- update to 23.1
* chore: add typed classifier
* Improve parser error messaging around mistakes in/around
version specifiers
* Upgrade to latest mypy
* Delete print() from test_tags
* Update our linters
* Improve error for local version label with unsupported operators
* Parse raw metadata
* Handle prefix match with zeros at end of prefix correctly
* Relax typing of _key on _BaseVersion
* Replace spaces in platform names with underscores
* Import underlying parser function as an underscored variable
OBS-URL: https://build.opensuse.org/request/show/1079575
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-packaging?expand=0&rev=29
* chore: add typed classifier
* Improve parser error messaging around mistakes in/around
version specifiers
* Upgrade to latest mypy
* Delete print() from test_tags
* Update our linters
* Improve error for local version label with unsupported operators
* Parse raw metadata
* Handle prefix match with zeros at end of prefix correctly
* Relax typing of _key on _BaseVersion
* Replace spaces in platform names with underscores
* Import underlying parser function as an underscored variable
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-packaging?expand=0&rev=70
- Update to v23.0
* 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 be None in the marker environment by
@pradyunsg in #650
* Fix typos by @kianmeng in #648
* Update changelog for release by @pradyunsg in #656
OBS-URL: https://build.opensuse.org/request/show/1058267
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-packaging?expand=0&rev=66
- Update to v22.0
* Fix compatible version specifier incorrectly strip trailing '0'
by @kasium in #493
* Remove support for Python 3.6 by @abravalheri in #500
* Use concurrency limit in ci by @blink1073 in #510
* Fix issue link in changelog. by @bdice in #509
* chore: test with PyPy 3.8 & 3.9 by @mayeut in #512
* Accept locally installed prereleases by @q0w in #515
* Always run GHA workflows when they change by @mayeut in #516
* Add __hash__/__eq__ to requirements by @abravalheri in #499
* Upgrade to setup-python v3 and use caching for GHA by
@brettcannon in #521
* allow pre-release versions in marker evaluation by @graingert
in #523
* Error out from workflow on missing interpreter by @mayeut in
#525
* chore: update pre-commit config to the latest repos' versions
by @mayeut in #534
* chore: remove Windows PyPy 3.9 workaround on GHA by @mayeut in
#533
* Use pipx to run nox / build in GHA workflows by @mayeut in #517
* Run tests with all PyPy versions locally by @mayeut in #535
* Adhere to PEP 685 when evaluating markers with extras by
@hroncok in #545
* chore: update mypy and move to toml by @henryiii in #547
* Normalize extra comparison in markers for output by
@brettcannon in #549
* Evaluate markers under environment with empty "extra" by
@MrMino in #550
* Do not set extra in default_environment() by @sbidoul in #554
OBS-URL: https://build.opensuse.org/request/show/1045815
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-packaging?expand=0&rev=64
* Update documentation entry for 21.1.
* Update pin to pyparsing to exclude 3.0.0.
* PEP 656: musllinux support
* Drop support for Python 2.7, Python 3.4 and Python 3.5.
* Replace distutils usage with sysconfig
* Add support for zip files in ``parse_sdist_filename``
* Use cached ``_hash`` attribute to short-circuit tag equality comparisons
* Specify the default value for the ``specifier`` argument to ``SpecifierSet``
* Proper keyword-only "warn" argument in packaging.tags
* Correctly remove prerelease suffixes from ~= check
* Fix type hints for ``Version.post`` and ``Version.dev``
* Use typing alias ``UnparsedVersion``
* Improve type inference for ``packaging.specifiers.filter()``
* Tighten the return type of ``canonicalize_version()``
- drop no-legacyversion-warning.patch: setuptools has been updated
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-packaging?expand=0&rev=50