Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/frostming/unearth
A utility to fetch and download python packages
https://github.com/frostming/unearth
downloader pypi utility
Last synced: 1 day ago
JSON representation
A utility to fetch and download python packages
- Host: GitHub
- URL: https://github.com/frostming/unearth
- Owner: frostming
- License: mit
- Created: 2022-05-16T07:59:20.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-04-08T20:36:12.000Z (10 months ago)
- Last Synced: 2024-04-14T06:06:09.372Z (9 months ago)
- Topics: downloader, pypi, utility
- Language: Python
- Homepage: https://unearth.readthedocs.io
- Size: 584 KB
- Stars: 130
- Watchers: 5
- Forks: 16
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
- Changelog: changelogithub.config.json
- Contributing: CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
# unearth
[![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"
}
}
```## Documentation
[Read the docs](https://unearth.readthedocs.io/en/latest/)