28
28
from cldk .analysis .commons .treesitter .models import Captures
29
29
from cldk .analysis .commons .treesitter .utils .treesitter_utils import TreeSitterUtils
30
30
31
+ LANGUAGE : Language = Language (tspython .language ())
32
+ PARSER : Parser = Parser (LANGUAGE )
33
+
31
34
32
35
class TreesitterPython :
33
36
"""
34
37
Tree sitter for Python use cases.
35
38
"""
36
39
37
40
def __init__ (self ) -> None :
38
- self .language : Language = Language (tspython .language ())
39
- self .parser : Parser = Parser (self .language )
40
41
self .utils : TreeSitterUtils = TreeSitterUtils ()
41
42
42
43
def is_parsable (self , code : str ) -> bool :
@@ -62,7 +63,7 @@ def syntax_error(node):
62
63
63
64
return False
64
65
65
- tree = self . parser .parse (bytes (code , "utf-8" ))
66
+ tree = PARSER .parse (bytes (code , "utf-8" ))
66
67
if tree is not None :
67
68
return not syntax_error (tree .root_node )
68
69
return False
@@ -76,7 +77,7 @@ def get_raw_ast(self, code: str) -> Tree:
76
77
Returns:
77
78
Tree: the raw AST
78
79
"""
79
- return self . parser .parse (bytes (code , "utf-8" ))
80
+ return PARSER .parse (bytes (code , "utf-8" ))
80
81
81
82
def get_all_methods (self , module : str ) -> List [PyMethod ]:
82
83
"""
@@ -163,8 +164,8 @@ def get_all_imports(self, module: str) -> List[str]:
163
164
List[str]: List of imports
164
165
"""
165
166
import_list = []
166
- captures_from_import : Captures = self .utils .frame_query_and_capture_output (self . parser , self . language , "(((import_from_statement) @imports))" , module )
167
- captures_import : Captures = self .utils .frame_query_and_capture_output (self . parser , self . language , "(((import_statement) @imports))" , module )
167
+ captures_from_import : Captures = self .utils .frame_query_and_capture_output (PARSER , LANGUAGE , "(((import_from_statement) @imports))" , module )
168
+ captures_import : Captures = self .utils .frame_query_and_capture_output (PARSER , LANGUAGE , "(((import_statement) @imports))" , module )
168
169
for capture in captures_import :
169
170
import_list .append (capture .node .text .decode ())
170
171
for capture in captures_from_import :
@@ -188,8 +189,8 @@ def get_all_imports_details(self, module: str) -> List[PyImport]:
188
189
List[PyImport]: List of imports
189
190
"""
190
191
import_list = []
191
- captures_from_import : Captures = self .utils .frame_query_and_capture_output (self . parser , self . language , "(((import_from_statement) @imports))" , module )
192
- captures_import : Captures = self .utils .frame_query_and_capture_output (self . parser , self . language , "(((import_statement) @imports))" , module )
192
+ captures_from_import : Captures = self .utils .frame_query_and_capture_output (PARSER , LANGUAGE , "(((import_from_statement) @imports))" , module )
193
+ captures_import : Captures = self .utils .frame_query_and_capture_output (PARSER , LANGUAGE , "(((import_statement) @imports))" , module )
193
194
for capture in captures_import :
194
195
imports = []
195
196
for import_name in capture .node .children :
@@ -223,7 +224,7 @@ def get_all_classes(self, module: str) -> List[PyClass]:
223
224
List[PyClass]: returns details of all classes in it
224
225
"""
225
226
classes : List [PyClass ] = []
226
- all_class_details : Captures = self .utils .frame_query_and_capture_output (self . parser , self . language , "(((class_definition) @class_name))" , module )
227
+ all_class_details : Captures = self .utils .frame_query_and_capture_output (PARSER , LANGUAGE , "(((class_definition) @class_name))" , module )
227
228
for class_name in all_class_details :
228
229
code_body = class_name .node .text .decode ()
229
230
class_full_signature = "" # TODO: what to fill here
@@ -331,7 +332,7 @@ def __get_function_details(self, node: Node, klass_name: str = "") -> PyMethod:
331
332
is_constructor = False
332
333
is_static = False
333
334
call_sites : List [PyCallSite ] = []
334
- call_nodes : Captures = self .utils .frame_query_and_capture_output (self . parser , self . language , "(((call) @call_name))" , node .text .decode ())
335
+ call_nodes : Captures = self .utils .frame_query_and_capture_output (PARSER, LANGUAGE , "(((call) @call_name))" , node .text .decode ())
335
336
for call_node in call_nodes :
336
337
call_sites .append (self .__get_call_site_details (call_node .node ))
337
338
for function_detail in node .children :
@@ -390,9 +391,9 @@ def __get_function_details(self, node: Node, klass_name: str = "") -> PyMethod:
390
391
return function
391
392
392
393
def __get_class_nodes (self , module : str ) -> Captures :
393
- captures : Captures = self .utils .frame_query_and_capture_output (self . parser , self . language , "(((class_definition) @class_name))" , module )
394
+ captures : Captures = self .utils .frame_query_and_capture_output (PARSER , LANGUAGE , "(((class_definition) @class_name))" , module )
394
395
return captures
395
396
396
397
def __get_method_nodes (self , module : str ) -> Captures :
397
- captures : Captures = self .utils .frame_query_and_capture_output (self . parser , self . language , "(((function_definition) @function_name))" , module )
398
+ captures : Captures = self .utils .frame_query_and_capture_output (PARSER , LANGUAGE , "(((function_definition) @function_name))" , module )
398
399
return captures
0 commit comments