pyapp 0.29.0

Runtime installer for Python applications
# Changelog

-----

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## Unreleased

## 0.29.0 - 2025-10-15

***Added:***

- Update default CPython distributions to 20251014
- Update default PyPy distributions to 7.3.20

## 0.28.0 - 2025-07-17

***Added:***

- Update default CPython distributions to 20250712
- Switch to `zlib-rs` for handling `.tar.gz` distributions
- Update dependencies

## 0.27.0 - 2025-03-12

***Added:***

- Update default CPython distributions to 20250311
- Update dependencies

***Fixed:***

- Fix compiler warnings on newer versions of Rust for use of the `FileExt` trait provided by the `fs4` crate

## 0.26.0 - 2025-01-04

***Added:***

- Update default CPython distributions to 20241219
- Update dependencies

## 0.25.0 - 2024-12-15

***Added:***

- Update default CPython distributions to 20241206
- Enable LTO for releases
- Update dependencies

## 0.24.0 - 2024-10-13

***Changed:***

- The `PYAPP_DISTRIBUTION_VARIANT` has been renamed to `PYAPP_DISTRIBUTION_VARIANT_CPU` although the former is still supported for backwards compatibility

***Added:***

- Support Python 3.13 and set as the default version
- Add `PYAPP_DISTRIBUTION_VARIANT_GIL` option (Python 3.13+)
- Update default CPython distributions to 20241008
- Update default PyPy distributions to 7.3.17
- Update dependencies

## 0.23.0 - 2024-08-03

***Added:***

- Add `PYAPP_UV_SOURCE` option

## 0.22.0 - 2024-05-26

***Added:***

- Add `PYAPP_EXPOSE_ALL_COMMANDS` option
- Update dependencies

## 0.21.1 - 2024-05-15

***Fixed:***

- Fix the `PYAPP_DISTRIBUTION_PATH_PREFIX` option

## 0.21.0 - 2024-05-15

***Added:***

- Add `PYAPP_DISTRIBUTION_PATH_PREFIX` option for easier configuring of custom distribution internal paths
- Add `PYAPP_ALLOW_UPDATES` option for enabling the `update` management command when project installation is skipped

***Fixed:***

- Properly hide the `update` management command when skipping project installation

## 0.20.1 - 2024-05-14

***Fixed:***

- Properly handle failed downloads

## 0.20.0 - 2024-05-13

***Added:***

- Add `cache` management command
- Update dependencies

***Fixed:***

- Bootstrapping is now safe across multiple processes (a shared resource message is displayed if another process is already bootstrapping)
- The `pip` management command is now resilient to cache removal
- Management commands now properly support the `-h`/`--help` flag

## 0.19.0 - 2024-04-24

***Added:***

- Add `remove` management command
- Update dependencies

***Fixed:***

- Fix UV and the `VIRTUAL_ENV` environment variable on non-Windows systems

## 0.18.0 - 2024-04-22

***Added:***

- Update PyPy distributions to 7.3.15

***Fixed:***

- Fix resolution for legacy 3.7 builds

## 0.17.0 - 2024-04-21

***Added:***

- Support using UV for virtual environment creation and project installation
- The PATH environment variable is now updated to include the installation's directory of executables
- Update default distributions to 20240415

***Fixed:***

- Dependencies are now locked

## 0.16.0 - 2024-03-24

***Added:***

- Add `PYAPP_IS_GUI` option to support graphical applications

## 0.15.1 - 2024-03-03

***Fixed:***

- Fix reading metadata with Windows line endings during build time from embedded distributions

## 0.15.0 - 2024-03-01

***Added:***

- Update default distributions to 20240224
- Update default Python version to 3.12
- Statically link the C runtime on Windows
- Add `PYAPP_PROJECT_FEATURES` option for selecting extras
- Add new execution mode option `PYAPP_EXEC_NOTEBOOK` for running Jupyter notebooks

***Fixed:***

- Properly resolve correct default distributions on MinGW-w64
- Fix embedding custom distributions
- Ignore nonexistent variant options for 3.7 distributions

## 0.14.0 - 2024-01-21

***Added:***

- Update default distributions to 20240107

## 0.13.0 - 2023-12-31

***Added:***

- Allow for forwarding of unknown management commands e.g. if apps have their own `self` commands

***Fixed:***

