Skip to main content

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
  1. Select your project folder.
  2. Analyze dependencies.
  3. 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:

  1. Fork the repository.
  2. Create a new branch for your feature.
  3. 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:


Acknowledgments

Thanks to all open-source contributors and the development community for their inspiration and tools.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

polydepend-1.2.1-py3-none-any.whl (14.3 kB view details)

Uploaded Python 3

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

Hashes for polydepend-1.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 66c4af846b54202c4d98d8c5af918431a3dfdbd2ea0c4fe25b3df8f13434ad1c
MD5 3a7e2a5c603de0750936e7a30f945aba
BLAKE2b-256 0f17c894dfe30bd9cbea9f7161963dc154977a17947d9cb8f609b41381b383a7

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page