0.45.0 (2024-11-08)
Refactored the
convert
command to not need setuptools to be installedDon't configure setuptools logging unless running
bdist_wheel
Added a redirection from
wheel.bdist_wheel.bdist_wheel
tosetuptools.command.bdist_wheel.bdist_wheel
to improve compatibility withsetuptools
' latest fixes.Projects are still advised to migrate away from the deprecated module and import the
setuptools
' implementation explicitly. (PR by @abravalheri)
0.44.0 (2024-08-04)
- Canonicalized requirements in METADATA file (PR by Wim Jeantine-Glenn)
- Deprecated the
bdist_wheel
module, as the code was migrated tosetuptools
itself
0.43.0 (2024-03-11)
- Dropped support for Python 3.7
- Updated vendored
packaging
to 24.0
0.42.0 (2023-11-26)
- Allowed removing build tag with
wheel tags --build ""
- Fixed
wheel pack
andwheel tags
writing updatedWHEEL
fields after a blank line, causing other tools to ignore them - Fixed
wheel pack
andwheel tags
writingWHEEL
with CRLF line endings or a mix of CRLF and LF - Fixed
wheel pack --build-number ""
not removing build tag fromWHEEL
(above changes by Benjamin Gilbert)
0.41.3 (2023-10-30)
- Updated vendored
packaging
to 23.2 - Fixed ABI tag generation for CPython 3.13a1 on Windows (PR by Sam Gross)
0.41.2 (2023-08-22)
- Fixed platform tag detection for GraalPy and 32-bit python running on an aarch64 kernel (PR by Matthieu Darbois)
- Fixed
wheel tags
to not list directories inRECORD
files (PR by Mike Taves) - Fixed ABI tag generation for GraalPy (PR by Michael Simacek)
0.41.1 (2023-08-05)
- Fixed naming of the
data_dir
directory in the presence of local version segment given viaegg_info.tag_build
(PR by Anderson Bravalheri) - Fixed version specifiers in
Requires-Dist
being wrapped in parentheses
0.41.0 (2023-07-22)
- Added full support of the build tag syntax to
wheel tags
(you can now set a build tag like123mytag
) - Fixed warning on Python 3.12 about
onerror
deprecation. (PR by Henry Schreiner) - Support testing on Python 3.12 betas (PR by Ewout ter Hoeven)
0.40.0 (2023-03-14)
- Added a
wheel tags
command to modify tags on an existing wheel (PR by Henry Schreiner) - Updated vendored
packaging
to 23.0 wheel unpack
now preserves the executable attribute of extracted files- Fixed spaces in platform names not being converted to underscores (PR by David Tucker)
- Fixed
RECORD
files in generated wheels missing the regular file attribute - Fixed
DeprecationWarning
about the use of the deprecatedpkg_resources
API (PR by Thomas Grainger) - Wheel now uses flit-core as a build backend (PR by Henry Schreiner)
0.38.4 (2022-11-09)
- Fixed
PKG-INFO
conversion inbdist_wheel
mangling UTF-8 header values inMETADATA
(PR by Anderson Bravalheri)
0.38.3 (2022-11-08)
- Fixed install failure when used with
--no-binary
, reported on Ubuntu 20.04, by removingsetup_requires
fromsetup.cfg
0.38.2 (2022-11-05)
- Fixed regression introduced in v0.38.1 which broke parsing of wheel file names with multiple platform tags
0.38.1 (2022-11-04)
- Removed install dependency on setuptools
- The future-proof fix in 0.36.0 for converting PyPy's SOABI into a abi tag was faulty. Fixed so that future changes in the SOABI will not change the tag.
0.38.0 (2022-10-21)
- Dropped support for Python < 3.7
- Updated vendored
packaging
to 21.3 - Replaced all uses of
distutils
withsetuptools
- The handling of
license_files
(including glob patterns and default values) is now delegated tosetuptools>=57.0.0
(#466). The package dependencies were updated to reflect this change. - Fixed potential DoS attack via the
WHEEL_INFO_RE
regular expression - Fixed
ValueError: ZIP does not support timestamps before 1980
when usingSOURCE_DATE_EPOCH=0
or when on-disk timestamps are earlier than 1980-01-01. Such timestamps are now changed to the minimum value before packaging.
0.37.1 (2021-12-22)
- Fixed
wheel pack
duplicating theWHEEL
contents when the build number has changed (#415) - Fixed parsing of file names containing commas in
RECORD
(PR by Hood Chatham)
0.37.0 (2021-08-09)
- Added official Python 3.10 support
- Updated vendored
packaging
library to v20.9
0.36.2 (2020-12-13)
- Updated vendored
packaging
library to v20.8 - Fixed wheel sdist missing
LICENSE.txt
- Don't use default
macos/arm64
deployment target in calculating the platform tag for fat binaries (PR by Ronald Oussoren)
0.36.1 (2020-12-04)
- Fixed
AssertionError
whenMACOSX_DEPLOYMENT_TARGET
was set to11
(PR by Grzegorz Bokota and François-Xavier Coudert) - Fixed regression introduced in 0.36.0 on Python 2.7 when a custom generator
name was passed as unicode (Scikit-build)
(
TypeError: 'unicode' does not have the buffer interface
)
0.36.0 (2020-12-01)
- Added official Python 3.9 support
- Updated vendored
packaging
library to v20.7 - Switched to always using LF as line separator when generating
WHEEL
files (on Windows, CRLF was being used instead) - The ABI tag is taken from the sysconfig SOABI value. On PyPy the SOABI value
is
pypy37-pp73
which is not compliant with PEP 3149, as it should have both the API tag and the platform tag. This change future-proofs any change in PyPy's SOABI tag to make sure only the ABI tag is used by wheel. - Fixed regression and test for
bdist_wheel --plat-name
. It was ignored for C extensions in v0.35, but the regression was not detected by tests.
0.35.1 (2020-08-14)
- Replaced install dependency on
packaging
with a vendored copy of itstags
module - Fixed
bdist_wheel
not working on FreeBSD due to mismatching platform tag name (it was not being converted to lowercase)
0.35.0 (2020-08-13)
- Switched to the packaging library for computing wheel tags
- Fixed a resource leak in
WheelFile.open()
(PR by Jon Dufresne)
0.34.2 (2020-01-30)
- Fixed installation of
wheel
from sdist on environments without Unicode file name support
0.34.1 (2020-01-27)
- Fixed installation of
wheel
from sdist which was broken due to a chicken and egg problem with PEP 517 and setuptools_scm
0.34.0 (2020-01-27)
- Dropped Python 3.4 support
- Added automatic platform tag detection for macOS binary wheels (PR by Grzegorz Bokota)
- Added the
--compression=
option to thebdist_wheel
command - Fixed PyPy tag generation to work with the updated semantics (#328)
- Updated project packaging and testing configuration for PEP 517
- Moved the contents of setup.py to setup.cfg
- Fixed duplicate RECORD file when using
wheel pack
on Windows - Fixed bdist_wheel failing at cleanup on Windows with a read-only source tree
- Fixed
wheel pack
not respecting the existing build tag inWHEEL
- Switched the project to use the "src" layout
- Switched to setuptools_scm for versioning
0.33.6 (2019-08-18)
- Fixed regression from 0.33.5 that broke building binary wheels against the limited ABI
- Fixed egg2wheel compatibility with the future release of Python 3.10 (PR by Anthony Sottile)
0.33.5 (2019-08-17)
- Don't add the
m
ABI flag to wheel names on Python 3.8 (PR by rdb) - Updated
MANIFEST.in
to include many previously omitted files in the sdist
0.33.4 (2019-05-12)
- Reverted PR #289 (adding directory entries to the wheel file) due to
incompatibility with
distlib.wheel
0.33.3 (2019-05-10) (redacted release)
- Fixed wheel build failures on some systems due to all attributes being preserved (PR by Matt Wozniski)
0.33.2 (2019-05-08) (redacted release)
- Fixed empty directories missing from the wheel (PR by Jason R. Coombs)
0.33.1 (2019-02-19)
- Fixed the
--build-number
option forwheel pack
not being applied
0.33.0 (2019-02-11)
- Added the
--build-number
option to thewheel pack
command - Fixed bad shebangs sneaking into wheels
- Fixed documentation issue with
wheel pack
erroneously being calledwheel repack
- Fixed filenames with "bad" characters (like commas) not being quoted in
RECORD
(PR by Paul Moore) - Sort requirements extras to ensure deterministic builds (PR by PoncinMatthieu)
- Forced
inplace = False
when building a C extension for the wheel
0.32.3 (2018-11-18)
- Fixed compatibility with Python 2.7.0 – 2.7.3
- Fixed handling of direct URL requirements with markers (PR by Benoit Pierre)
0.32.2 (2018-10-20)
- Fixed build number appearing in the
.dist-info
directory name - Made wheel file name parsing more permissive
- Fixed wrong Python tag in wheels converted from eggs (PR by John T. Wodder II)
0.32.1 (2018-10-03)
- Fixed
AttributeError: 'Requirement' object has no attribute 'url'
on setuptools/pkg_resources versions older than 18.8 (PR by Benoit Pierre) - Fixed
AttributeError: 'module' object has no attribute 'algorithms_available'
on Python < 2.7.9 (PR by Benoit Pierre) - Fixed permissions on the generated
.dist-info/RECORD
file
0.32.0 (2018-09-29)
- Removed wheel signing and verifying features
- Removed the "wheel install" and "wheel installscripts" commands
- Added the
wheel pack
command - Allowed multiple license files to be specified using the
license_files
option - Deprecated the
license_file
option - Eliminated duplicate lines from generated requirements in
.dist-info/METADATA
(thanks to Wim Glenn for the contribution) - Fixed handling of direct URL specifiers in requirements (PR by Benoit Pierre)
- Fixed canonicalization of extras (PR by Benoit Pierre)
- Warn when the deprecated
[wheel]
section is used insetup.cfg
(PR by Jon Dufresne)
0.31.1 (2018-05-13)
- Fixed arch as
None
when converting eggs to wheels
0.31.0 (2018-04-01)
- Fixed displaying of errors on Python 3
- Fixed single digit versions in wheel files not being properly recognized
- Fixed wrong character encodings being used (instead of UTF-8) to read and
write
RECORD
(this sometimes crashed bdist_wheel too) - Enabled Zip64 support in wheels by default
- Metadata-Version is now 2.1
- Dropped DESCRIPTION.rst and metadata.json from the list of generated files
- Dropped support for the non-standard, undocumented
provides-extra
andrequires-dist
keywords in setup.cfg metadata - Deprecated all wheel signing and signature verification commands
- Removed the (already defunct)
tool
extras from setup.py
0.30.0 (2017-09-10)
- Added py-limited-api {cp32|cp33|cp34|...} flag to produce cpNN.abi3.{arch} tags on CPython 3.
- Documented the
license_file
metadata key - Improved Python, abi tagging for
wheel convert
. Thanks Ales Erjavec. - Fixed
>
being prepended to lines starting with "From" in the long description - Added support for specifying a build number (as per PEP 427). Thanks Ian Cordasco.
- Made the order of files in generated ZIP files deterministic. Thanks Matthias Bach.
- Made the order of requirements in metadata deterministic. Thanks Chris Lamb.
- Fixed
wheel install
clobbering existing files - Improved the error message when trying to verify an unsigned wheel file
- Removed support for Python 2.6, 3.2 and 3.3.
0.29.0 (2016-02-06)
- Fix compression type of files in archive (Issue #155, Pull Request #62, thanks Xavier Fernandez)
0.28.0 (2016-02-05)
- Fix file modes in archive (Issue #154)
0.27.0 (2016-02-05)
- Support forcing a platform tag using
--plat-name
on pure-Python wheels, as well as nonstandard platform tags on non-pure wheels (Pull Request #60, Issue #144, thanks Andrés Díaz) - Add SOABI tags to platform-specific wheels built for Python 2.X (Pull Request #55, Issue #63, Issue #101)
- Support reproducible wheel files, wheels that can be rebuilt and will hash to the same values as previous builds (Pull Request #52, Issue #143, thanks Barry Warsaw)
- Support for changes in keyring >= 8.0 (Pull Request #61, thanks Jason R. Coombs)
- Use the file context manager when checking if dependency_links.txt is empty, fixes problems building wheels under PyPy on Windows (Issue #150, thanks Cosimo Lupo)
- Don't attempt to (recursively) create a build directory ending with
..
(invalid on all platforms, but code was only executed on Windows) (Issue #91) - Added the PyPA Code of Conduct (Pull Request #56)
0.26.0 (2015-09-18)
- Fix multiple entrypoint comparison failure on Python 3 (Issue #148)
0.25.0 (2015-09-16)
- Add Python 3.5 to tox configuration
- Deterministic (sorted) metadata
- Fix tagging for Python 3.5 compatibility
- Support py2-none-'arch' and py3-none-'arch' tags
- Treat data-only wheels as pure
- Write to temporary file and rename when using wheel install --force
0.24.0 (2014-07-06)
- The python tag used for pure-python packages is now .pyN (major version only). This change actually occurred in 0.23.0 when the --python-tag option was added, but was not explicitly mentioned in the changelog then.
- wininst2wheel and egg2wheel removed. Use "wheel convert [archive]" instead.
- Wheel now supports setuptools style conditional requirements via the extras_require={} syntax. Separate 'extra' names from conditions using the : character. Wheel's own setup.py does this. (The empty-string extra is the same as install_requires.) These conditional requirements should work the same whether the package is installed by wheel or by setup.py.
0.23.0 (2014-03-31)
- Compatibility tag flags added to the bdist_wheel command
- sdist should include files necessary for tests
- 'wheel convert' can now also convert unpacked eggs to wheel
- Rename pydist.json to metadata.json to avoid stepping on the PEP
- The --skip-scripts option has been removed, and not generating scripts is now the default. The option was a temporary approach until installers could generate scripts themselves. That is now the case with pip 1.5 and later. Note that using pip 1.4 to install a wheel without scripts will leave the installation without entry-point wrappers. The "wheel install-scripts" command can be used to generate the scripts in such cases.
- Thank you contributors
0.22.0 (2013-09-15)
- Include entry_points.txt, scripts a.k.a. commands, in experimental pydist.json
- Improved test_requires parsing
- Python 2.6 fixes, "wheel version" command courtesy pombredanne
0.21.0 (2013-07-20)
- Pregenerated scripts are the default again.
- "setup.py bdist_wheel --skip-scripts" turns them off.
- setuptools is no longer a listed requirement for the 'wheel' package. It is of course still required in order for bdist_wheel to work.
- "python -m wheel" avoids importing pkg_resources until it's necessary.
0.20.0
- No longer include console_scripts in wheels. Ordinary scripts (shell files, standalone Python files) are included as usual.
- Include new command "python -m wheel install-scripts [distribution [distribution ...]]" to install the console_scripts (setuptools-style scripts using pkg_resources) for a distribution.
0.19.0 (2013-07-19)
- pymeta.json becomes pydist.json
0.18.0 (2013-07-04)
- Python 3 Unicode improvements
0.17.0 (2013-06-23)
- Support latest PEP-426 "pymeta.json" (json-format metadata)
0.16.0 (2013-04-29)
- Python 2.6 compatibility bugfix (thanks John McFarlane)
- Bugfix for C-extension tags for CPython 3.3 (using SOABI)
- Bugfix for bdist_wininst converter "wheel convert"
- Bugfix for dists where "is pure" is None instead of True or False
- Python 3 fix for moving Unicode Description to metadata body
- Include rudimentary API documentation in Sphinx (thanks Kevin Horn)
0.15.0 (2013-01-14)
- Various improvements
0.14.0 (2012-10-27)
- Changed the signature format to better comply with the current JWS spec. Breaks all existing signatures.
- Include
wheel unsign
command to remove RECORD.jws from an archive. - Put the description in the newly allowed payload section of PKG-INFO (METADATA) files.
0.13.0 (2012-10-17)
- Use distutils instead of sysconfig to get installation paths; can install headers.
- Improve WheelFile() sort.
- Allow bootstrap installs without any pkg_resources.
0.12.0 (2012-10-06)
- Unit test for wheel.tool.install
0.11.0 (2012-10-17)
- API cleanup
0.10.3 (2012-10-03)
- Scripts fixer fix
0.10.2 (2012-10-02)
- Fix keygen
0.10.1 (2012-09-30)
- Preserve attributes on install.
0.10.0 (2012-09-30)
- Include a copy of pkg_resources. Wheel can now install into a virtualenv that does not have distribute (though most packages still require pkg_resources to actually work; wheel install distribute)
- Define a new setup.cfg section [wheel]. universal=1 will apply the py2.py3-none-any tag for pure python wheels.
0.9.7 (2012-09-20)
- Only import dirspec when needed. dirspec is only needed to find the configuration for keygen/signing operations.
0.9.6 (2012-09-19)
- requires-dist from setup.cfg overwrites any requirements from setup.py Care must be taken that the requirements are the same in both cases, or just always install from wheel.
- drop dirspec requirement on win32
- improved command line utility, adds 'wheel convert [egg or wininst]' to convert legacy binary formats to wheel
0.9.5 (2012-09-15)
- Wheel's own wheel file can be executed by Python, and can install itself:
python wheel-0.9.5-py27-none-any/wheel install ...
- Use argparse; basic
wheel install
command should run with only stdlib dependencies. - Allow requires_dist in setup.cfg's [metadata] section. In addition to dependencies in setup.py, but will only be interpreted when installing from wheel, not from sdist. Can be qualified with environment markers.
0.9.4 (2012-09-11)
- Fix wheel.signatures in sdist
0.9.3 (2012-09-10)
- Integrated digital signatures support without C extensions.
- Integrated "wheel install" command (single package, no dependency resolution) including compatibility check.
- Support Python 3.3
- Use Metadata 1.3 (PEP 426)
0.9.2 (2012-08-29)
- Automatic signing if WHEEL_TOOL points to the wheel binary
- Even more Python 3 fixes
0.9.1 (2012-08-28)
- 'wheel sign' uses the keys generated by 'wheel keygen' (instead of generating a new key at random each time)
- Python 2/3 encoding/decoding fixes
- Run tests on Python 2.6 (without signature verification)
0.9 (2012-08-22)
- Updated digital signatures scheme
- Python 3 support for digital signatures
- Always verify RECORD hashes on extract
- "wheel" command line tool to sign, verify, unpack wheel files
0.8 (2012-08-17)
- none/any draft pep tags update
- improved wininst2wheel script
- doc changes and other improvements
0.7 (2012-07-28)
- sort .dist-info at end of wheel archive
- Windows & Python 3 fixes from Paul Moore
- pep8
- scripts to convert wininst & egg to wheel
0.6 (2012-07-23)
- require distribute >= 0.6.28
- stop using verlib
0.5 (2012-07-17)
- working pretty well
0.4.2 (2012-07-12)
- hyphenated name fix
0.4 (2012-07-11)
- improve test coverage
- improve Windows compatibility
- include tox.ini courtesy of Marc Abramowitz
- draft hmac sha-256 signing function
0.3 (2012-07-04)
- prototype egg2wheel conversion script
0.2 (2012-07-03)
- Python 3 compatibility
0.1 (2012-06-30)
- Initial version