installer
A low-level Python library for installing packages from wheel distributions.
Repository Health
Technical Analysis
installer is a low-level, dependency-free Python library maintained by the Python Packaging Authority (PyPA) for installing packages from wheel distributions. It provides the core logic for unpacking a wheel and placing its contents into the correct installation scheme, along with clean abstractions for each part of the process.
Rather than being a full package manager, installer focuses on the mechanics of wheel installation: reading a wheel source, validating its metadata, generating platform-independent script wrappers, and writing RECORD files. This makes it a reliable building block for tools like pip, Poetry, and other installers that need well-tested, standards-compliant wheel handling.
What You Get
- A high-level install() function that unpacks a wheel into the correct installation scheme
- Abstractions for wheel sources and destinations that can be subclassed for custom behavior
- Platform-independent Python script (console entry point) wrapper generation, including Windows launchers
- RECORD file handling and metadata parsing that conform to Python packaging standards
Common Use Cases
- Building a custom package installer or package manager that needs standards-compliant wheel handling
- Installing wheels programmatically into a controlled destination without shelling out to pip
- Generating cross-platform console-script launchers when unpacking wheels
Under The Hood
Architecture - The core lives in src/installer/_core.py, whose install() function drives the flow: it validates the WHEEL file via _process_WHEEL_file, determines the target scheme per path with _determine_scheme, then reads records from a WheelSource and writes them to a WheelDestination. Abstractions are cleanly separated across sources.py (reading wheels), destinations.py (writing to schemes), records.py (RECORD entries), scripts.py (launcher generation), and utils.py (metadata/entry-point parsing).
Tech Stack - Pure Python targeting 3.10+, built with flit_core as the build backend. It has no third-party runtime dependencies. Development tooling includes ruff with an extensive lint rule set, mypy in strict mode, nox for task automation, and pre-commit hooks; the package ships a py.typed marker for type checking.
Code Quality - The project has a thorough test suite under tests/ covering core, destinations, records, scripts, sources, utils, and the main entry point. mypy strict with warn_unreachable and extra error codes, plus a broad ruff rule selection (bugbear, pydocstyle, naming, pyupgrade, and more), enforce consistent, well-documented, fully typed code.
API Design - The public surface is intentionally minimal: all exposes just install, so most consumers call one function. Advanced users subclass WheelSource and WheelDestination for custom behavior, keeping the common case trivial while leaving extension points well-defined and documented on Read the Docs.