(cls_name: str, memo=None)
| 102 | |
| 103 | # 2. Helper to get all inherited members (recursive) |
| 104 | def get_inherited_members(cls_name: str, memo=None) -> tuple: |
| 105 | if memo is None: memo = set() |
| 106 | if cls_name in memo: return [], [] # prevent cyclic loops just in case |
| 107 | memo.add(cls_name) |
| 108 | |
| 109 | cls = class_map.get(cls_name) |
| 110 | if not cls: return [], [] |
| 111 | |
| 112 | props = copy.deepcopy(cls.get('properties', [])) |
| 113 | funcs = copy.deepcopy(cls.get('functions', [])) |
| 114 | |
| 115 | parent_name = cls.get('parent') |
| 116 | if parent_name and parent_name in class_map: |
| 117 | p_props, p_funcs = get_inherited_members(parent_name, memo) |
| 118 | props.extend(p_props) |
| 119 | funcs.extend(p_funcs) |
| 120 | |
| 121 | return props, funcs |
| 122 | |
| 123 | # 3. Apply inherited members to all classes |
| 124 | resolved_count = 0 |
no test coverage detected