Name | unearth JSON |
Version |
0.17.2
JSON |
| download |
home_page | None |
Summary | A utility to fetch and download python packages |
upload_time | 2024-09-02 04:27:41 |
maintainer | None |
docs_url | None |
author | None |
requires_python | >=3.8 |
license | MIT |
keywords |
|
VCS |
 |
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
# unearth
<!--index start-->
[](https://github.com/frostming/unearth/actions?query=workflow%3Aci)
[](https://pypi.org/project/unearth/)
[](https://github.com/psf/black)
[](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[](https://github.com/frostming/unearth/actions?query=workflow%3Aci)\n[](https://pypi.org/project/unearth/)\n[](https://github.com/psf/black)\n[](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"
}