{"id":22574847,"url":"https://github.com/thoth-station/revsolver","last_synced_at":"2026-03-05T03:31:13.153Z","repository":{"id":40420476,"uuid":"257665769","full_name":"thoth-station/revsolver","owner":"thoth-station","description":"A reverse solver implementation","archived":false,"fork":false,"pushed_at":"2023-05-29T21:49:39.000Z","size":359,"stargazers_count":1,"open_issues_count":1,"forks_count":7,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-09-03T13:32:12.365Z","etag":null,"topics":["application-stacks","hacktoberfest","python","python3","thoth"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/thoth-station.png","metadata":{"files":{"readme":"README.rst","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2020-04-21T17:27:38.000Z","updated_at":"2024-08-21T02:03:21.000Z","dependencies_parsed_at":"2025-04-10T16:11:14.455Z","dependency_job_id":"0ff1a6a8-e2a2-4d40-9807-12623d7ea4a1","html_url":"https://github.com/thoth-station/revsolver","commit_stats":null,"previous_names":[],"tags_count":14,"template":false,"template_full_name":"thoth-station/template-project","purl":"pkg:github/thoth-station/revsolver","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoth-station%2Frevsolver","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoth-station%2Frevsolver/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoth-station%2Frevsolver/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoth-station%2Frevsolver/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thoth-station","download_url":"https://codeload.github.com/thoth-station/revsolver/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thoth-station%2Frevsolver/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30108585,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-05T01:39:18.192Z","status":"online","status_checked_at":"2026-03-05T02:00:06.710Z","response_time":93,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["application-stacks","hacktoberfest","python","python3","thoth"],"created_at":"2024-12-08T03:08:11.783Z","updated_at":"2026-03-05T03:31:13.107Z","avatar_url":"https://github.com/thoth-station.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"Thoth's reverse solver\n----------------------\n\n.. image:: https://img.shields.io/github/v/tag/thoth-station/revsolver?style=plastic\n  :target: https://github.com/thoth-station/revsolver/tags\n  :alt: GitHub tag (latest by date)\n\n.. image:: https://quay.io/repository/thoth-station/revsolver/status\n  :target: https://quay.io/repository/thoth-station/revsolver?tab=tags\n  :alt: Quay - Build\n\nA reverse solver implementation for project Thoth.\n\nThoth's `solver \u003chttps://github.com/thoth-station/solver\u003e`_ can resolve requirements\nof Python packages that are subsequently synced into Thoth's knowledge base. Note this\nsolver operates only one way - from a package to its dependencies. This causes\nout-of-date issues when a new release of a dependency is released which would satisfy\nversion specification of an already solved package. The reverse solver deals with this issue.\n\nThe reverse solver checks what packages depend on the given package (dependents) and\nre-computes dependency information so that the dependency graph stored in Thoth's knowledge\nbase is up to date - considering releases.\n\nThis is tightly bound to over-pinning and under-pinning issues often seen in Python packages.\n\nSee `this intro video for more info \u003chttps://www.youtube.com/watch?v=bpDzi_Jaj4M\u003e`__.\n\nRunning the reverse solver locally\n==================================\n\nThis is suitable only for development purposes.\n\nThe implementation talks to OpenShift to retrieve solvers installed in a\ndeployment. You need to be logged into OpenShift cluster and have at least view\npermissions to a Thoth deployment (thoth-test-core in this example):\n\n.. code-block::\n\n  THOTH_INFRA_NAMESPACE=thoth-test-core KUBERNETES_VERIFY_TLS=0 PYTHONPATH=. pipenv run python3 ./app.py --package-name tensorflow --package-version 2.0.0\n\nThe output of the above command is a JSON document stating what packages depend\non TensorFlow in version 2.0.0. Note the Python ecosystem does not provide any\nway how to depend on a particular build available on different package indexes.\n\nRunning the reverse solver in the cluster\n=========================================\n\nThe reverse solver is run in the cluster as part of solver workflow when a new\npackage release is detected.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthoth-station%2Frevsolver","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthoth-station%2Frevsolver","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthoth-station%2Frevsolver/lists"}