1515import requests
1616from git import Repo
1717
18+ try :
19+ from tree_sitter_languages import get_language , get_parser
20+ except ImportError :
21+ get_language , get_parser = None , None
22+
1823
1924# Automatic loading of Tree-Sitter parsers --------------------------------
2025
@@ -44,6 +49,12 @@ def load_language(lang):
4449
4550 """
4651
52+ if get_language is not None :
53+ try :
54+ return get_language (lang )
55+ except Exception as e :
56+ logger .exception ("No pre-compiled language for %s exists. Start compiling." % lang )
57+
4758 cache_path = _path_to_local ()
4859
4960 compiled_lang_path = os .path .join (cache_path , "%s-lang.so" % lang )
@@ -53,11 +64,11 @@ def load_language(lang):
5364 return Language (compiled_lang_path , _lang_to_fnname (lang ))
5465
5566 if os .path .exists (source_lang_path ) and os .path .isdir (source_lang_path ):
56- logger .warn ("Compiling language for %s" % lang )
67+ logger .warning ("Compiling language for %s" % lang )
5768 _compile_lang (source_lang_path , compiled_lang_path )
5869 return load_language (lang )
5970
60- logger .warn ("Autoloading AST parser for %s: Start download from Github." % lang )
71+ logger .warning ("Autoloading AST parser for %s: Start download from Github." % lang )
6172 _clone_parse_def_from_github (lang , source_lang_path )
6273 return load_language (lang )
6374
@@ -86,8 +97,12 @@ def __init__(self, lang):
8697
8798 self .lang_id = lang
8899 self .lang = load_language (lang )
89- self .parser = Parser ()
90- self .parser .set_language (self .lang )
100+
101+ if get_parser is not None :
102+ self .parser = get_parser (self .lang_id )
103+ else :
104+ self .parser = Parser ()
105+ self .parser .set_language (self .lang )
91106
92107 def parse_bytes (self , data ):
93108 """
@@ -219,7 +234,7 @@ def _clone_parse_def_from_github(lang, cache_path):
219234 if not _exists_url (REPO_URL ):
220235 raise ValueError ("There is no parsing def for language %s available." % lang )
221236
222- logger .warn ("Start cloning the parser definition from Github." )
237+ logger .warning ("Start cloning the parser definition from Github." )
223238 try :
224239 Repo .clone_from (REPO_URL , cache_path )
225240 except Exception :
0 commit comments