Coverage for dead_code / parsers / base.py: 89%
44 statements
« prev ^ index » next coverage.py v7.13.3, created at 2026-02-08 15:04 -0800
« prev ^ index » next coverage.py v7.13.3, created at 2026-02-08 15:04 -0800
1"""Base parser interface for dead code detection."""
3from __future__ import annotations
5from dataclasses import dataclass
6from abc import ABC, abstractmethod
7from typing import TYPE_CHECKING
9if TYPE_CHECKING:
10 from tree_sitter import Node
13@dataclass
14class SymbolDefinition:
15 name: str
16 line: int
17 definition_type: str
18 exported: bool = False
21@dataclass
22class ImportedSymbol:
23 name: str
24 line: int
25 imported_from: str | None = None
26 alias: str | None = None
29@dataclass
30class VariableDefinition:
31 name: str
32 line: int
33 scope_type: str
34 definition_type: str
37@dataclass
38class SymbolReference:
39 name: str
40 line: int
43class DeadCodeParser(ABC):
44 def __init__(self):
45 pass
47 @abstractmethod
48 def extract_imports(self, root: Node, source: str) -> list[ImportedSymbol]:
49 pass
51 @abstractmethod
52 def extract_definitions(self, root: Node, source: str) -> list[SymbolDefinition]:
53 pass
55 @abstractmethod
56 def extract_variable_definitions(
57 self, root: Node, source: str
58 ) -> dict[tuple, list[VariableDefinition]]:
59 pass
61 @abstractmethod
62 def extract_references(self, root: Node, source: str) -> list[SymbolReference]:
63 pass
65 @abstractmethod
66 def extract_scope_references(
67 self, root: Node, source: str
68 ) -> dict[tuple, list[SymbolReference]]:
69 pass