- Remove patch for powerpc64le now that the transitive dependency `ring` is fixed

## 0.12.0 - 2023-10-07

***Added:***

- Update default distributions to 20231002, adding support for Python 3.12

## 0.11.1 - 2023-09-14

***Fixed:***

- Fix the Python path for the `pypy2.7` distribution

## 0.11.0 - 2023-09-07

***Added:***

- Update default distributions to 20230826
- Build releases with codegen-units=1

## 0.10.1 - 2023-06-26

***Fixed:***

- Fix regression in the `PYAPP_EXEC_SPEC` option

## 0.10.0 - 2023-06-26

***Added:***

- Add `PYAPP_EXEC_SCRIPT` option for executing a project using a script
- Add support for overriding the installation directory
- Make the `PYAPP_DISTRIBUTION_PATH` option implicitly enable `PYAPP_DISTRIBUTION_EMBED`

***Fixed:***

- Properly handle cases where options contain line feed characters

## 0.9.0 - 2023-06-21

***Changed:***

- Custom distributions should now define the relative path to the `site-packages` directory

***Added:***

- Add support for PyPy distributions
- Add the `PYAPP_UPGRADE_VIRTUALENV` option to create virtual environments with `virtualenv` rather than the stdlib's `venv`
- Add support for custom distributions with `bzip2` compression

***Fixed:***

- Properly handle cases where temporary files are on different filesystems
- Fix regression in the `metadata` management command on Windows
- Improve error messages when running binaries that were misconfigured

## 0.8.0 - 2023-06-09

***Added:***

- Add the ability to externally manage pip with the `PYAPP_PIP_EXTERNAL` and `PYAPP_PIP_VERSION` options
- Allow for project installation with a dependency file using the `PYAPP_PROJECT_DEPENDENCY_FILE` option
- Add management command to directly invoke pip with the installed Python
- Add management command to output the path to the installed Python

***Fixed:***

- Fix builds for PowerPC64

## 0.7.0 - 2023-05-24

***Changed:***

- Installations use virtual environments by default; the previous behavior can be enabled with the `PYAPP_FULL_ISOLATION` option

***Added:***

- Update default CPython distributions
- Add `-r`/`--restore` flag to the `update` command
- Allow for disabling of management commands
- Add ability to expose optional commands
- Add optional command to directly invoke the installed Python
- Run Python in isolated mode
- Execute projects with `execvp` on non-Windows systems
- When the management command is enabled its name is available at runtime via an environment variable
- Add different installation wait message for when there is a guarantee of no side effects (e.g. pip's `--only-binary :all:`)

## 0.6.0 - 2023-05-16

***Added:***

- Add `PYAPP_PROJECT_PATH` option to embed the project for installation at runtime
- Add `PYAPP_DISTRIBUTION_PATH` option to embed the distribution from a local path rather than fetching the source

***Fixed:***

- Properly handle distributions packed as ZIP files

## 0.5.0 - 2023-05-11

***Added:***

- Strip symbols from release builds

***Fixed:***

- Properly pass through all required environment variable options to cross compilation images
- Properly allow configuration of the template used for the metadata command

## 0.4.0 - 2023-05-11

***Changed:***

- Rename `PYAPP_STARSHIP_PROMPT` option to `PYAPP_METADATA_TEMPLATE`

***Added:***

- Add `PYAPP_PIP_EXTRA_ARGS` option to provide extra `pip install` arguments
- Add `PYAPP_PIP_ALLOW_CONFIG` option to allow runtime configuration of `pip`
- Add configuration for correct cross compilation

## 0.3.1 - 2023-05-10

***Fixed:***

- Fix default distribution detection for Linux on architectures other than x86_64

## 0.3.0 - 2023-05-10

***Changed:***

- Rename `PYAPP_DISTRIBUTION_COMPRESSION` option to `PYAPP_DISTRIBUTION_FORMAT`

***Added:***

- Add `--pre` flag to the `self update` command to allow pre-release and development versions
- Add environment variable for detection
- Add `PYAPP_SELF_COMMAND` option to control the name of the management command
- Add `PYAPP_SKIP_INSTALL` option to skip project installation
- Remove dependence on OpenSSL

***Fixed:***

- Properly display error messages from `pip install` commands
- Fix project version reading for the metadata command on non-Windows systems

## 0.2.0 - 2023-05-07

This is the initial public release.