Skip to content

fix: mille init adds src to package_names for Python src/ layout namespace packages#62

Merged
makinzm merged 7 commits into
mainfrom
feat/pr62-fix-init-namespace-package-names
Mar 15, 2026
Merged

fix: mille init adds src to package_names for Python src/ layout namespace packages#62
makinzm merged 7 commits into
mainfrom
feat/pr62-fix-init-namespace-package-names

Conversation

@makinzm

@makinzm makinzm commented Mar 15, 2026

Copy link
Copy Markdown
Owner

概要

mille init が Python の src/ レイアウトで package_names を誤って生成するバグを修正する。

src/domain/** のようなパスでは最終コンポーネントの domain のみが package_names に追加されていたが、実際に from src.domain... のようなインポートを使うプロジェクトでは srcpackage_names に含まれる必要があった。

変更内容

  • src/usecase/init.rs: py_pkg_names 計算ロジックに名前空間パッケージの昇格処理を追加
    • いずれかのレイヤーの external_allow に含まれており、かつレイヤーパスのコンポーネントでもある名前を package_names へ昇格する
    • 昇格された名前は既存のフィルタリング処理により external_allow から自動除去される
  • README.md: Python src/ layout (namespace packages) の動作説明を追加
  • docs/TODO.md: PR fix: mille init adds src to package_names for Python src/ layout namespace packages #62 完了項目を追加

Before / After

Before:

[resolve.python]
package_names = ["domain", "infrastructure", "usecase"]

[[layers]]
name = "src_domain"
paths = ["src/domain/**"]
external_allow = ["src", "dataclasses"]   # src が外部扱い

After:

[resolve.python]
package_names = ["domain", "infrastructure", "src", "usecase"]   # src が追加

[[layers]]
name = "src_domain"
paths = ["src/domain/**"]
external_allow = ["dataclasses"]   # src は除去された

テスト

TDD (RED → GREEN → REFACTOR) サイクルで実施。追加テストケース:

  • test_generate_toml_namespace_src_layout_adds_src_to_package_names: src/domain/** パスで external_allowsrc があるとき、srcpackage_names に昇格され external_allow から除去される
  • test_generate_toml_flat_layout_unchanged: フラットレイアウト (domain/**) では既存の動作が変わらない
  • test_generate_toml_namespace_only_path_component_promoted: external_allow のうちパスコンポーネントであるもの (src) のみ昇格し、そうでないもの (kaggle) は external_allow に残る

チェックリスト

  • テストを先に書いた(TDD)
  • lefthook が通過した
  • README.md を更新した
  • docs/TODO.md を更新した

makinzm added 7 commits March 15, 2026 13:50
…ing that src prefix is missing from package_names when using src/ layout in Python projects
…en found in external_allow because imports like from src.domain... were misclassified as External
…use of documenting src/ layout behavior and marking PR62 complete
…s because of verifying Bug1 (classify_py_import full path) and Bug2 (src/main.py skipped) are detected
…init because of src.domain.entity resolving to external and src/main.py being skipped
…because of documenting cross-layer resolution and shallow-file layer behavior
@makinzm makinzm merged commit 03fc677 into main Mar 15, 2026
8 checks passed
@makinzm makinzm deleted the feat/pr62-fix-init-namespace-package-names branch March 15, 2026 10:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant