https://github.com/thoth-station/revsolver
A reverse solver implementation
https://github.com/thoth-station/revsolver
application-stacks hacktoberfest python python3 thoth
Last synced: 2 months ago
JSON representation
A reverse solver implementation
- Host: GitHub
- URL: https://github.com/thoth-station/revsolver
- Owner: thoth-station
- License: gpl-3.0
- Created: 2020-04-21T17:27:38.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2023-05-29T21:49:39.000Z (about 2 years ago)
- Last Synced: 2025-03-24T13:51:26.480Z (3 months ago)
- Topics: application-stacks, hacktoberfest, python, python3, thoth
- Language: Python
- Size: 351 KB
- Stars: 1
- Watchers: 5
- Forks: 7
- Open Issues: 1
-
Metadata Files:
- Readme: README.rst
- Changelog: CHANGELOG.md
- License: LICENSE
- Codeowners: .github/CODEOWNERS
Awesome Lists containing this project
README
Thoth's reverse solver
----------------------.. image:: https://img.shields.io/github/v/tag/thoth-station/revsolver?style=plastic
:target: https://github.com/thoth-station/revsolver/tags
:alt: GitHub tag (latest by date).. image:: https://quay.io/repository/thoth-station/revsolver/status
:target: https://quay.io/repository/thoth-station/revsolver?tab=tags
:alt: Quay - BuildA reverse solver implementation for project Thoth.
Thoth's `solver `_ can resolve requirements
of Python packages that are subsequently synced into Thoth's knowledge base. Note this
solver operates only one way - from a package to its dependencies. This causes
out-of-date issues when a new release of a dependency is released which would satisfy
version specification of an already solved package. The reverse solver deals with this issue.The reverse solver checks what packages depend on the given package (dependents) and
re-computes dependency information so that the dependency graph stored in Thoth's knowledge
base is up to date - considering releases.This is tightly bound to over-pinning and under-pinning issues often seen in Python packages.
See `this intro video for more info `__.
Running the reverse solver locally
==================================This is suitable only for development purposes.
The implementation talks to OpenShift to retrieve solvers installed in a
deployment. You need to be logged into OpenShift cluster and have at least view
permissions to a Thoth deployment (thoth-test-core in this example):.. code-block::
THOTH_INFRA_NAMESPACE=thoth-test-core KUBERNETES_VERIFY_TLS=0 PYTHONPATH=. pipenv run python3 ./app.py --package-name tensorflow --package-version 2.0.0
The output of the above command is a JSON document stating what packages depend
on TensorFlow in version 2.0.0. Note the Python ecosystem does not provide any
way how to depend on a particular build available on different package indexes.Running the reverse solver in the cluster
=========================================The reverse solver is run in the cluster as part of solver workflow when a new
package release is detected.