Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions src/codegraphcontext/tools/graph_builder.py
Original file line number Diff line number Diff line change
Expand Up @@ -528,8 +528,9 @@ def _create_all_function_calls(self, all_file_data: list[Dict], imports_map: dic
func_names = {f['name'] for f in file_data.get('functions', [])}
class_names = {c['name'] for c in file_data.get('classes', [])}
local_names = func_names | class_names
local_imports = {imp.get('alias') or imp['name'].split('.')[-1]: imp['name']
for imp in file_data.get('imports', [])}
local_imports = {imp.get('alias') or (imp.get('name') or '').split('.')[-1]: imp.get('name')
for imp in file_data.get('imports', [])
if imp.get('name')}

for call in file_data.get('function_calls', []):
resolved = self._resolve_function_call(
Expand Down
8 changes: 4 additions & 4 deletions src/codegraphcontext/tools/indexing/resolution/calls.py
Original file line number Diff line number Diff line change
Expand Up @@ -1751,9 +1751,9 @@ def type_keys_for_maps(

def file_local_imports(fd: Dict[str, Any]) -> Dict[str, str]:
return {
imp.get("alias") or imp["name"].split(".")[-1]: imp["name"]
imp.get("alias") or (imp.get("name") or "").split(".")[-1]: imp.get("name")
for imp in fd.get("imports", [])
if not imp["name"].endswith(".*")
if imp.get("name") and not imp["name"].endswith(".*")
}

def file_package(fd: Dict[str, Any]) -> Optional[str]:
Expand Down Expand Up @@ -2142,9 +2142,9 @@ def functions_named(name: str) -> List[Tuple[str, Dict[str, Any]]]:
if c.get("trait_method_map")
}
local_imports = {
imp.get("alias") or imp["name"].split(".")[-1]: imp["name"]
imp.get("alias") or (imp.get("name") or "").split(".")[-1]: imp.get("name")
for imp in file_data.get("imports", [])
if not imp["name"].endswith(".*")
if imp.get("name") and not imp["name"].endswith(".*")
}
wildcard_imports = [
imp["name"][:-2]
Expand Down
10 changes: 9 additions & 1 deletion src/codegraphcontext/tools/indexing/resolution/inheritance.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,9 @@ def resolve_inheritance_link(
if base_class_str == "object":
return None

if not base_class_str:
return None

# Unwrap JS/TS mixins like Swimmable(Flyable(Person)) -> Person
m = re.search(r'([A-Za-z0-9_.]+)(?:\s*\))*$', base_class_str)
if m:
Expand Down Expand Up @@ -89,8 +92,9 @@ def build_inheritance_and_csharp_files(
local_class_names.add(item["name"])

local_imports = {
imp.get("alias") or imp["name"].split(".")[-1]: imp["name"]
imp.get("alias") or (imp.get("name") or "").split(".")[-1]: imp.get("name")
for imp in file_data.get("imports", [])
if imp.get("name")
}

for key in ["classes", "structs", "traits", "interfaces", "mixins", "enums", "extensions", "variables"]:
Expand Down Expand Up @@ -320,6 +324,8 @@ def _resolve_decorator_path(
return caller_path
if decorator_name in local_imports:
imported = local_imports[decorator_name]
if not imported:
return caller_path
lookup = imported.split(".")[-1]
paths = imports_map.get(lookup, imports_map.get(imported, []))
if len(paths) == 1:
Expand Down Expand Up @@ -493,6 +499,8 @@ def build_embeds_links(
if not struct_name:
continue
for base in struct.get("bases") or []:
if not base:
continue
base_name = base.split(".")[-1]
if base_name not in struct_names:
continue
Expand Down
2 changes: 2 additions & 0 deletions src/codegraphcontext/tools/languages/python.py
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,8 @@ def __init__(self, generic_parser_wrapper):
self.parser = generic_parser_wrapper.parser

def _get_node_text(self, node) -> str:
if node is None or node.text is None:
return ""
return node.text.decode('utf-8')

def _get_parent_context(self, node, types=('function_definition', 'class_definition')):
Expand Down
Loading