-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdomain.py
More file actions
35 lines (24 loc) · 959 Bytes
/
domain.py
File metadata and controls
35 lines (24 loc) · 959 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
"""ドメイン層: 依存関係モデル
Dependency データクラスと DependencyNode Entity を含む。
"""
from __future__ import annotations
from dataclasses import dataclass
from types import ModuleType
from typing import List, Optional
@dataclass(frozen=True)
class Dependency:
"""依存関係を表すデータ構造
Attributes:
module: 依存先のモジュール
symbols: インポートするシンボルのリスト(Noneの場合はモジュール全体への依存)
"""
module: ModuleType
symbols: Optional[List[str]]
class DependencyNode:
"""依存関係ツリーのノード(Entity)
モジュールとその子モジュール(from-import)の依存関係を保持します。
"""
def __init__(self, module: ModuleType) -> None:
self.module: ModuleType = module
self.children: List[DependencyNode] = []
self.symbols: Optional[List[str]] = None