installer

A low-level Python library for installing packages from wheel distributions.

Library
PyPI
v1.0.1
147stars
MIT License

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum.How we score it →
65/100Good
Development Activity64
Maintenance36
Community80
Maturity60
Momentum20

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation.How we score it →
84/100Excellent
Architecture82
Code Quality88
Innovation85
Learning Curve74

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.

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers

Search