unearth


Nameunearth JSON
Version 0.17.2 PyPI version JSON
download
home_pageNone
SummaryA utility to fetch and download python packages
upload_time2024-09-02 04:27:41
maintainerNone
docs_urlNone
authorNone
requires_python>=3.8
licenseMIT
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # unearth

<!--index start-->

[![Tests](https://github.com/frostming/unearth/workflows/Tests/badge.svg)](https://github.com/frostming/unearth/actions?query=workflow%3Aci)
[![pypi version](https://img.shields.io/pypi/v/unearth.svg)](https://pypi.org/project/unearth/)
[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
[![pdm-managed](https://img.shields.io/endpoint?url=https%3A%2F%2Fcdn.jsdelivr.net%2Fgh%2Fpdm-project%2F.github%2Fbadge.json)](https://pdm-project.org)

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](https://pypi.org/project/resolvelib/) - Resolves concrete dependencies from a set of (abstract) requirements.
- [unearth](https://pypi.org/project/unearth/) _(This project)_ - Finds and downloads the best match(es) for a given requirement.
- [build](https://pypi.org/project/build/) - Builds wheels from the source code.
- [installer](https://pypi.org/project/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](https://semver.org/) so that downstream projects can use it to develop their own package finding and downloading.

## Requirements

unearth requires Python >=3.8

## Installation

```bash
$ python -m pip install --upgrade unearth
```

## Quickstart

Get the best matching candidate for a requirement:

```python
>>> 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:

```bash
$ 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"
  }
}
```

<!--index end-->

## Documentation

[Read the docs](https://unearth.readthedocs.io/en/latest/)

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "unearth",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": null,
    "keywords": null,
    "author": null,
    "author_email": "Frost Ming <me@frostming.com>",
    "download_url": "https://files.pythonhosted.org/packages/de/1f/5664f19db1352460e42f32e39976d8498a0fe056f0495221f53a43599154/unearth-0.17.2.tar.gz",
    "platform": null,
    "description": "# unearth\n\n<!--index start-->\n\n[![Tests](https://github.com/frostming/unearth/workflows/Tests/badge.svg)](https://github.com/frostming/unearth/actions?query=workflow%3Aci)\n[![pypi version](https://img.shields.io/pypi/v/unearth.svg)](https://pypi.org/project/unearth/)\n[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)\n[![pdm-managed](https://img.shields.io/endpoint?url=https%3A%2F%2Fcdn.jsdelivr.net%2Fgh%2Fpdm-project%2F.github%2Fbadge.json)](https://pdm-project.org)\n\nA utility to fetch and download python packages\n\n## Why this project?\n\nThis project exists as the last piece to complete the puzzle of a package manager. The other pieces are:\n\n- [resolvelib](https://pypi.org/project/resolvelib/) - Resolves concrete dependencies from a set of (abstract) requirements.\n- [unearth](https://pypi.org/project/unearth/) _(This project)_ - Finds and downloads the best match(es) for a given requirement.\n- [build](https://pypi.org/project/build/) - Builds wheels from the source code.\n- [installer](https://pypi.org/project/installer/) - Installs packages from wheels.\n\nThey provide all the low-level functionalities that are needed to resolve and install packages.\n\n## Why not pip?\n\nThe 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.\nUnearth serves as a stable replacement for pip's `PackageFinder` API. It will follow the conventions of [Semantic Versioning](https://semver.org/) so that downstream projects can use it to develop their own package finding and downloading.\n\n## Requirements\n\nunearth requires Python >=3.8\n\n## Installation\n\n```bash\n$ python -m pip install --upgrade unearth\n```\n\n## Quickstart\n\nGet the best matching candidate for a requirement:\n\n```python\n>>> from unearth import PackageFinder\n>>> finder = PackageFinder(index_urls=[\"https://pypi.org/simple/\"])\n>>> result = finder.find_best_match(\"flask>=2\")\n>>> result.best\nPackage(name='flask', version='2.1.2')\n```\n\nUsing the CLI:\n\n```bash\n$ unearth \"flask>=2\"\n{\n  \"name\": \"flask\",\n  \"version\": \"3.0.0\",\n  \"link\": {\n    \"url\": \"https://files.pythonhosted.org/packages/36/42/015c23096649b908c809c69388a805a571a3bea44362fe87e33fc3afa01f/flask-3.0.0-py3-none-any.whl\",\n    \"comes_from\": \"https://pypi.org/simple/flask/\",\n    \"yank_reason\": null,\n    \"requires_python\": \">=3.8\",\n    \"metadata\": \"https://files.pythonhosted.org/packages/36/42/015c23096649b908c809c69388a805a571a3bea44362fe87e33fc3afa01f/flask-3.0.0-py3-none-any.whl.metadata\"\n  }\n}\n```\n\n<!--index end-->\n\n## Documentation\n\n[Read the docs](https://unearth.readthedocs.io/en/latest/)\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "A utility to fetch and download python packages",
    "version": "0.17.2",
    "project_urls": {
        "Changelog": "https://github.com/frostming/unearth/releases",
        "Documentation": "https://unearth.readthedocs.io",
        "Homepage": "https://github.com/frostming/unearth"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "402f42e35e6826a8e941979a5a79517d6e15008140eaffe33a8c85c7dc336f6e",
                "md5": "895176f1313b8022fc083e4436aaf8f1",
                "sha256": "4d21af1238a583835fca156322f7225382e718cdcc42d6278050a88e605c4ad5"
            },
            "downloads": -1,
            "filename": "unearth-0.17.2-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "895176f1313b8022fc083e4436aaf8f1",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 47365,
            "upload_time": "2024-09-02T04:27:39",
            "upload_time_iso_8601": "2024-09-02T04:27:39.147906Z",
            "url": "https://files.pythonhosted.org/packages/40/2f/42e35e6826a8e941979a5a79517d6e15008140eaffe33a8c85c7dc336f6e/unearth-0.17.2-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "de1f5664f19db1352460e42f32e39976d8498a0fe056f0495221f53a43599154",
                "md5": "f571bf7d1ac5054b332b0f2e17b026bb",
                "sha256": "0b8a2afd3476f1ab6155fc579501ac47fffe43547d88a70e5a5b76a7fe6caa2c"
            },
            "downloads": -1,
            "filename": "unearth-0.17.2.tar.gz",
            "has_sig": false,
            "md5_digest": "f571bf7d1ac5054b332b0f2e17b026bb",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 284430,
            "upload_time": "2024-09-02T04:27:41",
            "upload_time_iso_8601": "2024-09-02T04:27:41.191149Z",
            "url": "https://files.pythonhosted.org/packages/de/1f/5664f19db1352460e42f32e39976d8498a0fe056f0495221f53a43599154/unearth-0.17.2.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-09-02 04:27:41",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "frostming",
    "github_project": "unearth",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "unearth"
}
        
Elapsed time: 0.27965s