Hatchling history¶
All notable changes to Hatchling will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Unreleased¶
1.27.0 - 2024-11-26¶
Added:
- Update the default version of core metadata to 2.4
1.26.3 - 2024-11-12¶
Fixed:
- Support an old import path that is still used by some consumers like Hatch
1.26.2 - 2024-11-12¶
Fixed:
- Back-populate string
license
fields (License-Expression
) for core metadata versions prior to 2.4 - Remove the
License-Expression
andLicense-Files
core metadata from version 2.2 that was missed in the previous minor release
1.26.1 - 2024-11-10¶
Fixed:
- Add backward compatibility for the old
license-files
metadata field - Support an old import path that is still used by some consumers like Hatch
1.26.0 - 2024-11-10¶
Changed:
- The
license-files
metadata field has been updated to the latest spec and is now just an array of glob patterns
Added:
- Support version 2.4 of core metadata for the
wheel
andsdist
targets - Add
HATCH_METADATA_CLASSIFIERS_NO_VERIFY
environment variable to disable trove classifier verification - Add
.pixi
to the list of directories that cannot be traversed - Bump the minimum supported version of
packaging
to 24.2
Fixed:
- No longer write package metadata for license expressions and files for versions of core metadata prior to 2.4
- Properly enable Zip64 support for the
wheel
target - Properly ignore parent
.gitingore
files when the project root matches one of the patterns
1.25.0 - 2024-06-22¶
Changed:
- The
macos-max-compat
option for thewheel
target is now disabled by default and will be removed in a future release
Added:
- Artifacts for the
wheel
andsdist
targets now have their permission bits normalized
Fixed:
- Ignore
manylinux
/musllinux
tags for thewheel
target artifact name when enabling theinfer_tag
build data - The
wheel
target build datainfer_tag
when enabled now respects theMACOSX_DEPLOYMENT_TARGET
environment variable
1.24.2 - 2024-04-22¶
Fixed:
- Add
.venv
to the list of directories that cannot be traversed - Output from the core Application utility now writes to stderr
1.24.1 - 2024-04-18¶
Fixed:
- Maintain file permissions for
shared-scripts
option/shared_scripts
build data of thewheel
target
1.24.0 - 2024-04-16¶
Added:
- Add
shared_data
andshared_scripts
build data for thewheel
target
1.23.0 - 2024-04-14¶
Added:
- Add
shared-scripts
option for thewheel
target
Fixed:
- Support recursive optional dependencies
- Set the
packaging
dependency version as>=23.2
to avoid its URL validation which can conflict with context formatting
1.22.5 - 2024-04-04¶
Fixed:
- Fix reading metadata from source distributions when fields are dynamic but not part of core metadata like entry points
1.22.4 - 2024-03-23¶
Fixed:
- Only read source distribution metadata for fields that are explicitly defined as dynamic
1.22.3 - 2024-03-19¶
Fixed:
- Fix the
custom
build hook when using dynamic dependencies
1.22.2 - 2024-03-16¶
Fixed:
- Fix regression when loading metadata from source distributions
- Fix metadata hooks when building wheels from source distributions
1.22.1 - 2024-03-16¶
Fixed:
- Update the default version of core metadata to 2.3
1.22.0 - 2024-03-16¶
Deprecated:
- The
app
build target has been renamed tobinary
to reduce ambiguity with the name of an upcoming feature. The former name will still be usable for several minor releases.
Added:
- Metadata for the
wheel
target now defaults to thePKG-INFO
metadata within source distributions - Add
dependencies
method to the build hook interface so that hooks can themselves dynamically define dependencies - Update the default version of core metadata to 2.2
- Update SPDX license information to version 3.23
- Improve error message for when the default heuristics for wheel file inclusion fail
Fixed:
- Properly support core metadata version 2.2
- Remove
editables
as a direct dependency - Fix default wheel tag when the supported Python version declaration is strict
- Load VCS ignore patterns first so that whitelisted patterns can be excluded by project configuration
- Don't consider VCS ignore files that are outside of the VCS boundary
- The
sdist
build target now gracefully ignores UNIX socket files - Begin ignoring certain files ubiquitously, like
.DS_Store
on macOS
1.21.1 - 2024-01-25¶
Fixed:
- Fix loading of local plugins to account for newly released versions of a dependency
1.21.0 - 2023-12-18¶
Added:
- Add
parent
context modifier for path fields
1.20.0 - 2023-12-13¶
Added:
- Add
bypass-selection
option to thewheel
build target to allow for empty (metadata-only) wheels
Fixed:
- Fix regression in 1.19.1 that allowed
exclude
to count toward inclusion selection, thus bypassing the default inclusion selection heuristics - Fix writing optional dependency core metadata in situations where there are multiple environment markers
1.19.1 - 2023-12-12¶
Fixed:
- Add better error message when the
wheel
build target cannot determine what to ship - Consider forced inclusion patterns and build-time artifacts as file selection since some build hooks generate the entire wheel contents without user configuration
1.19.0 - 2023-12-11¶
Changed:
- An error will now be raised if a force-included path does not exist
- An error will now be raised for the
wheel
build target if no file selection options are defined
Added:
- Officially support Python 3.12
- Allow using an empty string for the
sources
option to add a prefix to distribution paths
Fixed:
- Properly handle non-zero version epoch for the
standard
version scheme - Fix the
wheel
build target for case insensitive file systems when the project metadata name does not match the directory name on disk - The
app
build target no longer has suppressed output - Prevent duplicate paths when projects require the
sources
option while build hooks overwrite included paths - Properly escape spaces for URI context formatting
1.18.0 - 2023-06-12¶
Changed:
- Drop support for Python 3.7
Added:
- Update the list of directories that are always excluded for builds
1.17.1 - 2023-06-03¶
Fixed:
- Fix dev mode when the project has symlinks and file inclusion is defined with the
packages
oronly-include
options - Change the name of generated PTH files for dev mode so they come first lexicographically and therefore load first
1.17.0 - 2023-05-12¶
Added:
- The
app
build target now embeds the project version in the name of binaries
1.16.1 - 2023-05-11¶
Fixed:
- Fix determining the built executable path for the
app
build target option when using a local copy of PyApp when there is an explicit target triple set
1.16.0 - 2023-05-11¶
Added:
- Add
app
build target option to build using a local copy of the PyApp repository
1.15.0 - 2023-05-09¶
Added:
- Add
app
build target
1.14.1 - 2023-04-23¶
Fixed:
- Fix internal archive root naming for the
sdist
target whenstrict-naming
is disabled to match the file name in order to support the expectation of some frontends
1.14.0 - 2023-04-02¶
Added:
- Add
trove-classifiers
as a dependency
Fixed:
- Properly normalize metadata descriptions that contain line breaks
1.13.0 - 2023-02-09¶
Added:
- Update the set of known trove classifiers to version 2023.2.8
1.12.2 - 2023-01-05¶
Fixed:
- Add
macos-max-compat
option to thewheel
target that is enabled by default to support the latest version 22.0 of thepackaging
library
1.12.1 - 2022-12-31¶
Fixed:
- Fix minor regression in the PEP 517/660 function signatures that was discovered by Fedora
1.12.0 - 2022-12-30¶
Added:
- Improve readability of exceptions
- Add
extra_metadata
build data to thewheel
target - Retroactively support
License-Expression
core metadata starting at version 2.1 - Add more type hints
- Update the set of known trove classifiers to version 2022.12.22
- Update SPDX license information to version 3.19
- Store Hatchling's metadata in
pyproject.toml
Fixed:
- Acknowledge the
ARCHFLAGS
environment variable on macOS for thewheel
target when build hooks set theinfer_tag
build data totrue
- Fix dependency checking when encountering broken distributions
- Fix the
support-legacy
option for thesdist
target when using a src-layout project structure - Remove unnecessary encoding declaration in the default template for the
version
build hook
1.11.1 - 2022-10-19¶
Fixed:
- Fix default file selection behavior of the
wheel
target when there is a single top-level module
1.11.0 - 2022-10-08¶
Added:
- Add
env
version source to retrieve the version from an environment variable - Add
validate-bump
option to thestandard
version scheme
Fixed:
- Use proper CSV formatting for the
RECORD
metadata file of thewheel
target to avoid warnings during installation bypip
if, for example, file names contain commas - Fix installations with pip for build hooks that modify runtime dependencies
- Decreasing verbosity now has no affect on output that should always be displayed
1.10.0 - 2022-09-18¶
Added:
- Add the following to the list of directories that cannot be traversed:
__pypackages__
,.hg
,.hatch
,.tox
,.nox
- Add deprecated option to allow ambiguous features
Fixed:
- Improve tracking of dynamic metadata
- Fix core metadata for entries in
project.optional-dependencies
that use direct references
1.9.0 - 2022-09-09¶
Changed:
- File pattern matching now more closely resembles Git's behavior
Added:
- Implement a minimal version of
prepare_metadata_for_build_wheel
andprepare_metadata_for_build_editable
for non-frontend tools that only need to inspect a project's metadata - Add
metadata
command to view PEP 621 project metadata - Improve error messages for SPDX license errors
- Retroactively support
License-File
for core metadata starting at version 2.1 - Bump the minimum supported version of
pathspec
to 0.10.1
Fixed:
- Allow the valid non-SPDX
license
valuesLicenseRef-Public-Domain
andLicenseRef-Proprietary
- Show the help text of the CLI when no subcommand is selected
1.8.1 - 2022-08-25¶
Fixed:
- Fix default file inclusion for
wheel
build targets when both the project name and package directory name are not normalized
1.8.0 - 2022-08-16¶
Added:
- Add
get_known_classifiers
method to metadata hooks
Fixed:
- Fix check for updating static versions with the
version
command when metadata hooks are in use
1.7.1 - 2022-08-13¶
Fixed:
- Fix the value of the
relative_path
attribute of included files, that some build plugins may use, when selecting explicit paths
1.7.0 - 2022-08-12¶
Added:
- Add
require-runtime-features
option for builders and build hooks - Check for unknown trove classifiers
- Update SPDX license information to version 3.18
Fixed:
- Add better error message for
wheel
target dev mode installations that define path rewrites with thesources
option - Note the
allow-direct-references
option in the relevant error messages
1.6.0 - 2022-07-23¶
Changed:
- When no build targets are specified on the command line, now default to
sdist
andwheel
targets rather than what happens to be defined in config - The
code
version source now only supports files with known extensions - Global build hooks now run before target-specific build hooks to better match expected behavior
Added:
- The
code
version source now supports loading extension modules - Add
search-paths
option for thecode
version source
Fixed:
- Fix removing
sources
using an empty string value in the mapping - The
strict-naming
option now also applies to the metadata directory ofwheel
targets
1.5.0 - 2022-07-11¶
Added:
- Support the final draft of PEP 639
- Add
strict-naming
option forsdist
andwheel
targets
Fixed:
- Project names are now stored in
sdist
andwheel
target core metadata exactly as defined inpyproject.toml
without normalization to allow control of how PyPI displays them
1.4.1 - 2022-07-04¶
Fixed:
- Fix forced inclusion of important files like licenses for
sdist
targets when using the explicit selection options - Don't sort project URL metadata so that the rendered order on PyPI can be controlled
1.4.0 - 2022-07-03¶
Changed:
- The
packages
option uses the newonly-include
option to provide targeted inclusion, since that is desired most of the time. You can retain the old behavior by using theinclude
andsources
options together.
Added:
- Support PEP 561 type hinting
- Add
version
build hook - Add
only-include
option - The
editable
version ofwheel
targets now respects theforce-include
option by default - The
force-include
option now supports path rewriting with thesources
option - The
wheel
targetshared-data
andextra-metadata
options now respect file selection options - The
wheel
target now auto-detects single module layouts - Improve performance by never entering directories that are guaranteed to be undesirable like
__pycache__
rather than excluding individual files within - Update SPDX license information to version 3.17
Fixed:
- Don't write empty entry points file for
wheel
targets if there are no entry points defined - Allow metadata hooks to set the
version
in all cases - Prevent duplicate file entries from inclusion when using the
force-include
option
1.3.1 - 2022-05-30¶
Fixed:
- Better populate global variables for the
code
version source
1.3.0 - 2022-05-22¶
Removed:
- Remove unused global
args
context string formatting field
Added:
- Improve error messages for the
env
context string formatting field
Fixed:
- Fix
uri
context string formatting modifier on Windows
1.2.0 - 2022-05-20¶
Added:
- Allow context formatting for
project.dependencies
andproject.optional-dependencies
1.1.0 - 2022-05-19¶
Added:
- Add
uri
andreal
context string formatting modifiers for file system paths
1.0.0 - 2022-05-17¶
Changed:
- Drop support for Python 2
Added:
- Improve error messaging for invalid versions
- Update project metadata to reflect support for Python 3.11
0.25.1 - 2022-06-14¶
Fixed:
- Fix support for Windows on Python 2 by removing its support for symlinks
0.25.0 - 2022-05-15¶
Added:
- Add
skip-excluded-dirs
build option - Allow build data to add additional project dependencies for
wheel
andsdist
build targets - Add
force_include_editable
build data for thewheel
build target - Add
build_hooks
build data - Add support for Mercurial's
.hgignore
files when using glob syntax - Update project metadata to reflect the adoption by PyPA
Fixed:
- Properly use underscores for the name of
force_include
build data - No longer greedily skip excluded directories by default
0.24.0 - 2022-04-28¶
This is the initial public release of the Hatchling build system. Support for Python 2 will be dropped in version 1.