Multi-language Dependency Management Tool
Project description
PolyDepend
A Cross-Language Dependency Resolver and Manager
Overview
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.
Features
- 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.
Installation
Install PolyDepend using pip:
pip install polydepend
Usage
CLI Usage
Run the following command in your terminal:
polydepend <path_to_your_project>
Example:
polydepend /path/to/my/python/project
GUI Usage
Launch the graphical interface:
python -m polydepend.gui
- Select your project folder.
- Analyze dependencies.
- Resolve conflicts and install.
Supported Languages
- Python: requirements.txt, pyproject.toml
- JavaScript: package.json, yarn.lock
- Java: pom.xml, build.gradle
- Ruby: Gemfile
- Go: go.mod
- Rust: Cargo.toml
Project Structure
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
Development
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/
Extending PolyDepend
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
Contributing
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.
License
polyDepend is licensed under the MIT License. See LICENSE for details.
Contact
For questions or feedback, please contact:
- Email: simacoder@hotmail.com
- GitHub: Simacoder
Acknowledgments
Thanks to all open-source contributors and the development community for their inspiration and tools.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file polydepend-1.2.1-py3-none-any.whl.
File metadata
- Download URL: polydepend-1.2.1-py3-none-any.whl
- Upload date:
- Size: 14.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
66c4af846b54202c4d98d8c5af918431a3dfdbd2ea0c4fe25b3df8f13434ad1c
|
|
| MD5 |
3a7e2a5c603de0750936e7a30f945aba
|
|
| BLAKE2b-256 |
0f17c894dfe30bd9cbea9f7161963dc154977a17947d9cb8f609b41381b383a7
|