diff --git a/MULTI_LANGUAGE_ARCHITECTURE.md b/MULTI_LANGUAGE_ARCHITECTURE.md index e3cbaf4bb..5983afade 100644 --- a/MULTI_LANGUAGE_ARCHITECTURE.md +++ b/MULTI_LANGUAGE_ARCHITECTURE.md @@ -386,7 +386,7 @@ class JavaScriptTransformer: from pathlib import Path from codeflash.languages.base import LanguageSupport, FunctionInfo, CodeContext -from codeflash.languages.treesitter_utils import TreeSitterAnalyzer +from codeflash.languages.javascript.treesitter import TreeSitterAnalyzer from codeflash.languages.javascript.transformer import JavaScriptTransformer class JavaScriptSupport(LanguageSupport): @@ -523,7 +523,7 @@ class JavaScriptSupport(LanguageSupport): # codeflash/languages/javascript/test_discovery.py from pathlib import Path -from codeflash.languages.treesitter_utils import TreeSitterAnalyzer +from codeflash.languages.javascript.treesitter import TreeSitterAnalyzer class JestTestDiscovery: """Static analysis-based test discovery for Jest.""" diff --git a/codeflash/code_utils/code_extractor.py b/codeflash/code_utils/code_extractor.py index e2b9a9d52..c4434c3ae 100644 --- a/codeflash/code_utils/code_extractor.py +++ b/codeflash/code_utils/code_extractor.py @@ -1772,7 +1772,7 @@ def _extract_calling_function_js(source_code: str, function_name: str, ref_line: """ try: - from codeflash.languages.treesitter_utils import TreeSitterAnalyzer, TreeSitterLanguage + from codeflash.languages.javascript.treesitter import TreeSitterAnalyzer, TreeSitterLanguage # Try TypeScript first, fall back to JavaScript for lang in [TreeSitterLanguage.TYPESCRIPT, TreeSitterLanguage.TSX, TreeSitterLanguage.JAVASCRIPT]: diff --git a/codeflash/code_utils/code_replacer.py b/codeflash/code_utils/code_replacer.py index e543d184d..d4478207c 100644 --- a/codeflash/code_utils/code_replacer.py +++ b/codeflash/code_utils/code_replacer.py @@ -26,7 +26,7 @@ if TYPE_CHECKING: from codeflash.discovery.functions_to_optimize import FunctionToOptimize from codeflash.languages.base import Language, LanguageSupport - from codeflash.languages.treesitter_utils import TreeSitterAnalyzer + from codeflash.languages.javascript.treesitter import TreeSitterAnalyzer from codeflash.models.models import CodeOptimizationContext, CodeStringsMarkdown, OptimizedCandidate, ValidCode ASTNodeT = TypeVar("ASTNodeT", bound=ast.AST) @@ -640,7 +640,7 @@ def _add_global_declarations_for_language( return original_source try: - from codeflash.languages.treesitter_utils import get_analyzer_for_file + from codeflash.languages.javascript.treesitter import get_analyzer_for_file analyzer = get_analyzer_for_file(module_abspath) diff --git a/codeflash/code_utils/normalizers/javascript.py b/codeflash/code_utils/normalizers/javascript.py index e3a4faae0..fa61b19a7 100644 --- a/codeflash/code_utils/normalizers/javascript.py +++ b/codeflash/code_utils/normalizers/javascript.py @@ -233,7 +233,7 @@ class JavaScriptNormalizer(CodeNormalizer): """ try: - from codeflash.languages.treesitter_utils import TreeSitterAnalyzer, TreeSitterLanguage + from codeflash.languages.javascript.treesitter import TreeSitterAnalyzer, TreeSitterLanguage lang_map = {"javascript": TreeSitterLanguage.JAVASCRIPT, "typescript": TreeSitterLanguage.TYPESCRIPT} lang = lang_map.get(self._get_tree_sitter_language(), TreeSitterLanguage.JAVASCRIPT) diff --git a/codeflash/discovery/functions_to_optimize.py b/codeflash/discovery/functions_to_optimize.py index 740528c0c..29bea8761 100644 --- a/codeflash/discovery/functions_to_optimize.py +++ b/codeflash/discovery/functions_to_optimize.py @@ -201,7 +201,7 @@ def _is_js_ts_function_exported(file_path: Path, function_name: str) -> tuple[bo Tuple of (is_exported, export_name). export_name may be 'default' for default exports. """ - from codeflash.languages.treesitter_utils import get_analyzer_for_file + from codeflash.languages.javascript.treesitter import get_analyzer_for_file try: source = file_path.read_text(encoding="utf-8") diff --git a/codeflash/languages/javascript/find_references.py b/codeflash/languages/javascript/find_references.py index 16b93cfca..a9921e2e5 100644 --- a/codeflash/languages/javascript/find_references.py +++ b/codeflash/languages/javascript/find_references.py @@ -23,7 +23,7 @@ if TYPE_CHECKING: from tree_sitter import Node from codeflash.discovery.functions_to_optimize import FunctionToOptimize - from codeflash.languages.treesitter_utils import ImportInfo, TreeSitterAnalyzer + from codeflash.languages.javascript.treesitter import ImportInfo, TreeSitterAnalyzer logger = logging.getLogger(__name__) @@ -112,7 +112,7 @@ class ReferenceFinder: List of Reference objects describing each call site. """ - from codeflash.languages.treesitter_utils import get_analyzer_for_file + from codeflash.languages.javascript.treesitter import get_analyzer_for_file function_name = function_to_optimize.function_name source_file = function_to_optimize.file_path @@ -719,7 +719,7 @@ class ReferenceFinder: continue # Create a fake ImportInfo to resolve the re-export source - from codeflash.languages.treesitter_utils import ImportInfo + from codeflash.languages.javascript.treesitter import ImportInfo fake_import = ImportInfo( module_path=exp.reexport_source, diff --git a/codeflash/languages/javascript/import_resolver.py b/codeflash/languages/javascript/import_resolver.py index 45ae530d5..885c709e3 100644 --- a/codeflash/languages/javascript/import_resolver.py +++ b/codeflash/languages/javascript/import_resolver.py @@ -14,7 +14,7 @@ from typing import TYPE_CHECKING if TYPE_CHECKING: from codeflash.discovery.functions_to_optimize import FunctionToOptimize from codeflash.languages.base import HelperFunction - from codeflash.languages.treesitter_utils import ImportInfo, TreeSitterAnalyzer + from codeflash.languages.javascript.treesitter import ImportInfo, TreeSitterAnalyzer logger = logging.getLogger(__name__) @@ -486,7 +486,7 @@ class MultiFileHelperFinder: """ from codeflash.languages.base import HelperFunction - from codeflash.languages.treesitter_utils import get_analyzer_for_file + from codeflash.languages.javascript.treesitter import get_analyzer_for_file try: source = file_path.read_text(encoding="utf-8") @@ -559,7 +559,7 @@ class MultiFileHelperFinder: """ from codeflash.discovery.functions_to_optimize import FunctionToOptimize from codeflash.languages.registry import get_language_support - from codeflash.languages.treesitter_utils import get_analyzer_for_file + from codeflash.languages.javascript.treesitter import get_analyzer_for_file if context.current_depth >= context.max_depth: return {} diff --git a/codeflash/languages/javascript/instrument.py b/codeflash/languages/javascript/instrument.py index 028209326..938c160aa 100644 --- a/codeflash/languages/javascript/instrument.py +++ b/codeflash/languages/javascript/instrument.py @@ -792,7 +792,7 @@ def validate_and_fix_import_style(test_code: str, source_file_path: Path, functi Fixed test code with correct import style. """ - from codeflash.languages.treesitter_utils import get_analyzer_for_file + from codeflash.languages.javascript.treesitter import get_analyzer_for_file # Read source file to determine export style try: diff --git a/codeflash/languages/javascript/line_profiler.py b/codeflash/languages/javascript/line_profiler.py index 57f046d4a..81b38983c 100644 --- a/codeflash/languages/javascript/line_profiler.py +++ b/codeflash/languages/javascript/line_profiler.py @@ -11,7 +11,7 @@ import json import logging from typing import TYPE_CHECKING -from codeflash.languages.treesitter_utils import get_analyzer_for_file +from codeflash.languages.javascript.treesitter import get_analyzer_for_file if TYPE_CHECKING: from pathlib import Path diff --git a/codeflash/languages/javascript/support.py b/codeflash/languages/javascript/support.py index 0a12f48a7..16dcac14f 100644 --- a/codeflash/languages/javascript/support.py +++ b/codeflash/languages/javascript/support.py @@ -15,14 +15,14 @@ from typing import TYPE_CHECKING, Any from codeflash.discovery.functions_to_optimize import FunctionToOptimize from codeflash.languages.base import CodeContext, FunctionFilterCriteria, HelperFunction, Language, TestInfo, TestResult from codeflash.languages.registry import register_language -from codeflash.languages.treesitter_utils import TreeSitterAnalyzer, TreeSitterLanguage, get_analyzer_for_file +from codeflash.languages.javascript.treesitter import TreeSitterAnalyzer, TreeSitterLanguage, get_analyzer_for_file from codeflash.models.models import FunctionParent if TYPE_CHECKING: from collections.abc import Sequence from codeflash.languages.base import ReferenceInfo - from codeflash.languages.treesitter_utils import TypeDefinition + from codeflash.languages.javascript.treesitter import TypeDefinition logger = logging.getLogger(__name__) diff --git a/codeflash/languages/treesitter_utils.py b/codeflash/languages/javascript/treesitter.py similarity index 100% rename from codeflash/languages/treesitter_utils.py rename to codeflash/languages/javascript/treesitter.py diff --git a/tests/test_languages/test_import_resolver.py b/tests/test_languages/test_import_resolver.py index 0f50a8833..5b27179c5 100644 --- a/tests/test_languages/test_import_resolver.py +++ b/tests/test_languages/test_import_resolver.py @@ -8,7 +8,7 @@ to actual file paths, enabling multi-file context extraction. import pytest from codeflash.languages.javascript.import_resolver import HelperSearchContext, ImportResolver, MultiFileHelperFinder -from codeflash.languages.treesitter_utils import ImportInfo +from codeflash.languages.javascript.treesitter import ImportInfo class TestImportResolver: @@ -286,7 +286,7 @@ class TestExportInfo: @pytest.fixture def js_analyzer(self): """Create a JavaScript analyzer.""" - from codeflash.languages.treesitter_utils import TreeSitterAnalyzer, TreeSitterLanguage + from codeflash.languages.javascript.treesitter import TreeSitterAnalyzer, TreeSitterLanguage return TreeSitterAnalyzer(TreeSitterLanguage.JAVASCRIPT) @@ -388,7 +388,7 @@ class TestCommonJSRequire: @pytest.fixture def js_analyzer(self): """Create a JavaScript analyzer.""" - from codeflash.languages.treesitter_utils import TreeSitterAnalyzer, TreeSitterLanguage + from codeflash.languages.javascript.treesitter import TreeSitterAnalyzer, TreeSitterLanguage return TreeSitterAnalyzer(TreeSitterLanguage.JAVASCRIPT) @@ -470,14 +470,14 @@ class TestCommonJSExports: @pytest.fixture def js_analyzer(self): """Create a JavaScript analyzer.""" - from codeflash.languages.treesitter_utils import TreeSitterAnalyzer, TreeSitterLanguage + from codeflash.languages.javascript.treesitter import TreeSitterAnalyzer, TreeSitterLanguage return TreeSitterAnalyzer(TreeSitterLanguage.JAVASCRIPT) @pytest.fixture def ts_analyzer(self): """Create a TypeScript analyzer.""" - from codeflash.languages.treesitter_utils import TreeSitterAnalyzer, TreeSitterLanguage + from codeflash.languages.javascript.treesitter import TreeSitterAnalyzer, TreeSitterLanguage return TreeSitterAnalyzer(TreeSitterLanguage.TYPESCRIPT) diff --git a/tests/test_languages/test_javascript_support.py b/tests/test_languages/test_javascript_support.py index fc7343e48..7a6868a66 100644 --- a/tests/test_languages/test_javascript_support.py +++ b/tests/test_languages/test_javascript_support.py @@ -654,7 +654,7 @@ describe('Math functions', () => { file_path = Path(f.name) source = file_path.read_text() - from codeflash.languages.treesitter_utils import get_analyzer_for_file + from codeflash.languages.javascript.treesitter import get_analyzer_for_file analyzer = get_analyzer_for_file(file_path) test_names = js_support._find_jest_tests(source, analyzer) diff --git a/tests/test_languages/test_javascript_test_discovery.py b/tests/test_languages/test_javascript_test_discovery.py index 9166b589e..473bd330e 100644 --- a/tests/test_languages/test_javascript_test_discovery.py +++ b/tests/test_languages/test_javascript_test_discovery.py @@ -627,7 +627,7 @@ it('third test', () => {}); file_path = Path(f.name) source = file_path.read_text() - from codeflash.languages.treesitter_utils import get_analyzer_for_file + from codeflash.languages.javascript.treesitter import get_analyzer_for_file analyzer = get_analyzer_for_file(file_path) test_names = js_support._find_jest_tests(source, analyzer) @@ -652,7 +652,7 @@ describe('Suite B', () => { file_path = Path(f.name) source = file_path.read_text() - from codeflash.languages.treesitter_utils import get_analyzer_for_file + from codeflash.languages.javascript.treesitter import get_analyzer_for_file analyzer = get_analyzer_for_file(file_path) test_names = js_support._find_jest_tests(source, analyzer) @@ -676,7 +676,7 @@ describe('Outer', () => { file_path = Path(f.name) source = file_path.read_text() - from codeflash.languages.treesitter_utils import get_analyzer_for_file + from codeflash.languages.javascript.treesitter import get_analyzer_for_file analyzer = get_analyzer_for_file(file_path) test_names = js_support._find_jest_tests(source, analyzer) @@ -700,7 +700,7 @@ describe.skip('skipped describe', () => { file_path = Path(f.name) source = file_path.read_text() - from codeflash.languages.treesitter_utils import get_analyzer_for_file + from codeflash.languages.javascript.treesitter import get_analyzer_for_file analyzer = get_analyzer_for_file(file_path) test_names = js_support._find_jest_tests(source, analyzer) @@ -721,7 +721,7 @@ describe.only('only describe', () => { file_path = Path(f.name) source = file_path.read_text() - from codeflash.languages.treesitter_utils import get_analyzer_for_file + from codeflash.languages.javascript.treesitter import get_analyzer_for_file analyzer = get_analyzer_for_file(file_path) test_names = js_support._find_jest_tests(source, analyzer) @@ -739,7 +739,7 @@ describe('describe single', () => {}); file_path = Path(f.name) source = file_path.read_text() - from codeflash.languages.treesitter_utils import get_analyzer_for_file + from codeflash.languages.javascript.treesitter import get_analyzer_for_file analyzer = get_analyzer_for_file(file_path) test_names = js_support._find_jest_tests(source, analyzer) @@ -758,7 +758,7 @@ describe("describe double", () => {}); file_path = Path(f.name) source = file_path.read_text() - from codeflash.languages.treesitter_utils import get_analyzer_for_file + from codeflash.languages.javascript.treesitter import get_analyzer_for_file analyzer = get_analyzer_for_file(file_path) test_names = js_support._find_jest_tests(source, analyzer) @@ -774,7 +774,7 @@ describe("describe double", () => {}); file_path = Path(f.name) source = file_path.read_text() - from codeflash.languages.treesitter_utils import get_analyzer_for_file + from codeflash.languages.javascript.treesitter import get_analyzer_for_file analyzer = get_analyzer_for_file(file_path) test_names = js_support._find_jest_tests(source, analyzer) @@ -1020,7 +1020,7 @@ describe('日本語テスト', () => { file_path = Path(f.name) source = file_path.read_text(encoding="utf-8") - from codeflash.languages.treesitter_utils import get_analyzer_for_file + from codeflash.languages.javascript.treesitter import get_analyzer_for_file analyzer = get_analyzer_for_file(file_path) test_names = js_support._find_jest_tests(source, analyzer) @@ -1048,7 +1048,7 @@ test.each([ file_path = Path(f.name) source = file_path.read_text() - from codeflash.languages.treesitter_utils import get_analyzer_for_file + from codeflash.languages.javascript.treesitter import get_analyzer_for_file analyzer = get_analyzer_for_file(file_path) test_names = js_support._find_jest_tests(source, analyzer) @@ -1074,7 +1074,7 @@ describe.each([ file_path = Path(f.name) source = file_path.read_text() - from codeflash.languages.treesitter_utils import get_analyzer_for_file + from codeflash.languages.javascript.treesitter import get_analyzer_for_file analyzer = get_analyzer_for_file(file_path) test_names = js_support._find_jest_tests(source, analyzer) @@ -1099,7 +1099,7 @@ describe('Math operations', () => { file_path = Path(f.name) source = file_path.read_text() - from codeflash.languages.treesitter_utils import get_analyzer_for_file + from codeflash.languages.javascript.treesitter import get_analyzer_for_file analyzer = get_analyzer_for_file(file_path) test_names = js_support._find_jest_tests(source, analyzer) @@ -1457,7 +1457,7 @@ testCases.forEach(name => { file_path = Path(f.name) source = file_path.read_text() - from codeflash.languages.treesitter_utils import get_analyzer_for_file + from codeflash.languages.javascript.treesitter import get_analyzer_for_file analyzer = get_analyzer_for_file(file_path) test_names = js_support._find_jest_tests(source, analyzer) @@ -1485,7 +1485,7 @@ describe('conditional tests', () => { file_path = Path(f.name) source = file_path.read_text() - from codeflash.languages.treesitter_utils import get_analyzer_for_file + from codeflash.languages.javascript.treesitter import get_analyzer_for_file analyzer = get_analyzer_for_file(file_path) test_names = js_support._find_jest_tests(source, analyzer) @@ -1509,7 +1509,7 @@ test('slow test', () => { file_path = Path(f.name) source = file_path.read_text() - from codeflash.languages.treesitter_utils import get_analyzer_for_file + from codeflash.languages.javascript.treesitter import get_analyzer_for_file analyzer = get_analyzer_for_file(file_path) test_names = js_support._find_jest_tests(source, analyzer) @@ -1532,7 +1532,7 @@ test.todo('also needs implementation'); file_path = Path(f.name) source = file_path.read_text() - from codeflash.languages.treesitter_utils import get_analyzer_for_file + from codeflash.languages.javascript.treesitter import get_analyzer_for_file analyzer = get_analyzer_for_file(file_path) test_names = js_support._find_jest_tests(source, analyzer) @@ -1555,7 +1555,7 @@ test.concurrent('concurrent test 2', async () => { file_path = Path(f.name) source = file_path.read_text() - from codeflash.languages.treesitter_utils import get_analyzer_for_file + from codeflash.languages.javascript.treesitter import get_analyzer_for_file analyzer = get_analyzer_for_file(file_path) test_names = js_support._find_jest_tests(source, analyzer) @@ -1654,7 +1654,7 @@ describe('Array', function() { file_path = Path(f.name) source = file_path.read_text() - from codeflash.languages.treesitter_utils import get_analyzer_for_file + from codeflash.languages.javascript.treesitter import get_analyzer_for_file analyzer = get_analyzer_for_file(file_path) test_names = js_support._find_jest_tests(source, analyzer) @@ -1685,7 +1685,7 @@ describe('User', () => { file_path = Path(f.name) source = file_path.read_text() - from codeflash.languages.treesitter_utils import get_analyzer_for_file + from codeflash.languages.javascript.treesitter import get_analyzer_for_file analyzer = get_analyzer_for_file(file_path) test_names = js_support._find_jest_tests(source, analyzer) diff --git a/tests/test_languages/test_treesitter_utils.py b/tests/test_languages/test_treesitter_utils.py index 72c56a5b7..15dd1219b 100644 --- a/tests/test_languages/test_treesitter_utils.py +++ b/tests/test_languages/test_treesitter_utils.py @@ -8,7 +8,7 @@ from pathlib import Path import pytest -from codeflash.languages.treesitter_utils import TreeSitterAnalyzer, TreeSitterLanguage, get_analyzer_for_file +from codeflash.languages.javascript.treesitter import TreeSitterAnalyzer, TreeSitterLanguage, get_analyzer_for_file class TestTreeSitterLanguage: