- Renaming to packvers to avoid confusion
- Fork of v21.3 to packaging2 as a workaround of pypa#530 and reinstate support for LegacyVersion and LegacySpecifier
- Add a
pp3-none-anytag (#311) - Replace the blank pyparsing 3 exclusion with a 3.0.5 exclusion (#481, #486)
- Fix a spelling mistake (#479)
- Update documentation entry for 21.1.
- Update pin to pyparsing to exclude 3.0.0.
- PEP 656: musllinux support (#411)
- Drop support for Python 2.7, Python 3.4 and Python 3.5.
- Replace distutils usage with sysconfig (#396)
- Add support for zip files in
parse_sdist_filename(#429) - Use cached
_hashattribute to short-circuit tag equality comparisons (#417) - Specify the default value for the
specifierargument toSpecifierSet(#437) - Proper keyword-only "warn" argument in packaging.tags (#403)
- Correctly remove prerelease suffixes from ~= check (#366)
- Fix type hints for
Version.postandVersion.dev(#393) - Use typing alias
UnparsedVersion(#398) - Improve type inference for
packaging.specifiers.filter()(#430) - Tighten the return type of
canonicalize_version()(#402)
- Run isort over the code base (#377)
- Add support for the
macosx_10_*_universal2platform tags (#379) - Introduce
packaging.utils.parse_wheel_filename()andparse_sdist_filename()(#387 and #389)
- Revert back to setuptools for compatibility purposes for some Linux distros (#363)
- Do not insert an underscore in wheel tags when the interpreter version number is more than 2 digits (#372)
No unreleased changes.
Note
This release was subsequently yanked, and these changes were included in 20.7.
- Fix flit configuration, to include LICENSE files (#357)
- Make intel a recognized CPU architecture for the universal macOS platform tag (#361)
- Add some missing type hints to packaging.requirements (issue:350)
- Officially support Python 3.9 (#343)
- Deprecate the
LegacyVersionandLegacySpecifierclasses (#321) - Handle
OSErroron non-dynamic executables when attempting to resolve the glibc version string.
- Canonicalize version before comparing specifiers. (#282)
- Change type hint for
canonicalize_nameto returnpackaging.utils.NormalizedName. This enables the use of static typing tools (like mypy) to detect mixing of normalized and un-normalized names.
- Fix changelog for 20.2.
- Fix a bug that caused a 32-bit OS that runs on a 64-bit ARM CPU (e.g. ARM-v8, aarch64), to report the wrong bitness.
- Fix a bug caused by reuse of an exhausted iterator. (#257)
- Add type hints (#191)
- Add proper trove classifiers for PyPy support (#198)
- Scale back depending on
ctypesfor manylinux support detection (#171) - Use
sys.implementation.namewhere appropriate forpackaging.tags(#193) - Expand upon the API provided by
packaging.tags:interpreter_name(),mac_platforms(),compatible_tags(),cpython_tags(),generic_tags()(#187) - Officially support Python 3.8 (#232)
- Add
major,minor, andmicroaliases topackaging.version.Version(#226) - Properly mark
packaginghas being fully typed by adding a py.typed file (#226)
- Remove dependency on
attrs(#178, #179) - Use appropriate fallbacks for CPython ABI tag (#181, #185)
- Add manylinux2014 support (#186)
- Improve ABI detection (#181)
- Properly handle debug wheels for Python 3.8 (#172)
- Improve detection of debug builds on Windows (#194)
Fix string representation of PEP 508 direct URL requirements with markers.
Better handling of file URLs
This allows for using
file:///absolute/path, which was previously prevented due to the missingnetloc.This allows for all file URLs that
urlunparseturns back into the original URL to be valid.
- Improve error messages when invalid requirements are given. (#129)
- Fix
utils.canonicalize_versionwhen supplying non PEP 440 versions.
- Drop support for python 2.6, 3.2, and 3.3.
- Define minimal pyparsing version to 2.0.2 (#91).
- Add
epoch,release,pre,dev, andpostattributes toVersionandLegacyVersion(#34). - Add
Version().is_devreleaseandLegacyVersion().is_devreleaseto make it easy to determine if a release is a development release. - Add
utils.canonicalize_versionto canonicalize version strings orVersioninstances (#121).
- Fix markers that utilize
inso that they render correctly. - Fix an erroneous test on Python RC releases.
- Add support for the deprecated
python_implementationmarker which was an undocumented setuptools marker in addition to the newer markers.
- Add support for the deprecated, PEP 345 environment markers in addition to the newer markers.
- Fix a regression in parsing requirements with whitespaces between the comma separators.
- Fix a regression in parsing requirements like
foo (==4).
- Fix a bug where
packaging.requirements:Requirementwas overly strict when matching legacy requirements.
- Add a function that implements the name canonicalization from PEP 503.
- Implement requirement specifiers from PEP 508.
- Relicense so that packaging is available under either the Apache License, Version 2.0 or a 2 Clause BSD license.
- Support installation of packaging when only distutils is available.
- Fix
==comparison when there is a prefix and a local version in play. (#41). - Implement environment markers from PEP 508.
- Normalize post-release spellings for rev/r prefixes. #35
- Fix an error where the arbitrary specifier (
===) was not correctly allowing pre-releases when it was being used. - Expose the specifier and version parts through properties on the
Specifierclasses. - Allow iterating over the
SpecifierSetto get access to all of theSpecifierinstances. - Allow testing if a version is contained within a specifier via the
inoperator.
- Fix a logic error that was causing inconsistent answers about whether or not
a pre-release was contained within a
SpecifierSetor not.
- Add
Version().is_postreleaseandLegacyVersion().is_postreleaseto make it easy to determine if a release is a post release. - Add
Version().base_versionandLegacyVersion().base_versionto make it easy to get the public version without any pre or post release markers. - Support the update to PEP 440 which removed the implied
!=V.*when using either>Vor<Vand which instead special cased the handling of pre-releases, post-releases, and local versions when using>Vor<V.
- Normalize release candidates as
rcinstead ofc. - Expose the
VERSION_PATTERNconstant, a regular expression matching a valid version.
- Ensure that versions are normalized before comparison when used in a
specifier with a less than (
<) or greater than (>) operator.
- BACKWARDS INCOMPATIBLE Refactor specifier support so that it can sanely handle legacy specifiers as well as PEP 440 specifiers.
- BACKWARDS INCOMPATIBLE Move the specifier support out of
packaging.versionintopackaging.specifiers.
- Add prerelease support to
Specifier. - Remove the ability to do
item in Specifier()and replace it withSpecifier().contains(item)in order to allow flags that signal if a prerelease should be accepted or not. - Add a method
Specifier().filter()which will take an iterable and returns an iterable with items that do not match the specifier filtered out.
- Allow
LegacyVersionandVersionto be sorted together. - Add
packaging.version.parse()to enable easily parsing a version string as either aVersionor aLegacyVersiondepending on it's PEP 440 validity.
- Initial release.