Poetry Plugin Freeze is a Poetry plugin that creates frozen wheels with pinned dependency versions from lockfiles.
The plugin addresses a fundamental problem in Python application distribution: the gap between how releases are tested and how they are published. Applications are validated against lockfiles that ensure repeatable installs, yet the published wheel contains version specifications from pyproject.toml rather than frozen versions. This divergence means older releases become increasingly difficult to install as dependencies evolve. The plugin solves this by intercepting the wheel build process and rewriting the wheel metadata to replace version specifications with exact pinned versions derived from the poetry lockfile, ensuring the published artifact matches what was tested.
The tool is designed specifically for applications rather than libraries. Libraries benefit from flexible version constraints to minimize dependency conflicts for their consumers, but applications require reproducible installs over time with potentially complex dependency graphs. This plugin enables application publishers to distribute wheels with frozen dependencies while still maintaining a standard pyproject.toml for development. It handles optional dependencies correctly by preserving extra metadata and only pinning packages that appear exclusively in optional dependency graphs. The plugin cannot be used with poetry's own publish command since poetry reads from pyproject.toml rather than the frozen wheel metadata, so wheels must be published through other means after being built and frozen.
The project shows consistent maintenance with regular updates addressing issues and improvements. The maintainers actively respond to user reports and incorporate feedback into the codebase. Development activity demonstrates engagement with the Poetry ecosystem and attention to edge cases in dependency handling, particularly around optional dependencies and their interaction with the freezing process.