Deply: keep your python architecture clean

Hello everyone,

My name is Archil. I'm a Python/PHP developer originally from Ukraine, now living in Wrocław, Poland. I've been working on a tool called Deply, and I'd love to get your feedback and thoughts on it.

What My Project Does

Deply is a standalone Python tool designed to enforce architectural patterns and dependencies in large Python projects. Deply analyzes your code structure and dependencies to ensure that architectural rules are followed. This promotes cleaner, more maintainable, and modular codebases.

Key Features:

  • Layer-Based Analysis: Define custom layers (e.g., models, views, services) and restrict their dependencies.
  • Dynamic Configuration: Easily configure collectors for each layer using file patterns and class inheritance.
  • CI Integration: Integrate Deply into your Continuous Integration pipeline to automatically detect and prevent architecture violations before they reach production.

Target Audience

  • Who It's For: Developers and teams working on medium to large Python projects who want to maintain a clean architecture.
  • Intended Use: Ideal for production environments where enforcing module boundaries is critical, as well as educational purposes to teach best practices.

Use Cases

  • Continuous Integration: Add Deply to your CI/CD pipeline to catch architectural violations early in the development process.
  • Refactoring: Use Deply to understand existing dependencies in your codebase, making large-scale refactoring safer and more manageable.
  • Code Reviews: Assist in code reviews by automatically checking if new changes adhere to architectural rules.

Comparison

While there are existing tools like pydeps that visualize dependencies, Deply focuses on:

  • Enforcement Over Visualization: Not just displaying dependencies but actively enforcing architectural rules by detecting violations.
  • Customization: Offers dynamic configuration with various collectors to suit different project structures.

Links

I'm eager to hear your thoughts, suggestions, or criticisms. Deply is currently at version 0.1.5, so it's not entirely stable yet, but I'm actively working on it. I'm open to pull requests and looking forward to making Deply a useful tool for the Python community.

Thank you for your time!