Files

64 lines
1.7 KiB
Python
Raw Permalink Normal View History

from __future__ import annotations
from dataclasses import asdict, dataclass, field
from typing import Any, Dict, List, Optional
@dataclass
class CodeFunctionEvidence:
node_id: str
name: str
qualified_name: str
file: str
start_line: Optional[int] = None
end_line: Optional[int] = None
signature: str = ""
summary: str = ""
logic_flow: str = ""
code_snippet: str = ""
calls: List[str] = field(default_factory=list)
called_by: List[str] = field(default_factory=list)
includes: List[str] = field(default_factory=list)
embedding_model: str = ""
embedding_dim: int = 0
embedding_available: bool = True
raw: Dict[str, Any] = field(default_factory=dict)
def to_dict(self) -> Dict[str, Any]:
return asdict(self)
@dataclass
class CodeSearchHit:
evidence: CodeFunctionEvidence
similarity: float
distance: float
rank: int
def to_dict(self) -> Dict[str, Any]:
data = self.evidence.to_dict()
data.update(
{
"similarity": self.similarity,
"distance": self.distance,
"rank": self.rank,
}
)
return data
@dataclass
class CodeGraphContext:
node_id: str
callers: List[CodeFunctionEvidence] = field(default_factory=list)
callees: List[CodeFunctionEvidence] = field(default_factory=list)
call_chains: List[str] = field(default_factory=list)
def to_dict(self) -> Dict[str, Any]:
return {
"node_id": self.node_id,
"callers": [item.to_dict() for item in self.callers],
"callees": [item.to_dict() for item in self.callees],
"call_chains": self.call_chains,
}