Skip to content

Commit f70f5eb

Browse files
committed
Merge branch 'refac/skip_parser_build' into dev/v0.0.9
2 parents ced3bf6 + 3876ce2 commit f70f5eb

File tree

6 files changed

+33
-16
lines changed

6 files changed

+33
-16
lines changed

.gitignore

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,6 @@ src/codetext.egg-info/*
1111
*.pyc
1212
*.so
1313
*.whl
14-
14+
.idea
15+
.vscode
16+
*.iml

.idea/.gitignore

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pyproject.toml

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
44

55
[project]
66
name = "codetext"
7-
version = "0.0.8"
7+
version = "0.0.9"
88
authors = [
99
{ name="Dung Manh Nguyen", email="[email protected]" },
1010
]
@@ -17,11 +17,12 @@ classifiers = [
1717
"Operating System :: OS Independent",
1818
]
1919
dependencies = [
20-
"tree-sitter>=0.20",
20+
"tree-sitter==0.20.4",
2121
"Levenshtein>=0.20",
2222
"langdetect>=1.0.0",
2323
"bs4>=0.0.1",
24-
"tabulate>=0.9.0"
24+
"tabulate>=0.9.0",
25+
"tree_sitter_languages>=1.10.0"
2526
]
2627

2728
[project.urls]

src/codetext/utils/utils.py

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -92,15 +92,21 @@ def parse_code(raw_code: str, language: str='Auto', tree_sitter_path: str=None)
9292
calling_script_path = Path(inspect.getframeinfo(sys._getframe(1)).filename)
9393
load_path = str(calling_script_path.parent)
9494

95-
ts_lang_path = os.path.join(load_path, 'tree-sitter', f'{language}.so')
96-
if not os.path.exists(ts_lang_path):
97-
logger.warning(f"Not found `{language}.so` in `{load_path}/tree-sitter/`, attemp to build language")
98-
build_language(language, load_path)
99-
95+
# Get parser from languages
10096
parser = Parser()
101-
language = Language(load_path + f"/tree-sitter/{language}.so", language)
102-
parser.set_language(language)
103-
97+
try:
98+
from tree_sitter_languages import get_language, get_parser
99+
parser = get_parser(get_language(language))
100+
except ImportError:
101+
# Work-around when pre-built binaries wheels for tree-sitter-languages are not available
102+
logger.warning(f"Troubled importing 'tree-sitter-languages', attemp to look for pre-built binaries in the workspace")
103+
ts_lang_path = os.path.join(load_path, 'tree-sitter', f'{language}.so')
104+
if not os.path.exists(ts_lang_path):
105+
logger.warning(f"Not found `{language}.so` in `{load_path}/tree-sitter/`, attemp to build language")
106+
build_language(language, load_path)
107+
language = Language(load_path + f"/tree-sitter/{language}.so", language)
108+
parser.set_language(language)
109+
104110
if isinstance(raw_code, str):
105111
raw_code = bytes(raw_code, 'utf8')
106112
elif isinstance(raw_code, bytes):

tests/setup.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
11
from ..src.codetext.utils import build_language
2-
2+
from tree_sitter_languages import get_language, get_parser
33

44
if __name__ == '__main__':
55
lang_list = ['python', 'cpp', 'java', 'c-sharp', 'ruby', 'rust', 'javascript', 'php', 'go']
66

77
for lang in lang_list:
8-
build_language(lang)
8+
# build_language(lang)
9+
try:
10+
get_parser(get_language(lang))
11+
except:
12+
build_language(lang)

tests/test_utils/test_utils.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,6 @@ def test_parse_code(self):
1414
def sum_2_num(a, b):
1515
return a + b
1616
"""
17-
18-
build_language(language='python')
1917
parse_code(sample, 'python')
2018

2119

0 commit comments

Comments
 (0)