Skip to main content

A utility to fetch and download python packages

Project description

unearth

Tests pypi version Code style: black pdm-managed

A utility to fetch and download python packages

Why this project?

This project exists as the last piece to complete the puzzle of a package manager. The other pieces are:

  • resolvelib - Resolves concrete dependencies from a set of (abstract) requirements.
  • unearth (This project) - Finds and downloads the best match(es) for a given requirement.
  • build - Builds wheels from the source code.
  • installer - Installs packages from wheels.

They provide all the low-level functionalities that are needed to resolve and install packages.

Why not pip?

The core functionality is basically extracted from pip. However, pip is not designed to be used as a library and hence the API is not very stable. Unearth serves as a stable replacement for pip's PackageFinder API. It will follow the conventions of Semantic Versioning so that downstream projects can use it to develop their own package finding and downloading.

Requirements

unearth requires Python >=3.8

Installation

$ python -m pip install --upgrade unearth

Quickstart

Get the best matching candidate for a requirement:

>>> from unearth import PackageFinder
>>> finder = PackageFinder(index_urls=["https://pypi.org/simple/"])
>>> result = finder.find_best_match("flask>=2")
>>> result.best
Package(name='flask', version='2.1.2')

Using the CLI:

$ unearth "flask>=2"
{
  "name": "flask",
  "version": "3.0.0",
  "link": {
    "url": "https://files.pythonhosted.org/packages/36/42/015c23096649b908c809c69388a805a571a3bea44362fe87e33fc3afa01f/flask-3.0.0-py3-none-any.whl",
    "comes_from": "https://pypi.org/simple/flask/",
    "yank_reason": null,
    "requires_python": ">=3.8",
    "metadata": "https://files.pythonhosted.org/packages/36/42/015c23096649b908c809c69388a805a571a3bea44362fe87e33fc3afa01f/flask-3.0.0-py3-none-any.whl.metadata"
  }
}

Documentation

Read the docs

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

unearth-0.18.2.tar.gz (285.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

unearth-0.18.2-py3-none-any.whl (48.0 kB view details)

Uploaded Python 3

File details

Details for the file unearth-0.18.2.tar.gz.

File metadata

  • Download URL: unearth-0.18.2.tar.gz
  • Upload date:
  • Size: 285.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for unearth-0.18.2.tar.gz
Algorithm Hash digest
SHA256 1e53d7f52f46dd5f875e77ff1c55b12477e215a092e4b66c9764a77df4a9b520
MD5 2548c553f2699f400d41fce9294b5ab5
BLAKE2b-256 471fcdad555c0e8643232cce619e8d88d5bec81b4d41e4cc1c65bee8a51a4750

See more details on using hashes here.

Provenance

The following attestation bundles were made for unearth-0.18.2.tar.gz:

Publisher: release.yml on frostming/unearth

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file unearth-0.18.2-py3-none-any.whl.

File metadata

  • Download URL: unearth-0.18.2-py3-none-any.whl
  • Upload date:
  • Size: 48.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for unearth-0.18.2-py3-none-any.whl
Algorithm Hash digest
SHA256 31fd55d67c0e46a1ebb78993a2010568e6c4231334a3207d18d5d4a549d8d692
MD5 e8a2b23930ba1ab575921f1b8bc71463
BLAKE2b-256 6ca813d4e8bbfa076493f56b5c8f3a850078ee05ebfb84b808e146eec781199b

See more details on using hashes here.

Provenance

The following attestation bundles were made for unearth-0.18.2-py3-none-any.whl:

Publisher: release.yml on frostming/unearth

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page