Skip to content

Releases: Hum9183/deep_reloader

v0.8.0

31 Jan 12:33
ffd18d2

Choose a tag to compare

v0.8.0 Pre-release
Pre-release

deep_reloader v0.8.0

主な変更点

🔧 リファクタリング

  • リロードロジックの簡素化: 冗長な_copy_symbols_to()関数を削除し、リロード処理をシンプル化
    • importlib.reload()がimport文を自動的に再実行するため、from-importしたシンボルも最新の値が自動設定される仕組みに変更

🐛 デバッグ機能の強化

  • 例外ハンドラへのデバッグログ追加: トラブルシューティングを容易にするため、全ての例外ハンドラにデバッグログを追加
    • AST解析失敗時のログ(dependency_extractor.py
    • サブモジュールインポート失敗時のログ(from_clause.py
    • 相対インポート失敗時のログ(from_clause.py
    • 親パッケージインポート失敗時のログ(from_clause.py

技術的な詳細

変更されたファイル:

  • deep_reloader.py: リロードロジックの簡素化、_copy_symbols_to()関数を削除
  • dependency_extractor.py: 例外ハンドラにデバッグログを追加
  • from_clause.py: 全ての例外ハンドラにデバッグログを追加
  • tests/unit/test_deep_reloader.py: 不要になったテストケースを削除

破壊的変更: なし

v0.7.0

29 Jan 13:20
9e2d69b

Choose a tag to compare

v0.7.0 Pre-release
Pre-release

deep_reloader v0.7.0

🐛 バグ修正

重要な修正: importlib.reload()パターンの採用

  • 修正内容: sys.modules.pop() + import_module() パターンから importlib.reload() に変更
  • 背景: 親モジュールが複数の子モジュールに対して importlib.reload() を呼び出すケースで、sys.modules.pop() パターンでは2つ目以降の子モジュールのreload時に "module xxx not in sys.modules" エラーが発生していた
  • 影響: より安全で標準的なリロード処理に改善

テストの安定性向上

  • テスト独立性を保証する cleanup 実装を追加

🔧 アーキテクチャ改善

大規模リファクタリング: データクラスと関数型プログラミング

  • タプルからDependencyデータクラスへ: 依存関係の表現を型安全かつ明確に
  • クラスから関数へ: FromClause/ImportClauseを純粋関数に変換し、不要な抽象化を削減
  • ファイル構成の再編成:
    • module_info.py/symbol_extractor.py 削除
    • domain.py: Dependency/DependencyNodeエンティティを新設
    • dependency_extractor.py: AST解析ロジックを分離
    • deep_reloader.py: コア処理をモジュールトップレベルに配置

命名とドメインモデルの明確化

  • ModuleInfoDependencyNode: エンティティとしての役割を明確化
  • 変数名とパラメータ名の改善(module_infomodule_node など)

📝 ドキュメント

README更新(全言語対応)

  • ファイル構成を最新に更新
  • Maya対応バージョンを明記: Maya 2022-2026での動作を確認・明記
  • 空の __init__.py における子モジュール検出の制限事項を追加

🧪 テスト

新規テストの追加

  • 複数の子モジュールをreloadするケースの回帰テスト(test_parent_reloads_child.py
  • 同一モジュールからの重複インポート検出テスト(test_multiple_imports_from_same_module.py
  • DependencyExtractorのユニットテスト新設

テスト整理

  • test_architecture_demo.pyをpytest専用に整理
  • from_clause/import_clauseのテストを関数ベースに簡素化
  • ユニットテストの大幅な整理

v0.6.0

24 Jan 11:22
9b66f97

Choose a tag to compare

v0.6.0 Pre-release
Pre-release

deep_reloader v0.6.0

🐛 Bug Fixes

  • 依存検出: __init__.pyfrom . import xxx形式の依存検出バグを修正 (90cb588)
    • __init__.py内でfrom . importを使用した場合に依存関係が正しく検出されない問題を修正

✨ Enhancements

  • CI/CD: GitHub Actions ワークフローを追加 (cbb31c5)
    • Python 3.9-3.13でのテスト自動実行
    • プルリクエスト時の自動テスト

🧪 Tests

  • namespace package: __init__.pyなしのnamespace packageでの動作検証テストを追加 (b3d2954)
    • Python 3.3以降(PEP 420)のnamespace packageサポートを検証
    • create_test_modules()create_initパラメータを追加
  • 統合テスト: インポート文を統一(ファイル先頭に移動) (502dc0c)
    • 9つの統合テストファイルでfrom deep_reloader import deep_reloadを先頭に統一

📚 Documentation

  • README多言語化: 英語・日本語・中国語の3言語対応 (c529a52)

    • メインREADME: 英語版
    • docs/README.ja.md: 日本語版
    • docs/README.zh-CN.md: 中国語版(簡体字)
    • 各言語版に相互リンクを追加
  • README整備: 制限事項セクションを簡潔化・構造化 (a497f71)

    • 箇条書きから見出し構造(###)に変更し可読性を向上
    • デコレーターのクロージャ問題セクションを削除(isinstance()問題と本質的に同じため冗長)
    • 各制限事項の説明を簡潔化
  • 仕様明記: import文非対応とパッケージ構造必須を明確化 (dd665bf)

    • import xxx形式が非対応であることを仕様として明記
    • パッケージ構造が必須であることを追加
    • __init__.pyを含むディレクトリ構造を推奨

📊 Statistics

  • ファイル変更: 17ファイル
  • 追加: +709行
  • 削除: -193行
  • テスト追加: 2テスト(namespace package関連)

v0.5.0

24 Jan 09:06
cfa1a98

Choose a tag to compare

v0.5.0 Pre-release
Pre-release

deep_reloader v0.5.0

🎉 新機能

ワイルドカードインポート対応の大幅強化

  • クロスパッケージワイルドカードインポート対応: 異なるパッケージ間の from package import * を完全サポート
  • 相対インポートのワイルドカード対応: from . import * パターンを含む全ワイルドカードパターンに対応

サブモジュール検出機能

  • from package import namename がサブモジュールの場合も正しく追跡されるように改善

アーキテクチャ改善

  • FromClauseクラス導入: from 句の処理を専門化したクラスを追加
  • ImportClauseクラス導入: ImportedSymbols を置き換え、より明確なAPIを提供
  • コード削減: リファクタリングにより約220行削減

🧪 テスト強化

単体テスト追加(46テスト新規作成)

  • ImportClause: 10テスト
  • FromClause: 12テスト
  • SymbolExtractor: 12テスト
  • ModuleInfo: 4テスト
  • deep_reloader: 8テスト

テスト構造改善

  • テストピラミッド実現: 単体テスト79%(46個)、統合テスト21%(12個)の理想的な構造
  • ディレクトリ分割: tests/unit/tests/integration/ に整理
  • 冗長テスト削減: 統合テストを38個から12個に削減

⚠️ 破壊的変更

pytest専用化

  • スクリプト実行サポートを完全削除
    • python tests/test_runner.py - 使用不可
    • python tests/test_xxx.py - 使用不可
    • pytest または python -m pytest - 推奨

移行方法:

# 以前(使用不可)
python tests/test_runner.py

# 現在(推奨)
pytest
# または
python -m pytest tests/

v0.4.0

20 Jan 13:49
aa34295

Choose a tag to compare

v0.4.0 Pre-release
Pre-release

deep_reloader v0.4.0

新機能

  • from . import module 形式のインポートに対応

改善

  • 子モジュールのリロード順序を修正
  • パブリックAPIを必要最小限に限定(deep_reload, setup_loggingのみ)
  • 内部実装の整理(未使用メソッド削除)

ドキュメント

  • import文非対応を仕様として明記

v0.3.0

17 Jan 07:59
f301feb

Choose a tag to compare

v0.3.0 Pre-release
Pre-release

deep_reloader v0.3.0

新機能

  • 循環インポート対応: A→B→A のような循環参照を正しくリロード
  • 単一パッケージスコープ: 組み込み/サードパーティモジュールを自動除外

改善

  • リロードロジックの簡素化と最適化
  • テストスイート拡充(9→12テスト)
  • コード品質向上とドキュメント更新

詳細

循環参照サポートにより、より複雑なモジュール構成でも安全にリロード可能になりました。
単一パッケージスコープにより、システムモジュールへの影響を防ぎ、安定性が向上しました。

破壊的変更はなく、v0.2.0からシームレスにアップグレード可能です。

v.0.2.0

16 Oct 13:20
e9f1c7d

Choose a tag to compare

v.0.2.0 Pre-release
Pre-release

deep_reloader v0.2.0

🚨 破壊的変更 (Breaking Changes)

APIの大幅な簡素化

クラスベースからシンプルな関数ベースのAPIに変更しました。

変更前 (v0.1.1):

from deep_reloader import DeepReloader
dr = DeepReloader()
dr.reload(my_module)

変更後 (v0.2.0):

from deep_reloader import deep_reload
deep_reload(my_module)

移行ガイド

DeepReloaderクラスは削除されました
代わりにdeep_reload()関数を直接使用してください
インスタンス化が不要になり、より直感的なAPIになりました

v0.1.1

14 Oct 12:57
ce81b40

Choose a tag to compare

v0.1.1 Pre-release
Pre-release

deep_reloader v0.1.1

ドキュメント改善

  • 制限事項の明確化: 未対応と循環インポート問題を追加
  • ログ設定ガイド: 開発・デバッグ時の詳細ログ出力方法を追加
  • GitHub標準準拠: ステータス表示を絵文字形式に統一 (✅🔄📋)

制限事項・既知の問題

  • import文未対応: import module形式の依存関係は解析対象外
  • 循環インポート: A → B → A のような相互依存でエラーが発生

v0.1.0

13 Oct 14:09
5728705

Choose a tag to compare

v0.1.0 Pre-release
Pre-release

deep_reloader v0.1.0

プレリリース版について

このバージョンはプレリリース版です:

  • APIが変更される可能性があります
  • v1.0.0で安定版リリース予定です

リンク