| 132 | return self._nodes[fullname] |
| 133 | |
| 134 | def record(self, fullname: str) -> None: |
| 135 | if fullname in self._seen: |
| 136 | return |
| 137 | self._seen.add(fullname) |
| 138 | node = self._get_or_create(fullname) |
| 139 | stack = self._stack() |
| 140 | if stack: |
| 141 | parent = self._get_or_create(stack[-1]) |
| 142 | if all(c.name != fullname for c in parent.children): |
| 143 | parent.children.append(node) |
| 144 | else: |
| 145 | if all(r.name != fullname for r in self._roots): |
| 146 | self._roots.append(node) |
| 147 | |
| 148 | def push(self, fullname: str) -> None: |
| 149 | self._stack().append(fullname) |