A Cross-Language Dependency Resolver and Manager
PolyDepend is a powerful and extensible tool designed to resolve dependency issues for projects written in various programming languages. It analyzes your project files, resolves version conflicts, and installs the required dependencies seamlessly.
Whether you are working with Python, JavaScript, Java, or other languages, PolyDepend simplifies dependency management, making it easier to maintain multi-language projects and monorepos.
- Multi-Language Support: Handles dependencies for Python, JavaScript, Java, Ruby, Go, Rust, and more.
- Dependency Conflict Resolution: Automatically detects and resolves version conflicts.
- Offline Mode: Caches dependencies for offline installation.
- Dependency Visualization: Generates dependency graphs to identify conflicts.
- User-Friendly Interface: Comes with both CLI and GUI options.
- Extensibility: Easily add support for new languages using plugins.
Install PolyDepend using pip:
pip install polydepend
Run the following command in your terminal:
polydepend <path_to_your_project>
Example:
polydepend /path/to/my/python/project
Launch the graphical interface:
python -m polydepend.gui
- Select your project folder.
- Analyze dependencies.
- Resolve conflicts and install.
- Python: requirements.txt, pyproject.toml
- JavaScript: package.json, yarn.lock
- Java: pom.xml, build.gradle
- Ruby: Gemfile
- Go: go.mod
- Rust: Cargo.toml
polydepend/
│
├── src/
│ ├── analyzers/ # Language-specific dependency analyzers
│ ├── resolver/ # Core engine to resolve conflicts
│ ├── fetcher/ # Dependency installation modules
│ ├── cli.py # Command-line interface
│ └── gui.py # Graphical user interface
│
├── tests/ # Unit and integration tests
├── requirements.txt # Python dependencies for development
├── README.md # Project documentation
└── setup.py # Packaging and distribution
Clone the repository:
git clone https://github.com/Simacoder/polydepend.git
cd polydepend
Install development dependencies:
pip install -r requirements.txt
Run tests:
pytest tests/
To add support for a new language:
- Create a new analyzer module in src/analyzers/.
- Implement the analyze_dependencies() function for the new language.
- Register the new analyzer in the resolver.
Example for Ruby:
def analyze_ruby_dependencies(project_path):
"""Parse Gemfile for dependencies."""
# Your implementation here
We welcome contributions! Please follow these steps:
- Fork the repository.
- Create a new branch for your feature.
- Submit a pull request with a detailed description of your changes.
polyDepend is licensed under the MIT License. See LICENSE for details.
For questions or feedback, please contact:
- Email: [email protected]
- GitHub: Simacoder
Thanks to all open-source contributors and the development community for their inspiration and tools.