コンテンツにスキップ

Python

設定例

[project]
name = "my-python-app"
root = "."
languages = ["python"]
[resolve.python]
src_root = "."
package_names = ["domain", "usecase", "infrastructure"]
[[layers]]
name = "domain"
paths = ["domain/**"]
dependency_mode = "opt-in"
allow = []
external_mode = "opt-out"
external_deny = []
[[layers]]
name = "usecase"
paths = ["usecase/**"]
dependency_mode = "opt-in"
allow = ["domain"]
external_mode = "opt-out"
external_deny = []
[[layers]]
name = "infrastructure"
paths = ["infrastructure/**"]
dependency_mode = "opt-out"
deny = []
external_mode = "opt-out"
external_deny = []

src/ レイアウト(namespace packages)

src/ レイアウトを使い from src.domain.entity import Foo のようにインポートする場合、mille init は自動的に package_namessrc を追加します。

[resolve.python]
src_root = "."
package_names = ["src"] # ← mille init が自動設定

インポートの分類

インポート分類
from .sibling import X(相対インポート)内部
import domain.entitypackage_names に一致)内部
from src.domain.entity import Foo内部(srcpackage_names にある場合)
import os, import sqlalchemy外部

サブモジュールインポート

external_allow = ["matplotlib"] と設定すると import matplotlibimport matplotlib.pyplot も許可されます。