From ef99747697c7bba0ca20a24b518a711c8f0f33e7 Mon Sep 17 00:00:00 2001 From: Kevin Turcios Date: Thu, 19 Feb 2026 03:21:34 -0500 Subject: [PATCH] refactor: move code_extractor, code_replacer to languages/python/static_analysis/ --- .../languages/python/context/code_context_extractor.py | 2 +- .../languages/python/context/unused_definition_remover.py | 2 +- .../python/static_analysis}/code_extractor.py | 0 .../python/static_analysis}/code_replacer.py | 2 +- codeflash/languages/python/support.py | 2 +- codeflash/optimization/function_optimizer.py | 4 ++-- codeflash/optimization/optimizer.py | 2 +- codeflash/result/create_pr.py | 2 +- tests/test_add_needed_imports_from_module.py | 8 ++++---- tests/test_code_context_extractor.py | 6 +++--- tests/test_code_extractor_none_aliases_exact.py | 2 +- tests/test_code_replacement.py | 4 ++-- tests/test_get_code.py | 2 +- tests/test_is_numerical_code.py | 2 +- tests/test_languages/test_find_references.py | 2 +- tests/test_languages/test_js_code_replacer.py | 2 +- 16 files changed, 22 insertions(+), 22 deletions(-) rename codeflash/{code_utils => languages/python/static_analysis}/code_extractor.py (100%) rename codeflash/{code_utils => languages/python/static_analysis}/code_replacer.py (99%) diff --git a/codeflash/languages/python/context/code_context_extractor.py b/codeflash/languages/python/context/code_context_extractor.py index 0e42022f6..44ed6e4d8 100644 --- a/codeflash/languages/python/context/code_context_extractor.py +++ b/codeflash/languages/python/context/code_context_extractor.py @@ -10,7 +10,7 @@ from typing import TYPE_CHECKING import libcst as cst from codeflash.cli_cmds.console import logger -from codeflash.code_utils.code_extractor import add_needed_imports_from_module, find_preexisting_objects +from codeflash.languages.python.static_analysis.code_extractor import add_needed_imports_from_module, find_preexisting_objects from codeflash.code_utils.code_utils import encoded_tokens_len, get_qualified_name, path_belongs_to_site_packages from codeflash.code_utils.config_consts import OPTIMIZATION_CONTEXT_TOKEN_LIMIT, TESTGEN_CONTEXT_TOKEN_LIMIT from codeflash.discovery.functions_to_optimize import FunctionToOptimize # noqa: TC001 diff --git a/codeflash/languages/python/context/unused_definition_remover.py b/codeflash/languages/python/context/unused_definition_remover.py index 3cc7c173a..96bbd9781 100644 --- a/codeflash/languages/python/context/unused_definition_remover.py +++ b/codeflash/languages/python/context/unused_definition_remover.py @@ -10,7 +10,7 @@ from typing import TYPE_CHECKING, Optional, Union import libcst as cst from codeflash.cli_cmds.console import logger -from codeflash.code_utils.code_replacer import replace_function_definitions_in_module +from codeflash.languages.python.static_analysis.code_replacer import replace_function_definitions_in_module from codeflash.languages import is_javascript from codeflash.models.models import CodeString, CodeStringsMarkdown diff --git a/codeflash/code_utils/code_extractor.py b/codeflash/languages/python/static_analysis/code_extractor.py similarity index 100% rename from codeflash/code_utils/code_extractor.py rename to codeflash/languages/python/static_analysis/code_extractor.py diff --git a/codeflash/code_utils/code_replacer.py b/codeflash/languages/python/static_analysis/code_replacer.py similarity index 99% rename from codeflash/code_utils/code_replacer.py rename to codeflash/languages/python/static_analysis/code_replacer.py index efc9e5798..9c4199278 100644 --- a/codeflash/code_utils/code_replacer.py +++ b/codeflash/languages/python/static_analysis/code_replacer.py @@ -10,7 +10,7 @@ import libcst as cst from libcst.metadata import PositionProvider from codeflash.cli_cmds.console import logger -from codeflash.code_utils.code_extractor import ( +from codeflash.languages.python.static_analysis.code_extractor import ( add_global_assignments, add_needed_imports_from_module, find_insertion_index_after_imports, diff --git a/codeflash/languages/python/support.py b/codeflash/languages/python/support.py index b026e99e5..7eb52575b 100644 --- a/codeflash/languages/python/support.py +++ b/codeflash/languages/python/support.py @@ -379,7 +379,7 @@ class PythonSupport: Modified source code with function replaced. """ - from codeflash.code_utils.code_replacer import replace_functions_in_file + from codeflash.languages.python.static_analysis.code_replacer import replace_functions_in_file try: # Determine the function names to replace diff --git a/codeflash/optimization/function_optimizer.py b/codeflash/optimization/function_optimizer.py index 64b6aa273..37ce0554c 100644 --- a/codeflash/optimization/function_optimizer.py +++ b/codeflash/optimization/function_optimizer.py @@ -26,8 +26,8 @@ from codeflash.api.cfapi import add_code_context_hash, create_staging, get_cfapi from codeflash.benchmarking.utils import process_benchmark_data from codeflash.cli_cmds.console import code_print, console, logger, lsp_log, progress_bar from codeflash.code_utils import env_utils -from codeflash.code_utils.code_extractor import get_opt_review_metrics, is_numerical_code -from codeflash.code_utils.code_replacer import ( +from codeflash.languages.python.static_analysis.code_extractor import get_opt_review_metrics, is_numerical_code +from codeflash.languages.python.static_analysis.code_replacer import ( add_custom_marker_to_all_tests, modify_autouse_fixture, replace_function_definitions_in_module, diff --git a/codeflash/optimization/optimizer.py b/codeflash/optimization/optimizer.py index 6a57dd8db..a2b375bcc 100644 --- a/codeflash/optimization/optimizer.py +++ b/codeflash/optimization/optimizer.py @@ -293,7 +293,7 @@ class Optimizer: def prepare_module_for_optimization( self, original_module_path: Path ) -> tuple[dict[Path, ValidCode], ast.Module | None] | None: - from codeflash.code_utils.code_replacer import normalize_code, normalize_node + from codeflash.languages.python.static_analysis.code_replacer import normalize_code, normalize_node from codeflash.languages.python.static_analysis.static_analysis import analyze_imported_modules logger.info(f"loading|Examining file {original_module_path!s}") diff --git a/codeflash/result/create_pr.py b/codeflash/result/create_pr.py index b276725f2..e466f1012 100644 --- a/codeflash/result/create_pr.py +++ b/codeflash/result/create_pr.py @@ -9,7 +9,7 @@ import git from codeflash.api import cfapi from codeflash.cli_cmds.console import console, logger from codeflash.code_utils import env_utils -from codeflash.code_utils.code_replacer import is_zero_diff +from codeflash.languages.python.static_analysis.code_replacer import is_zero_diff from codeflash.code_utils.git_utils import check_and_push_branch, get_current_branch, get_repo_owner_and_name from codeflash.code_utils.github_utils import github_pr_url from codeflash.code_utils.tabulate import tabulate diff --git a/tests/test_add_needed_imports_from_module.py b/tests/test_add_needed_imports_from_module.py index efb2a254c..03d62cdc8 100644 --- a/tests/test_add_needed_imports_from_module.py +++ b/tests/test_add_needed_imports_from_module.py @@ -3,13 +3,13 @@ from pathlib import Path import libcst as cst -from codeflash.code_utils.code_extractor import ( +from codeflash.languages.python.static_analysis.code_extractor import ( DottedImportCollector, add_needed_imports_from_module, find_preexisting_objects, resolve_star_import, ) -from codeflash.code_utils.code_replacer import replace_functions_and_add_imports +from codeflash.languages.python.static_analysis.code_replacer import replace_functions_and_add_imports from codeflash.models.models import FunctionParent @@ -22,7 +22,7 @@ import jedi import tiktoken from jedi.api.classes import Name from pydantic.dataclasses import dataclass -from codeflash.code_utils.code_extractor import get_code, get_code_no_skeleton +from codeflash.languages.python.static_analysis.code_extractor import get_code, get_code_no_skeleton from codeflash.code_utils.code_utils import path_belongs_to_site_packages from codeflash.discovery.functions_to_optimize import FunctionParent, FunctionToOptimize @@ -76,7 +76,7 @@ import tiktoken from jedi.api.classes import Name from pydantic.dataclasses import dataclass -from codeflash.code_utils.code_extractor import get_code, get_code_no_skeleton +from codeflash.languages.python.static_analysis.code_extractor import get_code, get_code_no_skeleton from codeflash.code_utils.code_utils import path_belongs_to_site_packages from codeflash.discovery.functions_to_optimize import FunctionParent, FunctionToOptimize diff --git a/tests/test_code_context_extractor.py b/tests/test_code_context_extractor.py index 4dfddb4f7..2d87fbf24 100644 --- a/tests/test_code_context_extractor.py +++ b/tests/test_code_context_extractor.py @@ -8,8 +8,8 @@ from pathlib import Path import pytest -from codeflash.code_utils.code_extractor import GlobalAssignmentCollector, add_global_assignments -from codeflash.code_utils.code_replacer import replace_functions_and_add_imports +from codeflash.languages.python.static_analysis.code_extractor import GlobalAssignmentCollector, add_global_assignments +from codeflash.languages.python.static_analysis.code_replacer import replace_functions_and_add_imports from codeflash.discovery.functions_to_optimize import FunctionToOptimize from codeflash.languages.python.context.code_context_extractor import ( collect_names_from_annotation, @@ -2870,7 +2870,7 @@ def test_global_function_collector(): """Test GlobalFunctionCollector correctly collects module-level function definitions.""" import libcst as cst - from codeflash.code_utils.code_extractor import GlobalFunctionCollector + from codeflash.languages.python.static_analysis.code_extractor import GlobalFunctionCollector source_code = """ # Module-level functions diff --git a/tests/test_code_extractor_none_aliases_exact.py b/tests/test_code_extractor_none_aliases_exact.py index e212de857..464680bd2 100644 --- a/tests/test_code_extractor_none_aliases_exact.py +++ b/tests/test_code_extractor_none_aliases_exact.py @@ -1,7 +1,7 @@ import tempfile from pathlib import Path -from codeflash.code_utils.code_extractor import add_needed_imports_from_module +from codeflash.languages.python.static_analysis.code_extractor import add_needed_imports_from_module def test_add_needed_imports_with_none_aliases(): diff --git a/tests/test_code_replacement.py b/tests/test_code_replacement.py index fbca6d71e..77d9108ab 100644 --- a/tests/test_code_replacement.py +++ b/tests/test_code_replacement.py @@ -7,8 +7,8 @@ from pathlib import Path import libcst as cst -from codeflash.code_utils.code_extractor import delete___future___aliased_imports, find_preexisting_objects -from codeflash.code_utils.code_replacer import ( +from codeflash.languages.python.static_analysis.code_extractor import delete___future___aliased_imports, find_preexisting_objects +from codeflash.languages.python.static_analysis.code_replacer import ( AddRequestArgument, AutouseFixtureModifier, OptimFunctionCollector, diff --git a/tests/test_get_code.py b/tests/test_get_code.py index 50ac349cb..6f50ca44e 100644 --- a/tests/test_get_code.py +++ b/tests/test_get_code.py @@ -3,7 +3,7 @@ from pathlib import Path import pytest -from codeflash.code_utils.code_extractor import get_code +from codeflash.languages.python.static_analysis.code_extractor import get_code from codeflash.discovery.functions_to_optimize import FunctionToOptimize from codeflash.models.models import FunctionParent diff --git a/tests/test_is_numerical_code.py b/tests/test_is_numerical_code.py index 831d9c97e..3226bb77e 100644 --- a/tests/test_is_numerical_code.py +++ b/tests/test_is_numerical_code.py @@ -2,7 +2,7 @@ from unittest.mock import patch -from codeflash.code_utils.code_extractor import is_numerical_code +from codeflash.languages.python.static_analysis.code_extractor import is_numerical_code @patch("codeflash.code_utils.code_extractor.has_numba", True) diff --git a/tests/test_languages/test_find_references.py b/tests/test_languages/test_find_references.py index 537e3ef0b..88701d3d0 100644 --- a/tests/test_languages/test_find_references.py +++ b/tests/test_languages/test_find_references.py @@ -22,7 +22,7 @@ from codeflash.languages.javascript.find_references import ( find_references, ) from codeflash.languages.base import Language, FunctionInfo, ReferenceInfo -from codeflash.code_utils.code_extractor import _format_references_as_markdown +from codeflash.languages.python.static_analysis.code_extractor import _format_references_as_markdown from codeflash.models.models import FunctionParent diff --git a/tests/test_languages/test_js_code_replacer.py b/tests/test_languages/test_js_code_replacer.py index 9e251804a..5700c4bfd 100644 --- a/tests/test_languages/test_js_code_replacer.py +++ b/tests/test_languages/test_js_code_replacer.py @@ -14,7 +14,7 @@ from pathlib import Path import pytest -from codeflash.code_utils.code_replacer import replace_function_definitions_for_language +from codeflash.languages.python.static_analysis.code_replacer import replace_function_definitions_for_language from codeflash.languages.base import Language from codeflash.languages.current import set_current_language from codeflash.languages.javascript.module_system import (