# 🔧 Requirements Resolver
> Effortlessly merge and resolve Python dependencies from two `requirements.txt` files via a sleek GUI or CLI tool.
<p align="left">
<a href="https://pypi.org/project/requirements-resolver/">
<img alt="PyPI Version" src="https://img.shields.io/pypi/v/requirements-resolver.svg">
</a>
<a href="https://www.python.org/downloads/release/python-380/">
<img alt="Python 3.8+" src="https://img.shields.io/badge/python-3.8%2B-blue.svg">
</a>
<a href="https://github.com/ruslanmv/requirements-resolver/blob/master/LICENSE">
<img alt="License: MIT" src="https://img.shields.io/badge/license-MIT-blue.svg">
</a>
<a href="https://github.com/ruslanmv/requirements-resolver/actions/workflows/ci.yml">
<img alt="Build Status" src="https://github.com/ruslanmv/requirements-resolver/actions/workflows/ci.yml/badge.svg">
</a>
<a href="https://coveralls.io/github/ruslanmv/requirements-resolver?branch=master">
<img alt="Coverage Status" src="https://coveralls.io/repos/github/ruslanmv/requirements-resolver/badge.svg?branch=master">
<a href="https://requirements-resolver.readthedocs.io/en/latest/">
<img alt="Read the Docs" src="https://readthedocs.org/projects/requirements-resolver/badge/?version=latest">
</a>
</p>
## 🔍 Overview
Requirements Resolver is a production‑ready Python package that:
- **Parses** two separate `requirements.txt` files
- **Fetches** all available versions from PyPI
- **Computes** the latest set of compatible versions satisfying both files
- **Caches** results locally for lightning‑fast subsequent runs
- **Validates** the merged set in an ephemeral virtual environment
- **Delivers** both a polished GUI (Tkinter) and a powerful CLI
Ideal for open‑source projects, CI/CD pipelines, and large‑scale Python deployments.
---
## 🚀 Installation
Ensure you have **Python 3.8+** installed. On Debian/Ubuntu, install Tkinter for GUI support:
```bash
sudo apt-get update
sudo apt-get install python3-tk
````
Then install via `pip`:
```bash
pip install requirements-resolver
```
Or grab the latest source:
```bash
git clone https://github.com/ruslanmv/requirements-resolver.git
cd requirements-resolver
pip install .
```
---
## 🎬 Quickstart
### GUI Mode
```bash
requirements-resolver
```
1. **Browse…** to select your two `requirements.txt` files.
2. Click **Resolve Dependencies**.
3. Watch progress logs and find your `requirements.merged.txt` upon success.
### CLI Mode
```bash
requirements-resolver -f reqs/prod.txt reqs/dev.txt
```
* **Specify output**:
```bash
requirements-resolver -f reqs/prod.txt reqs/dev.txt -o requirements.final.txt
```
---
## 🛠 Features
* **Dual Interfaces**: Tkinter‐based GUI + rich CLI
* **PyPI Integration**: Real‑time version lookup
* **Local Caching**: Minimizes API calls for repeat runs
* **Automated Testing**: Leverages `venv` to verify installability
* **Configurable**: Override cache directory, HTTP timeouts, log levels
---
## 🧑💻 Development
```bash
git clone https://github.com/ruslanmv.com/requirements-resolver.git
cd requirements-resolver
make setup # Installs dev dependencies
make run # Launches GUI in development mode
make lint # Checks code style (flake8)
make test # Runs unit tests
```
See [CONTRIBUTING.md](./CONTRIBUTING.md) for guidelines.
---
## 📄 Documentation
Full user guide, API reference, and examples are on Read the Docs:
[https://requirements-resolver.readthedocs.io](https://requirements-resolver.readthedocs.io)
---
## ❤️ Contributing & Support
Please ⭐ the repo, file issues, and submit PRs!
For questions or feature requests, open an issue or join our Slack channel.
---
## 📜 License
Distributed under the [MIT License](./LICENSE).
© 2025 ruslanmv.com
Raw data
{
"_id": null,
"home_page": null,
"name": "requirements-resolver",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": "requirements, dependencies, resolver, conflicts, pip, packaging",
"author": null,
"author_email": "Ruslan Magana Vsevolodovna <contact@ruslanmv.com>",
"download_url": "https://files.pythonhosted.org/packages/1f/81/7cc4fd1ef62c271b24bde134d5bfc0d62fda3d4b8e3c13e567fd12a36479/requirements_resolver-0.1.1.tar.gz",
"platform": null,
"description": "# \ud83d\udd27 Requirements Resolver\n\n> Effortlessly merge and resolve Python dependencies from two `requirements.txt` files via a sleek GUI or CLI tool.\n\n\n<p align=\"left\">\n <a href=\"https://pypi.org/project/requirements-resolver/\">\n <img alt=\"PyPI Version\" src=\"https://img.shields.io/pypi/v/requirements-resolver.svg\">\n </a>\n <a href=\"https://www.python.org/downloads/release/python-380/\">\n <img alt=\"Python 3.8+\" src=\"https://img.shields.io/badge/python-3.8%2B-blue.svg\">\n </a>\n <a href=\"https://github.com/ruslanmv/requirements-resolver/blob/master/LICENSE\">\n <img alt=\"License: MIT\" src=\"https://img.shields.io/badge/license-MIT-blue.svg\">\n </a>\n <a href=\"https://github.com/ruslanmv/requirements-resolver/actions/workflows/ci.yml\">\n <img alt=\"Build Status\" src=\"https://github.com/ruslanmv/requirements-resolver/actions/workflows/ci.yml/badge.svg\">\n </a>\n <a href=\"https://coveralls.io/github/ruslanmv/requirements-resolver?branch=master\">\n <img alt=\"Coverage Status\" src=\"https://coveralls.io/repos/github/ruslanmv/requirements-resolver/badge.svg?branch=master\">\n <a href=\"https://requirements-resolver.readthedocs.io/en/latest/\">\n <img alt=\"Read the Docs\" src=\"https://readthedocs.org/projects/requirements-resolver/badge/?version=latest\">\n </a>\n</p>\n\n## \ud83d\udd0d Overview\n\nRequirements Resolver is a production\u2011ready Python package that:\n\n- **Parses** two separate `requirements.txt` files \n- **Fetches** all available versions from PyPI \n- **Computes** the latest set of compatible versions satisfying both files \n- **Caches** results locally for lightning\u2011fast subsequent runs \n- **Validates** the merged set in an ephemeral virtual environment \n- **Delivers** both a polished GUI (Tkinter) and a powerful CLI \n\nIdeal for open\u2011source projects, CI/CD pipelines, and large\u2011scale Python deployments.\n\n---\n\n## \ud83d\ude80 Installation\n\nEnsure you have **Python\u00a03.8+** installed. On Debian/Ubuntu, install Tkinter for GUI support:\n\n```bash\nsudo apt-get update\nsudo apt-get install python3-tk\n````\n\nThen install via\u202f`pip`:\n\n```bash\npip install requirements-resolver\n```\n\nOr grab the latest source:\n\n```bash\ngit clone https://github.com/ruslanmv/requirements-resolver.git\ncd requirements-resolver\npip install .\n```\n\n---\n\n## \ud83c\udfac Quickstart\n\n### GUI Mode\n\n```bash\nrequirements-resolver\n```\n\n1. **Browse\u2026** to select your two `requirements.txt` files.\n2. Click **Resolve Dependencies**.\n3. Watch progress logs and find your `requirements.merged.txt` upon success.\n\n### CLI Mode\n\n```bash\nrequirements-resolver -f reqs/prod.txt reqs/dev.txt\n```\n\n* **Specify output**:\n\n ```bash\n requirements-resolver -f reqs/prod.txt reqs/dev.txt -o requirements.final.txt\n ```\n\n---\n\n## \ud83d\udee0 Features\n\n* **Dual Interfaces**: Tkinter\u2010based GUI + rich CLI\n* **PyPI Integration**: Real\u2011time version lookup\n* **Local Caching**: Minimizes API calls for repeat runs\n* **Automated Testing**: Leverages `venv` to verify installability\n* **Configurable**: Override cache directory, HTTP timeouts, log levels\n\n---\n\n## \ud83e\uddd1\u200d\ud83d\udcbb Development\n\n```bash\ngit clone https://github.com/ruslanmv.com/requirements-resolver.git\ncd requirements-resolver\nmake setup # Installs dev dependencies\nmake run # Launches GUI in development mode\nmake lint # Checks code style (flake8)\nmake test # Runs unit tests\n```\n\nSee [CONTRIBUTING.md](./CONTRIBUTING.md) for guidelines.\n\n---\n\n## \ud83d\udcc4 Documentation\n\nFull user guide, API reference, and examples are on Read\u202fthe\u202fDocs:\n[https://requirements-resolver.readthedocs.io](https://requirements-resolver.readthedocs.io)\n\n---\n\n## \u2764\ufe0f Contributing & Support\n\nPlease \u2b50 the repo, file issues, and submit PRs!\nFor questions or feature requests, open an issue or join our Slack channel.\n\n---\n\n## \ud83d\udcdc License\n\nDistributed under the [MIT License](./LICENSE).\n\u00a9 2025 ruslanmv.com\n\n",
"bugtrack_url": null,
"license": null,
"summary": "A tool to resolve requirements conflicts between n requirements files.",
"version": "0.1.1",
"project_urls": {
"Bug Tracker": "https://github.com/ruslanmv/requirements-resolver/issues",
"Homepage": "https://ruslanmv.com",
"Repository": "https://github.com/ruslanmv/requirements-resolver"
},
"split_keywords": [
"requirements",
" dependencies",
" resolver",
" conflicts",
" pip",
" packaging"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "2f6549791b2b4fb277df599eba7886c1a57aab56b660e12b49eef28c7d1d4efc",
"md5": "d4dcba00270b1b6c5d2e0debec8a913a",
"sha256": "fda23c3716b39016cb00fc1d2dcc03c5a97e1f4c33f810d257575ef9a16c8e62"
},
"downloads": -1,
"filename": "requirements_resolver-0.1.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "d4dcba00270b1b6c5d2e0debec8a913a",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 12917,
"upload_time": "2025-07-20T20:26:54",
"upload_time_iso_8601": "2025-07-20T20:26:54.383352Z",
"url": "https://files.pythonhosted.org/packages/2f/65/49791b2b4fb277df599eba7886c1a57aab56b660e12b49eef28c7d1d4efc/requirements_resolver-0.1.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "1f817cc4fd1ef62c271b24bde134d5bfc0d62fda3d4b8e3c13e567fd12a36479",
"md5": "55cd92052c7c44109ffb7e71971cad11",
"sha256": "49f04008301bf9b37be572a813aa9ef1172d7e18a9aca4940f4dfa51be6169a1"
},
"downloads": -1,
"filename": "requirements_resolver-0.1.1.tar.gz",
"has_sig": false,
"md5_digest": "55cd92052c7c44109ffb7e71971cad11",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 14124,
"upload_time": "2025-07-20T20:26:55",
"upload_time_iso_8601": "2025-07-20T20:26:55.539795Z",
"url": "https://files.pythonhosted.org/packages/1f/81/7cc4fd1ef62c271b24bde134d5bfc0d62fda3d4b8e3c13e567fd12a36479/requirements_resolver-0.1.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-20 20:26:55",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "ruslanmv",
"github_project": "requirements-resolver",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "requirements-resolver"
}