大規模な Python プロジェクトは、保守が困難な複雑なコードベースに進化することがよくあります。インポート、レイヤー、および誰が誰に依存しているかを追跡すると、すぐに混乱が生じる可能性があります。デプリがお手伝いします。コード構造を分析し、アーキテクチャ ルールを適用することで、Python プロジェクトが成長してもクリーンでモジュール化され、保守が容易な状態を維持します。
Python は柔軟性があるため、注意しないとスパゲッティ コードが簡単に導入されてしまいます。新しいモジュールやデコレータを追加したり、クラスの継承方法を変更したりすると、大規模なチーム全体で微妙な依存関係の問題が発生する可能性があります。自動チェックによって強制される明確な境界は、コードの品質を高く保つのに役立ちます。このアプローチにより、読みやすさとチームの生産性が向上します。
Deply は次のようなスタンドアロン ツールです。
Deply の利点は、インポートを超えて、デコレータ、クラス継承、ファイル パターンなどを考慮していることです。 YAML ベースの構成により、新しいテスト ファイルを作成しなくても、CI パイプラインに簡単に組み込むことができます。
pip install deply
最新バージョン (現在 0.5.2) を入手できます。
プロジェクトのルートにdeply.yamlファイルを作成します。少なくとも、分析するパス、除外するファイル、レイヤー、ルールを定義します。以下は、Django のようなプロジェクトのサンプル スニペットです。
deply: paths: - /path/to/your/project exclude_files: - ".*\.venv/.*" layers: - name: models collectors: - type: bool any_of: - type: class_inherits base_class: "django.db.models.Model" - type: class_inherits base_class: "django.contrib.auth.models.AbstractUser" - name: views collectors: - type: file_regex regex: ".*/views_api.py" ruleset: views: disallow_layer_dependencies: - models enforce_function_decorator_usage: - type: bool any_of: - type: bool must: - type: function_decorator_name_regex decorator_name_regex: "^HasPerm$" - type: function_decorator_name_regex decorator_name_regex: "^extend_schema$" - type: function_decorator_name_regex decorator_name_regex: "^staticmethod$"
仕組み:
構成の準備ができたら、次を実行します。
pip install deply
deply: paths: - /path/to/your/project exclude_files: - ".*\.venv/.*" layers: - name: models collectors: - type: bool any_of: - type: class_inherits base_class: "django.db.models.Model" - type: class_inherits base_class: "django.contrib.auth.models.AbstractUser" - name: views collectors: - type: file_regex regex: ".*/views_api.py" ruleset: views: disallow_layer_dependencies: - models enforce_function_decorator_usage: - type: bool any_of: - type: bool must: - type: function_decorator_name_regex decorator_name_regex: "^HasPerm$" - type: function_decorator_name_regex decorator_name_regex: "^extend_schema$" - type: function_decorator_name_regex decorator_name_regex: "^staticmethod$"
サービス層のすべてのクラスは Service で終わる必要があります。
deply analyze
タスク内のすべての関数は task_ で始まる必要があります。
プロのヒント: 複数の条件を bool と組み合わせて高度なロジック (must、any_of、must_not) を形成し、非常に具体的なルールを確実に作成できます。
CI パイプラインにステップを追加します:
service: enforce_class_naming: - type: class_name_regex class_name_regex: ".*Service$"
アーキテクチャ違反が見つかった場合、パイプラインは失敗する可能性があります。
Deply は、時間のかかるリファクタリングになる前にアーキテクチャ違反を発見できるように設計されています。これらのチェックを自動化することで、大規模なチームであっても、明確で階層化されたデザインを維持できます。
自由にテストして、必要に応じて構成を調整してください。質問やアイデアがある場合は、問題の提出や貢献の詳細についてリポジトリを確認してください。コーディングを楽しんでください!
以上がDeply: Python アーキテクチャをクリーンに保つの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。