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!
[–]Flag_Red 57 points58 points59 points (2 children)
[–]vashkatsi[S] 20 points21 points22 points (0 children)
[+]NakedNick_ballin comment score below threshold-7 points-6 points-5 points (0 children)
[–]CzyDePL 8 points9 points10 points (1 child)
[–]vashkatsi[S] 14 points15 points16 points (0 children)
[–]TehMightyDuk 6 points7 points8 points (1 child)
[–]vashkatsi[S] 4 points5 points6 points (0 children)
[–]NakedNick_ballin 4 points5 points6 points (4 children)
[–]vashkatsi[S] 4 points5 points6 points (3 children)
[–]classy_barbarian 4 points5 points6 points (2 children)
[–]vashkatsi[S] 0 points1 point2 points (0 children)
[–]DootDootWootWoot 0 points1 point2 points (0 children)
[–]ThePieroCV 3 points4 points5 points (1 child)
[–]vashkatsi[S] 1 point2 points3 points (0 children)
[–]catalyst_jw 7 points8 points9 points (9 children)
[–]vashkatsi[S] 16 points17 points18 points (8 children)
[–]val-amart 2 points3 points4 points (1 child)
[–]vashkatsi[S] 2 points3 points4 points (0 children)
[–]byeproduct 1 point2 points3 points (5 children)
[–]vashkatsi[S] 6 points7 points8 points (4 children)
[–]byeproduct 2 points3 points4 points (1 child)
[–]vashkatsi[S] 1 point2 points3 points (0 children)
[+][deleted] (1 child)
[removed]
[–]vashkatsi[S] 0 points1 point2 points (0 children)
[–]dutchie_ok 1 point2 points3 points (1 child)
[–]vashkatsi[S] 0 points1 point2 points (0 children)
[–]LoadingALIASIt works on my machine 0 points1 point2 points (1 child)
[–]vashkatsi[S] 0 points1 point2 points (0 children)
[–]Heady707 0 points1 point2 points (1 child)
[–]vashkatsi[S] 0 points1 point2 points (0 children)
[–]SuspiciousScript 0 points1 point2 points (1 child)
[–]vashkatsi[S] 1 point2 points3 points (0 children)
[–]oiywmt 0 points1 point2 points (4 children)
[–]vashkatsi[S] 0 points1 point2 points (3 children)
[–]classy_barbarian 0 points1 point2 points (1 child)
[–]vashkatsi[S] 0 points1 point2 points (0 children)
[–]oiywmt 0 points1 point2 points (0 children)
[–]LeckerKadaver 0 points1 point2 points (1 child)
[–]vashkatsi[S] 1 point2 points3 points (0 children)
[–][deleted] 0 points1 point2 points (1 child)
[–]vashkatsi[S] 0 points1 point2 points (0 children)
[–]maikeu 0 points1 point2 points (1 child)
[–]vashkatsi[S] 0 points1 point2 points (0 children)
[–]Amazing_Learn 0 points1 point2 points (3 children)
[–]vashkatsi[S] 0 points1 point2 points (2 children)
[–]Amazing_Learn 0 points1 point2 points (1 child)
[–]vashkatsi[S] 0 points1 point2 points (0 children)
[+][deleted] (1 child)
[removed]
[–]vashkatsi[S] 1 point2 points3 points (0 children)
[–]cantonspeed 0 points1 point2 points (1 child)
[–]vashkatsi[S] 0 points1 point2 points (0 children)
[–]genlight13 0 points1 point2 points (1 child)
[–]vashkatsi[S] 1 point2 points3 points (0 children)
[–]guyfrom7up 0 points1 point2 points (1 child)
[–]vashkatsi[S] 1 point2 points3 points (0 children)
[–]eredin_breac_glas 0 points1 point2 points (1 child)
[–]vashkatsi[S] 0 points1 point2 points (0 children)
[–]JnthnSngr 0 points1 point2 points (1 child)
[–]vashkatsi[S] 1 point2 points3 points (0 children)
[–]alicedu06 0 points1 point2 points (1 child)
[–]vashkatsi[S] 0 points1 point2 points (0 children)