Skip to content

Devid-Ba/mousebender

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

99 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

mousebender

A package for installing fully-specified Python packages.

Package contents

Goals for this project

The goal is to provide a package which could install all dependencies as frozen by a tool like pip-tools via an API (or put another way, what is required to install pip w/o using pip itself?). This avoids relying on pip's CLI to do installations but instead provide a programmatic API. It also helps discover any holes in specifications and/or packages for providing full support for Python package installation based on standards.

The steps to installing a package

PyPA specifications

  1. Figure out what packages are necessary
    1. For an app, read lock file (?)
    2. For a package:
      1. Read list of dependencies (?)
      2. Solve dependency constraints (ResolveLib)
  2. Get the wheel to install
    1. Check if package is already installed (spec / importlib-metadata)
    2. Check local wheel cache (?; how pip does it)
    3. Choose appropriate file from PyPI/index
      1. Process the list of files (simple repository API / mousebender.simple)
      2. Calculate best-fitting wheel (spec / packaging.tags)
      3. If no wheel found ...
        1. Select and download the sdist (?)
        2. Build the wheel (PEP 517, PEP 518 / pep517, build)
    4. Download the wheel
    5. Cache the wheel locally (?)
  3. Install the wheel
    1. Install the files (spec / distlib.wheel, installer)
    2. Record the installation (spec / ?)

Where does the name come from?

The customer from Monty Python's cheese shop sketch is named "Mr. Mousebender". And in case you don't know, the original name of PyPI was the Cheeseshop after the Monty Python sketch.


CI status 100% branch coverage Formatted with Black Checked by mypy PyPI - Python Version PyPI - License PyPI - Wheel

About

A package for installing Python packages

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • HTML 99.9%
  • Python 0.1%