- Removed the
toml
library fallback;toml
can no longer be used as a substitute fortomli
(PR :pr:`567`) - Added
runner
parameter toutil.project_wheel_metadata
(PR :pr:`566`, Fixes :issue:`553`) - Modified
ProjectBuilder
constructor signature, added alternativeProjectBuilder.from_env
constructor, redefinedenv.IsolatedEnv
interface, and exposedenv.DefaultIsolatedEnv
, replacingenv.IsolatedEnvBuilder
. The aim has been to shift responsibility for modifying the environment from the project builder to theIsolatedEnv
entirely and to ensure that the builder will be initialised from anIsolatedEnv
in a consistent manner. Mutating the project builder is no longer supported. (PR :pr:`537`)
- Replace
pep517
dependency withpyproject_hooks
, into whichpep517
has been renamed (PR :pr:`539`, Fixes :issue:`529`) - Change build backend from
setuptools
toflit
(PR :pr:`470`, Fixes :issue:`394`) - Dropped support for Python 3.6 (PR :pr:`532`)
- Hide a Python 3.11.0 unavoidable warning with venv (PR :pr:`527`)
- Fix infinite recursion error in
check_dependency
with circular dependencies (PR :pr:`512`, Fixes :issue:`511`) - Only import colorama on Windows (PR :pr:`494`, Fixes :issue:`493`)
- Flush output more often to reduce interleaved output (PR :pr:`494`)
- Small API cleanup, like better
_all__
and srcdir being read only. (PR :pr:`477`) - Only use
importlib_metadata
when needed (PR :pr:`401`) - Clarify in printout when build dependencies are being installed (PR :pr:`514`)
- Accept
os.PathLike[str]
in addition tostr
for paths in public API (PR :pr:`392`, Fixes :issue:`372`) - Add schema validation for
build-system
table to check conformity with PEP 517 and PEP 518 (PR :pr:`365`, Fixes :issue:`364`) - Better support for Python 3.11 (sysconfig schemes PR :pr:`434`, PR :pr:`463`, tomllib PR :pr:`443`, warnings PR :pr:`420`)
- Improved error printouts (PR :pr:`442`)
- Avoid importing packaging unless needed (PR :pr:`395`, Fixes :issue:`393`)
- Failure to create a virtual environment in the
build.env
module now raisesbuild.FailedProcessError
(PR :pr:`442`)
- Add
build.util
module with an high-level utility API (PR :pr:`340`)
- Fix compatibility with Python 3.6 and 3.7 (PR :pr:`339`, Fixes :issue:`338`)
- Improved output (PR :pr:`333`, Fixes :issue:`142`)
- The CLI now honors
NO_COLOR
(PR :pr:`333`) - The CLI can now be forced to colorize the output by setting the
FORCE_COLOR
environment variable (PR :pr:`335`) - Added logging to
build
andbuild.env
(PR :pr:`333`) - Switch to a TOML v1 compliant parser (PR :pr:`336`, Fixes :issue:`308`)
- Dropped support for Python 2 and 3.5.
- Fix invoking the backend on an inexistent output directory with multiple levels (PR :pr:`318`, Fixes :issue:`316`)
- When building wheels via sdists, use an isolated temporary directory (PR :pr:`321`, Fixes :issue:`320`)
- Add
ProjectBuilder.metadata_path
helper (PR :pr:`303`, Fixes :issue:`301`) - Added a
build.__main__.build_package_via_sdist
method (PR :pr:`304`) - Use appropriate installation scheme for Apple Python venvs (PR :pr:`314`, Fixes :issue:`310`)
- Binary distributions are now built via the sdist by default in the CLI (PR :pr:`304`, Fixes :issue:`257`)
-
python -m build
will now build a sdist, extract it, and build a wheel from the source - As a side-effect of PR :pr:`304`,
build.__main__.build_package
no longer does CLI error handling (print nice message and exit the program) - Importing
build.__main__
no longer has any side-effects, it no longer overrideswarnings.showwarning
or runscolorama.init
on import (PR :pr:`312`)
- Validate that the supplied source directory is valid (PR :pr:`260`, Fixes :issue:`259`)
- Set and test minimum versions of build's runtime dependencies (PR :pr:`267`, Fixes :issue:`263`)
- Use symlinks on creating venv's when available (PR :pr:`274`, Fixes :issue:`271`)
- Error sooner if pip upgrade is required and fails (PR :pr:`288`, Fixes :issue:`256`)
- Add a
runner
argument toProjectBuilder
(PR :pr:`290`, Fixes :issue:`289`) - Hide irrelevant
pep517
error traceback and improve error messages (PR :pr:`296`) - Try to use
colorama
to fix colors on Windows (PR :pr:`300`)
- As a side-effect of PR :pr:`260`, projects not containing either a
pyproject.toml
orsetup.py
will be reported as invalid. This affects projects specifying only asetup.cfg
, such projects are recommended to add apyproject.toml
. The new behavior is on par with what pip currently does, so if you are affected by this, your project should not be pip installable. - The
--skip-dependencies
option has been renamed to--skip-dependency-check
(PR :pr:`297`) - The
skip_dependencies
argument ofbuild.__main__.build_package
has been renamed toskip_dependency_check
(PR :pr:`297`) build.ConfigSettings
has been renamed tobuild.ConfigSettingsType
(PR :pr:`298`)build.ProjectBuilder.build_dependencies
tobuild.ProjectBuilder.build_system_requires
(PR :pr:`284`, Fixes :issue:`182`)build.ProjectBuilder.get_dependencies
tobuild.ProjectBuilder.get_requires_for_build
(PR :pr:`284`, Fixes :issue:`182`)
- Support direct usage from pipx run in 0.16.1.0+ (PR :pr:`247`)
- Use UTF-8 encoding when reading pyproject.toml (PR :pr:`251`, Fixes :issue:`250`)
- Upgrade pip based on venv pip version, avoids error on Debian Python 3.6.5-3.8 or issues installing wheels on Big Sur (PR :pr:`229`, PR :pr:`230`, Fixes :issue:`228`)
- Build dependencies in isolation, instead of in the build environment (PR :pr:`232`, Fixes :issue:`231`)
- Fallback on venv if virtualenv is too old (PR :pr:`241`)
- Add metadata preparation hook (PR :pr:`217`, Fixes :issue:`130`)
- Fix error from unrecognised pip flag on Python 3.6.0 to 3.6.5 (PR :pr:`227`, Fixes :issue:`226`)
- Check dependencies recursively (PR :pr:`183`, Fixes :issue:`25`)
- Build wheel and sdist distributions in separate environments, as they may have different dependencies (PR :pr:`195`, Fixes :issue:`194`)
- Add support for pre-releases in
check_dependency
(PR :pr:`204`, Fixes :issue:`191`) - Fixes console scripts not being available during build (PR :pr:`221`, Fixes :issue:`214`)
- Do not add the default backend requirements to
requires
when no backend is specified (PR :pr:`177`, Fixes :issue:`107`) - Return the sdist name in
ProjectBuild.build
(PR :pr:`197`) - Improve documentation (PR :pr:`178`, PR :pr:`203`)
- Add changelog (PR :pr:`219`, Fixes :issue:`169`)
- Move
config_settings
argument to the hook calls (PR :pr:`218`, Fixes :issue:`216`)
- Moved the upstream to PyPA
- Fixed building with isolation in a virtual environment
- Added env.IsolatedEnv abstract class
- Added env.IsolatedEnvBuilder (replaces env.IsolatedEnvironment usages)
- Added python_executable argument to the ProjectBuilder constructor
- Added --version/-V option to the CLI
- Added support for Python 3.9
- Added py.typed marker
- Various miscellaneous fixes in the virtual environment creation
- Many general improvements in the documentation
- Documentation moved to the furo theme
- Updated the CoC to the PSF CoC, which PyPA has adopted
- Renamed the entrypoint script to pyproject-build
- Removed default arguments from all paths in ProjectBuilder
- Removed ProjectBuilder.hook
- Renamed __main__.build to __main__.build_package
- Changed the default outdir value to {srcdir}/dest
- Removed env.IsolatedEnvironment
- Packages are now built in isolation by default
- Added --no-isolation/-n flag to build in the current environment
- Add --config-setting/-C option to pass options to the backend
- Add IsolatedEnvironment class
- Fix creating the output directory if it doesn't exit
- Fix building with in-tree backends
- Fix broken entrypoint script (python-build)
- Add warning about incomplete verification when verifying extras
- Automatically detect typos in the build system table
- Minor documentation improvements
- Fix bug preventing the CLI from being invoked
- Improved documentation
- Misc improvements
- Added documentation
- Add setuptools as a default fallback backend
- Fix extras handling in requirement strings
- Initial release