diff --git a/src/codegen/runner/sandbox/middlewares.py b/src/codegen/runner/sandbox/middlewares.py index 18167389f..1ec538f78 100644 --- a/src/codegen/runner/sandbox/middlewares.py +++ b/src/codegen/runner/sandbox/middlewares.py @@ -12,7 +12,7 @@ from codegen.runner.models.apis import ServerInfo from codegen.runner.sandbox.runner import SandboxRunner -from codegen.utils.compilation.exceptions import UserCodeException +from codegen.utils.exceptions.compilation import UserCodeException logger = logging.getLogger(__name__) diff --git a/src/codegen/sdk/code_generation/doc_utils/skills.py b/src/codegen/sdk/code_generation/doc_utils/skills.py index 6b7045b5f..d09228ba6 100644 --- a/src/codegen/sdk/code_generation/doc_utils/skills.py +++ b/src/codegen/sdk/code_generation/doc_utils/skills.py @@ -3,7 +3,6 @@ import inflection from typing_extensions import deprecated -from codegen.sdk.codemod import Codemod3 from codegen.sdk.core.codebase import Codebase from codegen.sdk.enums import ProgrammingLanguage from codegen.sdk.python import PyClass @@ -11,6 +10,7 @@ from codegen.sdk.skills.core.skill import Skill from codegen.sdk.skills.core.skill_implementation import SkillImplementation from codegen.sdk.skills.core.utils import get_all_evaluation_skills +from codemods.canonical.codemod import Codemod def remove_leading_tab_or_spaces(text: str) -> str: @@ -108,7 +108,7 @@ def format_all_skills(skill_classes: list[Skill]) -> str: # Step 2: Format each skill into an .mdx compatible string for skill in sorted_skills: - if issubclass(skill, Codemod3): + if issubclass(skill, Codemod): continue sk_inst = skill formatted_skills.append(sk_inst.generate_snippet(skill_doc=True)) diff --git a/src/codegen/sdk/exceptions.py b/src/codegen/sdk/exceptions.py deleted file mode 100644 index 2c6087b2e..000000000 --- a/src/codegen/sdk/exceptions.py +++ /dev/null @@ -1,10 +0,0 @@ -class CodemodParseError(Exception): - pass - - -class CodemodExecutionFailedException(Exception): - pass - - -class APINotApplicableForLanguageError(Exception): - pass diff --git a/src/codegen/sdk/python/statements/attribute.py b/src/codegen/sdk/python/statements/attribute.py index 91bff3e25..52f393af1 100644 --- a/src/codegen/sdk/python/statements/attribute.py +++ b/src/codegen/sdk/python/statements/attribute.py @@ -6,10 +6,10 @@ from codegen.sdk.core.autocommit import reader from codegen.sdk.core.interfaces.editable import Editable from codegen.sdk.core.statements.attribute import Attribute -from codegen.sdk.exceptions import APINotApplicableForLanguageError from codegen.sdk.python.assignment import PyAssignment from codegen.sdk.python.statements.assignment_statement import PyAssignmentStatement from codegen.utils.decorators.docs import noapidoc, py_apidoc +from codegen.utils.exceptions.api import APINotApplicableForLanguageError if TYPE_CHECKING: from codegen.sdk.python.class_definition import PyClass diff --git a/src/codegen/sdk/testing/models.py b/src/codegen/sdk/testing/models.py index 5c97c31c5..11c192dd9 100644 --- a/src/codegen/sdk/testing/models.py +++ b/src/codegen/sdk/testing/models.py @@ -29,7 +29,7 @@ except (FileNotFoundError, json.decoder.JSONDecodeError): REPO_ID_TO_URL = {} if TYPE_CHECKING: - from codegen.sdk.codemod import Codemod3 + from codemods.canonical.codemod import Codemod @unique @@ -78,7 +78,7 @@ def to_op(self, name: str, token: str | None) -> LocalRepoOperator: @dataclass class CodemodMetadata: - codemod: type["Codemod3"] + codemod: type["Codemod"] category: str directory: Path company: str | None = None diff --git a/src/codegen/sdk/testing/test_discovery.py b/src/codegen/sdk/testing/test_discovery.py index fceefa983..cf4f95c71 100644 --- a/src/codegen/sdk/testing/test_discovery.py +++ b/src/codegen/sdk/testing/test_discovery.py @@ -5,20 +5,16 @@ import textwrap from collections.abc import Generator, Iterator from pathlib import Path -from typing import TYPE_CHECKING import emoji from loguru import logger from codegen.gscli.generate.runner_imports import get_runner_imports -from codegen.sdk.codemod import Codemod3 from codegen.sdk.enums import ProgrammingLanguage from codegen.sdk.testing.constants import DIFF_FILEPATH from codegen.sdk.testing.models import BASE_PATH, CODEMOD_PATH, REPO_ID_TO_URL, TEST_DIR, VERIFIED_CODEMOD_DATA_DIR, VERIFIED_CODEMOD_DIFFS, ClonedRepoTestCase, CodemodMetadata, Repo, Size from codegen.sdk.testing.verified_codemod_utils import CodemodAPI, RepoCodemodMetadata, SkillTestConfig, anonymize_id - -if TYPE_CHECKING: - pass +from codemods.canonical.codemod import Codemod def find_repos( @@ -65,7 +61,7 @@ def codemods_from_dir(codemod_dir: Path) -> Iterator[CodemodMetadata]: import_path = str(relative).removeprefix("src/").replace("/", ".") mod = importlib.import_module(import_path) for name, value in inspect.getmembers(mod, inspect.isclass): - if issubclass(value, Codemod3) and name != "Codemod3": + if issubclass(value, Codemod) and name != "Codemod": yield CodemodMetadata(codemod=value, category=codemod_dir.parent.name, directory=codemod_dir) @@ -163,7 +159,7 @@ def generate_codemod_test_cases(repo: Repo, codemods: list[CodemodMetadata], cod # add the execute method to the codemod execute_func = create_function_from_string("execute", codemod_data) name = escape_codemod_name(codemod_data.name) + "-" + str(codemod_data.codemod_id) - codemod = Codemod3(name=name, execute=execute_func) + codemod = Codemod(name=name, execute=execute_func) codemod_metadata = CodemodMetadata( codemod=codemod, diff --git a/src/codegen/utils/compilation/codeblock_validation.py b/src/codegen/utils/compilation/codeblock_validation.py index c7737891e..466b5315f 100644 --- a/src/codegen/utils/compilation/codeblock_validation.py +++ b/src/codegen/utils/compilation/codeblock_validation.py @@ -1,6 +1,6 @@ import re -from codegen.utils.compilation.exceptions import DangerousUserCodeException +from codegen.utils.exceptions.compilation import DangerousUserCodeException def check_for_dangerous_operations(user_code: str) -> None: diff --git a/src/codegen/utils/compilation/function_compilation.py b/src/codegen/utils/compilation/function_compilation.py index c348e2766..f00109227 100644 --- a/src/codegen/utils/compilation/function_compilation.py +++ b/src/codegen/utils/compilation/function_compilation.py @@ -4,7 +4,7 @@ import traceback from collections.abc import Callable -from codegen.utils.compilation.exceptions import InvalidUserCodeException +from codegen.utils.exceptions.compilation import InvalidUserCodeException logger = logging.getLogger(__name__) diff --git a/src/codegen/utils/exceptions/api.py b/src/codegen/utils/exceptions/api.py new file mode 100644 index 000000000..5a229bbec --- /dev/null +++ b/src/codegen/utils/exceptions/api.py @@ -0,0 +1,2 @@ +class APINotApplicableForLanguageError(Exception): + pass diff --git a/src/codegen/utils/compilation/exceptions.py b/src/codegen/utils/exceptions/compilation.py similarity index 100% rename from src/codegen/utils/compilation/exceptions.py rename to src/codegen/utils/exceptions/compilation.py diff --git a/src/codemods/canonical/add_function_parameter_type_annotations/add_function_parameter_type_annotations.py b/src/codemods/canonical/add_function_parameter_type_annotations/add_function_parameter_type_annotations.py index 6b11fb185..5ef321756 100644 --- a/src/codemods/canonical/add_function_parameter_type_annotations/add_function_parameter_type_annotations.py +++ b/src/codemods/canonical/add_function_parameter_type_annotations/add_function_parameter_type_annotations.py @@ -1,9 +1,9 @@ -from codegen.sdk.codemod import Codemod3 from codegen.sdk.core.codebase import Codebase from codegen.sdk.enums import ProgrammingLanguage from codegen.sdk.skills.core.skill import Skill from codegen.sdk.skills.core.utils import skill, skill_impl from codegen.sdk.writer_decorators import canonical +from codemods.canonical.codemod import Codemod @skill( @@ -14,7 +14,7 @@ uid="d62a3590-14ef-4759-853c-39c5cf755ce5", ) @canonical -class AddFunctionParameterTypeAnnotations(Codemod3, Skill): +class AddFunctionParameterTypeAnnotations(Codemod, Skill): """Adds type annotation for function parameters that takes in a 'db' parameter, which is a `SessionLocal` from `app.db`. It also adds the necessary import if not already present. diff --git a/src/codemods/canonical/add_internal_to_non_exported_components/add_internal_to_non_exported_components.py b/src/codemods/canonical/add_internal_to_non_exported_components/add_internal_to_non_exported_components.py index c220b6cbe..ce8c0df50 100644 --- a/src/codemods/canonical/add_internal_to_non_exported_components/add_internal_to_non_exported_components.py +++ b/src/codemods/canonical/add_internal_to_non_exported_components/add_internal_to_non_exported_components.py @@ -1,9 +1,9 @@ -from codegen.sdk.codemod import Codemod3 from codegen.sdk.core.codebase import Codebase from codegen.sdk.enums import ProgrammingLanguage from codegen.sdk.skills.core.skill import Skill from codegen.sdk.skills.core.utils import skill, skill_impl from codegen.sdk.writer_decorators import canonical +from codemods.canonical.codemod import Codemod @skill( @@ -13,7 +13,7 @@ uid="302d8f7c-c848-4020-9dea-30e8e622d709", ) @canonical -class AddInternalToNonExportedComponents(Codemod3, Skill): +class AddInternalToNonExportedComponents(Codemod, Skill): """This codemod renames all React function components that are not exported from their file to be suffixed with 'Internal'. Example: diff --git a/src/codemods/canonical/bang_bang_to_boolean/bang_bang_to_boolean.py b/src/codemods/canonical/bang_bang_to_boolean/bang_bang_to_boolean.py index 4562e3815..0421bd8a4 100644 --- a/src/codemods/canonical/bang_bang_to_boolean/bang_bang_to_boolean.py +++ b/src/codemods/canonical/bang_bang_to_boolean/bang_bang_to_boolean.py @@ -1,9 +1,9 @@ -from codegen.sdk.codemod import Codemod3 from codegen.sdk.core.codebase import Codebase from codegen.sdk.enums import ProgrammingLanguage from codegen.sdk.skills.core.skill import Skill from codegen.sdk.skills.core.utils import skill, skill_impl from codegen.sdk.writer_decorators import canonical +from codemods.canonical.codemod import Codemod @skill( @@ -14,7 +14,7 @@ uid="d1ece8d3-7da9-4696-9288-4087737e2952", ) @canonical -class BangBangToBoolean(Codemod3, Skill): +class BangBangToBoolean(Codemod, Skill): """This codemod converts !!(expression) to Boolean(expression)""" language = ProgrammingLanguage.TYPESCRIPT diff --git a/src/codemods/canonical/built_in_type_annotation/built_in_type_annotation.py b/src/codemods/canonical/built_in_type_annotation/built_in_type_annotation.py index 498ae4a47..b2eb07e86 100644 --- a/src/codemods/canonical/built_in_type_annotation/built_in_type_annotation.py +++ b/src/codemods/canonical/built_in_type_annotation/built_in_type_annotation.py @@ -1,9 +1,9 @@ -from codegen.sdk.codemod import Codemod3 from codegen.sdk.core.codebase import Codebase from codegen.sdk.enums import ProgrammingLanguage from codegen.sdk.skills.core.skill import Skill from codegen.sdk.skills.core.utils import skill, skill_impl from codegen.sdk.writer_decorators import canonical +from codemods.canonical.codemod import Codemod @skill( @@ -14,7 +14,7 @@ uid="b2cd98af-d3c5-4e45-b396-e7abf06df924", ) @canonical -class BuiltInTypeAnnotation(Codemod3, Skill): +class BuiltInTypeAnnotation(Codemod, Skill): """Replaces type annotations using typing module with builtin types. Examples: diff --git a/src/codemods/canonical/change_component_tag_names/change_component_tag_names.py b/src/codemods/canonical/change_component_tag_names/change_component_tag_names.py index 98f400435..2ab7e8ba6 100644 --- a/src/codemods/canonical/change_component_tag_names/change_component_tag_names.py +++ b/src/codemods/canonical/change_component_tag_names/change_component_tag_names.py @@ -1,9 +1,9 @@ -from codegen.sdk.codemod import Codemod3 from codegen.sdk.core.codebase import Codebase from codegen.sdk.enums import ProgrammingLanguage from codegen.sdk.skills.core.skill import Skill from codegen.sdk.skills.core.utils import skill, skill_impl from codegen.sdk.writer_decorators import canonical +from codemods.canonical.codemod import Codemod @skill( @@ -14,7 +14,7 @@ uid="ab5879e3-e3ea-4231-b928-b756473f290d", ) @canonical -class ChangeJSXElementName(Codemod3, Skill): +class ChangeJSXElementName(Codemod, Skill): """This codemod updates specific JSX elements inside of React components In particular, this: diff --git a/src/codemods/canonical/classnames_to_backtick.py b/src/codemods/canonical/classnames_to_backtick.py index 13fb1fa3c..ab3ce5942 100644 --- a/src/codemods/canonical/classnames_to_backtick.py +++ b/src/codemods/canonical/classnames_to_backtick.py @@ -1,9 +1,9 @@ -from codegen.sdk.codemod import Codemod3 from codegen.sdk.core.codebase import Codebase from codegen.sdk.enums import ProgrammingLanguage from codegen.sdk.skills.core.skill import Skill from codegen.sdk.skills.core.utils import skill, skill_impl from codegen.sdk.writer_decorators import canonical +from codemods.canonical.codemod import Codemod @skill( @@ -14,7 +14,7 @@ uid="bf22f4d7-a93a-458f-be78-470c24487d4c", ) @canonical -class ClassNamesToBackTick(Codemod3, Skill): +class ClassNamesToBackTick(Codemod, Skill): """This Codemod converts all `classNames="..."` props in JSX elements to use backticks. Example: diff --git a/src/codegen/sdk/codemod.py b/src/codemods/canonical/codemod.py similarity index 94% rename from src/codegen/sdk/codemod.py rename to src/codemods/canonical/codemod.py index 486961da5..53af94b21 100644 --- a/src/codegen/sdk/codemod.py +++ b/src/codemods/canonical/codemod.py @@ -1,7 +1,7 @@ from collections.abc import Callable -class Codemod3: +class Codemod: execute: Callable | None = None def __init__(self, name: str | None = None, execute: Callable | None = None, *args, **kwargs): diff --git a/src/codemods/canonical/convert_array_type_to_square_bracket/convert_array_type_to_square_bracket.py b/src/codemods/canonical/convert_array_type_to_square_bracket/convert_array_type_to_square_bracket.py index 95e417b9f..364491b33 100644 --- a/src/codemods/canonical/convert_array_type_to_square_bracket/convert_array_type_to_square_bracket.py +++ b/src/codemods/canonical/convert_array_type_to_square_bracket/convert_array_type_to_square_bracket.py @@ -1,10 +1,10 @@ -from codegen.sdk.codemod import Codemod3 from codegen.sdk.core.codebase import Codebase from codegen.sdk.core.expressions.generic_type import GenericType from codegen.sdk.enums import ProgrammingLanguage from codegen.sdk.skills.core.skill import Skill from codegen.sdk.skills.core.utils import skill, skill_impl from codegen.sdk.writer_decorators import canonical +from codemods.canonical.codemod import Codemod @skill( @@ -15,7 +15,7 @@ uid="97184a15-5992-405b-be7b-30122556fe8b", ) @canonical -class ConvertArrayTypeToSquareBracket(Codemod3, Skill): +class ConvertArrayTypeToSquareBracket(Codemod, Skill): """This codemod converts types of the form `Array` to `T[]`, while avoiding edge cases like nested Array types""" language = ProgrammingLanguage.TYPESCRIPT diff --git a/src/codemods/canonical/convert_attribute_to_decorator/convert_attribute_to_decorator.py b/src/codemods/canonical/convert_attribute_to_decorator/convert_attribute_to_decorator.py index 824a87a12..c566588f2 100644 --- a/src/codemods/canonical/convert_attribute_to_decorator/convert_attribute_to_decorator.py +++ b/src/codemods/canonical/convert_attribute_to_decorator/convert_attribute_to_decorator.py @@ -1,9 +1,9 @@ -from codegen.sdk.codemod import Codemod3 from codegen.sdk.core.codebase import Codebase from codegen.sdk.enums import ProgrammingLanguage from codegen.sdk.skills.core.skill import Skill from codegen.sdk.skills.core.utils import skill, skill_impl from codegen.sdk.writer_decorators import canonical +from codemods.canonical.codemod import Codemod @skill( @@ -14,7 +14,7 @@ uid="b200fb43-dad4-4241-a0b2-75a6fbf5aca6", ) @canonical -class ConvertAttributeToDecorator(Codemod3, Skill): +class ConvertAttributeToDecorator(Codemod, Skill): """This converts any class attributes that initializes a set of Session objects to a decorator. For example, before: diff --git a/src/codemods/canonical/convert_comments_to_JSDoc_style/convert_comments_to_JSDoc_style.py b/src/codemods/canonical/convert_comments_to_JSDoc_style/convert_comments_to_JSDoc_style.py index 186b5dcbb..997914586 100644 --- a/src/codemods/canonical/convert_comments_to_JSDoc_style/convert_comments_to_JSDoc_style.py +++ b/src/codemods/canonical/convert_comments_to_JSDoc_style/convert_comments_to_JSDoc_style.py @@ -1,9 +1,9 @@ -from codegen.sdk.codemod import Codemod3 from codegen.sdk.core.codebase import Codebase from codegen.sdk.enums import ProgrammingLanguage from codegen.sdk.skills.core.skill import Skill from codegen.sdk.skills.core.utils import skill, skill_impl from codegen.sdk.writer_decorators import canonical +from codemods.canonical.codemod import Codemod @skill( @@ -15,7 +15,7 @@ uid="846a3894-b534-4de2-9810-94bc691a5687", ) @canonical -class ConvertCommentsToJSDocStyle(Codemod3, Skill): +class ConvertCommentsToJSDocStyle(Codemod, Skill): """This codemod converts the comments on any exported function or class to JSDoc style if they aren't already in JSDoc style. A JSDoc style comment is one that uses /** */ instead of // diff --git a/src/codemods/canonical/convert_docstring_to_google_style/convert_docstring_to_google_style.py b/src/codemods/canonical/convert_docstring_to_google_style/convert_docstring_to_google_style.py index 89f072ff3..af11b8265 100644 --- a/src/codemods/canonical/convert_docstring_to_google_style/convert_docstring_to_google_style.py +++ b/src/codemods/canonical/convert_docstring_to_google_style/convert_docstring_to_google_style.py @@ -1,21 +1,21 @@ -from codegen.sdk.codemod import Codemod3 from codegen.sdk.core.codebase import Codebase from codegen.sdk.enums import ProgrammingLanguage from codegen.sdk.skills.core.skill import Skill from codegen.sdk.skills.core.utils import skill, skill_impl from codegen.sdk.writer_decorators import canonical +from codemods.canonical.codemod import Codemod @skill( canonical=True, - prompt="""Generate a Python codemod class named `ConvertDocstringToGoogleStyle` that inherits from `Codemod3` and `Skill`. The class should have a docstring + prompt="""Generate a Python codemod class named `ConvertDocstringToGoogleStyle` that inherits from `Codemod` and `Skill`. The class should have a docstring explaining its purpose: converting docstrings of functions and classes to Google style if they aren't already. The `execute` method should iterate over the functions in a given `codebase`, check if each function has a docstring, and if so, convert it to Google style using a method `to_google_docstring`.""", uid="99da3cd9-6ba8-4a4e-8ceb-8c1b2a60562d", ) @canonical -class ConvertDocstringToGoogleStyle(Codemod3, Skill): +class ConvertDocstringToGoogleStyle(Codemod, Skill): """This codemod converts docstrings on any function or class to Google docstring style if they aren't already. A Google docstring style is one that specifies the args, return value, and raised exceptions in a structured format. diff --git a/src/codemods/canonical/delete_unused_functions/delete_unused_functions.py b/src/codemods/canonical/delete_unused_functions/delete_unused_functions.py index b04d809b4..e7a9cf89d 100644 --- a/src/codemods/canonical/delete_unused_functions/delete_unused_functions.py +++ b/src/codemods/canonical/delete_unused_functions/delete_unused_functions.py @@ -1,9 +1,9 @@ -from codegen.sdk.codemod import Codemod3 from codegen.sdk.core.codebase import Codebase from codegen.sdk.enums import ProgrammingLanguage from codegen.sdk.skills.core.skill import Skill from codegen.sdk.skills.core.utils import skill, skill_impl from codegen.sdk.writer_decorators import canonical +from codemods.canonical.codemod import Codemod @skill( @@ -14,7 +14,7 @@ uid="4024ceb5-54de-49de-b8f5-122ca2d3a6ee", ) @canonical -class DeleteUnusedFunctionsCodemod(Codemod3, Skill): +class DeleteUnusedFunctionsCodemod(Codemod, Skill): """This Codemod deletes all functions that are not used in the codebase (no usages). In general, when deleting unused things, it's good practice to check both usages and call-sites, even though call-sites should be basically a subset of usages (every call-site should correspond to a usage). diff --git a/src/codemods/canonical/emojify_py_files_codemod/emojify_py_files_codemod.py b/src/codemods/canonical/emojify_py_files_codemod/emojify_py_files_codemod.py index b8b361590..41180d8a2 100644 --- a/src/codemods/canonical/emojify_py_files_codemod/emojify_py_files_codemod.py +++ b/src/codemods/canonical/emojify_py_files_codemod/emojify_py_files_codemod.py @@ -1,20 +1,20 @@ -from codegen.sdk.codemod import Codemod3 from codegen.sdk.core.codebase import Codebase from codegen.sdk.enums import ProgrammingLanguage from codegen.sdk.skills.core.skill import Skill from codegen.sdk.skills.core.utils import skill, skill_impl from codegen.sdk.writer_decorators import canonical +from codemods.canonical.codemod import Codemod @skill( canonical=True, prompt="""Generate a Python codemod that iterates over all Python files in a codebase and adds a rainbow emoji comment at the beginning of each file. The -codemod should be implemented in the `execute` function of the `EmojifyPyFilesCodemod` class, which inherits from `Codemod3` and `Skill`. Ensure that +codemod should be implemented in the `execute` function of the `EmojifyPyFilesCodemod` class, which inherits from `Codemod` and `Skill`. Ensure that the new content for each file starts with the comment '#🌈' followed by the original content of the file.""", uid="5d8f1994-7f74-42e8-aaa8-0c41ced228ef", ) @canonical -class EmojifyPyFilesCodemod(Codemod3, Skill): +class EmojifyPyFilesCodemod(Codemod, Skill): """Trivial codemod to add a rainbow emoji in a comment at the beginning of all Python files.""" language = ProgrammingLanguage.PYTHON diff --git a/src/codemods/canonical/enum_mover/enum_mover.py b/src/codemods/canonical/enum_mover/enum_mover.py index cef525a65..58ce4b012 100644 --- a/src/codemods/canonical/enum_mover/enum_mover.py +++ b/src/codemods/canonical/enum_mover/enum_mover.py @@ -1,9 +1,9 @@ -from codegen.sdk.codemod import Codemod3 from codegen.sdk.core.codebase import CodebaseType from codegen.sdk.enums import ProgrammingLanguage from codegen.sdk.skills.core.skill import Skill from codegen.sdk.skills.core.utils import skill, skill_impl from codegen.sdk.writer_decorators import canonical +from codemods.canonical.codemod import Codemod @skill( @@ -14,7 +14,7 @@ uid="55bc76e5-15d2-4da6-bac1-59b408a59be7", ) @canonical -class EnumMover(Codemod3, Skill): +class EnumMover(Codemod, Skill): """This codemod moves all enums (Enum subclasses) to a designated enums.py file within the same directory of the file they're defined in. It ensures that the enums are moved to the correct file and creates the enums.py file if it does not exist. Furthermore, it flags the class for movement which is necessary for splitting up the diff --git a/src/codemods/canonical/insert_arguments_to_decorator/insert_arguments_to_decorator.py b/src/codemods/canonical/insert_arguments_to_decorator/insert_arguments_to_decorator.py index dcfd10264..bbc983e0e 100644 --- a/src/codemods/canonical/insert_arguments_to_decorator/insert_arguments_to_decorator.py +++ b/src/codemods/canonical/insert_arguments_to_decorator/insert_arguments_to_decorator.py @@ -1,9 +1,9 @@ -from codegen.sdk.codemod import Codemod3 from codegen.sdk.core.codebase import Codebase from codegen.sdk.enums import ProgrammingLanguage from codegen.sdk.skills.core.skill import Skill from codegen.sdk.skills.core.utils import skill, skill_impl from codegen.sdk.writer_decorators import canonical +from codemods.canonical.codemod import Codemod @skill( @@ -14,7 +14,7 @@ uid="de868e09-796c-421b-9efd-151f94f08aef", ) @canonical -class InsertArgumentsToDecorator(Codemod3, Skill): +class InsertArgumentsToDecorator(Codemod, Skill): """This codemod inserts the cloud and region arguments to every app.function decorator. it decides whether to insert the arguments based on whether they are already present in the decorator. if they are not present, it inserts them. diff --git a/src/codemods/canonical/invite_factory_create_params/invite_factory_create_params.py b/src/codemods/canonical/invite_factory_create_params/invite_factory_create_params.py index 758612b34..68a9e1151 100644 --- a/src/codemods/canonical/invite_factory_create_params/invite_factory_create_params.py +++ b/src/codemods/canonical/invite_factory_create_params/invite_factory_create_params.py @@ -1,10 +1,10 @@ -from codegen.sdk.codemod import Codemod3 from codegen.sdk.core.codebase import Codebase from codegen.sdk.core.detached_symbols.function_call import FunctionCall from codegen.sdk.enums import ProgrammingLanguage from codegen.sdk.skills.core.skill import Skill from codegen.sdk.skills.core.utils import skill, skill_impl from codegen.sdk.writer_decorators import canonical +from codemods.canonical.codemod import Codemod @skill( @@ -16,7 +16,7 @@ uid="1c43f274-e4bc-49c7-abca-8b273e9cad9a", ) @canonical -class InviteFactoryCreateParams(Codemod3, Skill): +class InviteFactoryCreateParams(Codemod, Skill): """This codemod updates calls to InviteFactory.create, InviteFactory.build and InviteFactory(...) to use the `invitee` parameter instead of `invitee_id`, `invitee["email"]`, or `invitee.id`. For example: diff --git a/src/codemods/canonical/js_to_esm_codemod/js_to_esm_codemod.py b/src/codemods/canonical/js_to_esm_codemod/js_to_esm_codemod.py index e950371a5..afe053aa6 100644 --- a/src/codemods/canonical/js_to_esm_codemod/js_to_esm_codemod.py +++ b/src/codemods/canonical/js_to_esm_codemod/js_to_esm_codemod.py @@ -1,9 +1,9 @@ -from codegen.sdk.codemod import Codemod3 from codegen.sdk.core.codebase import Codebase from codegen.sdk.enums import ProgrammingLanguage from codegen.sdk.skills.core.skill import Skill from codegen.sdk.skills.core.utils import skill, skill_impl from codegen.sdk.writer_decorators import canonical +from codemods.canonical.codemod import Codemod @skill( @@ -14,7 +14,7 @@ uid="f93122d3-f469-4740-a8bf-f53016de41b2", ) @canonical -class JsToEsmCodemod(Codemod3, Skill): +class JsToEsmCodemod(Codemod, Skill): """This codemod will convert all JS files that have .router in their name to be proper ESM modules""" language = ProgrammingLanguage.TYPESCRIPT diff --git a/src/codemods/canonical/mark_as_internal_codemod/mark_as_internal_codemod.py b/src/codemods/canonical/mark_as_internal_codemod/mark_as_internal_codemod.py index 0e062890e..d24a68575 100644 --- a/src/codemods/canonical/mark_as_internal_codemod/mark_as_internal_codemod.py +++ b/src/codemods/canonical/mark_as_internal_codemod/mark_as_internal_codemod.py @@ -1,11 +1,11 @@ from pathlib import Path -from codegen.sdk.codemod import Codemod3 from codegen.sdk.core.codebase import Codebase from codegen.sdk.enums import ProgrammingLanguage from codegen.sdk.skills.core.skill import Skill from codegen.sdk.skills.core.utils import skill, skill_impl from codegen.sdk.writer_decorators import canonical +from codemods.canonical.codemod import Codemod @skill( @@ -16,7 +16,7 @@ uid="fe61add3-ab41-49ec-9c26-c2d13e2647d1", ) @canonical -class MarkAsInternalCodemod(Codemod3, Skill): +class MarkAsInternalCodemod(Codemod, Skill): """Mark all functions that are only used in the same directory or subdirectory as an internal function. To mark function as internal by adding the @internal tag to the docstring. """ diff --git a/src/codemods/canonical/mark_internal_to_module/mark_internal_to_module.py b/src/codemods/canonical/mark_internal_to_module/mark_internal_to_module.py index 9f4d9d67c..6925be766 100644 --- a/src/codemods/canonical/mark_internal_to_module/mark_internal_to_module.py +++ b/src/codemods/canonical/mark_internal_to_module/mark_internal_to_module.py @@ -1,10 +1,10 @@ -from codegen.sdk.codemod import Codemod3 from codegen.sdk.core.codebase import Codebase from codegen.sdk.core.dataclasses.usage import UsageKind from codegen.sdk.enums import ProgrammingLanguage from codegen.sdk.skills.core.skill import Skill from codegen.sdk.skills.core.utils import skill, skill_impl from codegen.sdk.writer_decorators import canonical +from codemods.canonical.codemod import Codemod @skill( @@ -15,7 +15,7 @@ uid="cb5c6f1d-0a00-46e3-ac0d-c540ab665041", ) @canonical -class MarkInternalToModule(Codemod3, Skill): +class MarkInternalToModule(Codemod, Skill): """This codemod looks at all functions in the `app` directory and marks them as internal if they are not being imported anywhere""" language = ProgrammingLanguage.PYTHON diff --git a/src/codemods/canonical/mark_is_boolean/mark_is_boolean.py b/src/codemods/canonical/mark_is_boolean/mark_is_boolean.py index fb5c8f92c..05eac35ab 100644 --- a/src/codemods/canonical/mark_is_boolean/mark_is_boolean.py +++ b/src/codemods/canonical/mark_is_boolean/mark_is_boolean.py @@ -1,9 +1,9 @@ -from codegen.sdk.codemod import Codemod3 from codegen.sdk.core.codebase import Codebase from codegen.sdk.enums import ProgrammingLanguage from codegen.sdk.skills.core.skill import Skill from codegen.sdk.skills.core.utils import skill, skill_impl from codegen.sdk.writer_decorators import canonical +from codemods.canonical.codemod import Codemod @skill( @@ -14,7 +14,7 @@ uid="e848b784-c703-4f4f-bfa4-e3876b2468d1", ) @canonical -class MarkIsBoolean(Codemod3, Skill): +class MarkIsBoolean(Codemod, Skill): """This (TypeScript) Codemod illustrates how to rename function parameters that are boolean types but do not start with 'is'. In a real application, you would probably also check for other valid prefixes, like `should` etc. diff --git a/src/codemods/canonical/migrate_class_attributes/migrate_class_attributes.py b/src/codemods/canonical/migrate_class_attributes/migrate_class_attributes.py index 58aeca942..b6d7a2fee 100644 --- a/src/codemods/canonical/migrate_class_attributes/migrate_class_attributes.py +++ b/src/codemods/canonical/migrate_class_attributes/migrate_class_attributes.py @@ -1,12 +1,12 @@ import logging import textwrap -from codegen.sdk.codemod import Codemod3 from codegen.sdk.core.codebase import PyCodebaseType from codegen.sdk.enums import ProgrammingLanguage from codegen.sdk.skills.core.skill import Skill from codegen.sdk.skills.core.utils import skill, skill_impl from codegen.sdk.writer_decorators import canonical +from codemods.canonical.codemod import Codemod logger = logging.getLogger(__name__) @@ -20,7 +20,7 @@ uid="739061ae-4f4f-48eb-a825-7424417ce540", ) @canonical -class MigrateClassAttributes(Codemod3, Skill): +class MigrateClassAttributes(Codemod, Skill): """Migrates class attributes from a source class to another class. Any migrated attributes are made private in the source class. """ diff --git a/src/codemods/canonical/move_enums_codemod/move_enums_codemod.py b/src/codemods/canonical/move_enums_codemod/move_enums_codemod.py index 17425dd90..aea5bf954 100644 --- a/src/codemods/canonical/move_enums_codemod/move_enums_codemod.py +++ b/src/codemods/canonical/move_enums_codemod/move_enums_codemod.py @@ -1,9 +1,9 @@ -from codegen.sdk.codemod import Codemod3 from codegen.sdk.core.codebase import Codebase from codegen.sdk.enums import ProgrammingLanguage from codegen.sdk.skills.core.skill import Skill from codegen.sdk.skills.core.utils import skill, skill_impl from codegen.sdk.writer_decorators import canonical +from codemods.canonical.codemod import Codemod @skill( @@ -14,7 +14,7 @@ uid="47e9399c-b8d5-4f39-a5cf-fd40c51620b0", ) @canonical -class MoveEnumsCodemod(Codemod3, Skill): +class MoveEnumsCodemod(Codemod, Skill): """Moves all enums to a file called enums.py in current directory if it doesn't already exist""" language = ProgrammingLanguage.PYTHON diff --git a/src/codemods/canonical/move_functions_to_new_file/move_functions_to_new_file.py b/src/codemods/canonical/move_functions_to_new_file/move_functions_to_new_file.py index 039376546..88d5291ce 100644 --- a/src/codemods/canonical/move_functions_to_new_file/move_functions_to_new_file.py +++ b/src/codemods/canonical/move_functions_to_new_file/move_functions_to_new_file.py @@ -1,10 +1,10 @@ -from codegen.sdk.codemod import Codemod3 from codegen.sdk.core.codebase import Codebase from codegen.sdk.core.file import SourceFile from codegen.sdk.enums import ProgrammingLanguage from codegen.sdk.skills.core.skill import Skill from codegen.sdk.skills.core.utils import skill, skill_impl from codegen.sdk.writer_decorators import canonical +from codemods.canonical.codemod import Codemod @skill( @@ -15,7 +15,7 @@ uid="b29f6b8b-0837-4548-b770-b597bbcd3e02", ) @canonical -class MoveFunctionsToNewFile(Codemod3, Skill): +class MoveFunctionsToNewFile(Codemod, Skill): """This codemod moves functions that starts with "pylsp_" in their names to a new file called pylsp_shared.py When it moves them to this file, all imports across the codebase will get updated to reflect the new location. diff --git a/src/codemods/canonical/openapi_add_response_none/openapi_add_response_none.py b/src/codemods/canonical/openapi_add_response_none/openapi_add_response_none.py index e8adca0c6..bb6759db0 100644 --- a/src/codemods/canonical/openapi_add_response_none/openapi_add_response_none.py +++ b/src/codemods/canonical/openapi_add_response_none/openapi_add_response_none.py @@ -1,4 +1,3 @@ -from codegen.sdk.codemod import Codemod3 from codegen.sdk.core.codebase import Codebase from codegen.sdk.core.detached_symbols.decorator import Decorator from codegen.sdk.core.symbol import Symbol @@ -6,6 +5,7 @@ from codegen.sdk.skills.core.skill import Skill from codegen.sdk.skills.core.utils import skill, skill_impl from codegen.sdk.writer_decorators import canonical +from codemods.canonical.codemod import Codemod @skill( @@ -17,7 +17,7 @@ uid="c1596668-8169-44b4-9e0e-b244eb7671d9", ) @canonical -class OpenAPIAddResponseNone(Codemod3, Skill): +class OpenAPIAddResponseNone(Codemod, Skill): """This one adds a `@xys_ns.response(200)` decorator to Flask Resource methods that do not contain any return status codes Before: diff --git a/src/codemods/canonical/openapi_no_reference_request/openapi_no_reference_request.py b/src/codemods/canonical/openapi_no_reference_request/openapi_no_reference_request.py index c4dd0e2be..785074d4e 100644 --- a/src/codemods/canonical/openapi_no_reference_request/openapi_no_reference_request.py +++ b/src/codemods/canonical/openapi_no_reference_request/openapi_no_reference_request.py @@ -1,4 +1,3 @@ -from codegen.sdk.codemod import Codemod3 from codegen.sdk.core.codebase import Codebase from codegen.sdk.core.detached_symbols.decorator import Decorator from codegen.sdk.core.symbol import Symbol @@ -6,6 +5,7 @@ from codegen.sdk.skills.core.skill import Skill from codegen.sdk.skills.core.utils import skill, skill_impl from codegen.sdk.writer_decorators import canonical +from codemods.canonical.codemod import Codemod @skill( @@ -17,7 +17,7 @@ uid="5341d15f-92c7-4a3e-b409-416603dfa7f6", ) @canonical -class OpenAPINoReferenceRequest(Codemod3, Skill): +class OpenAPINoReferenceRequest(Codemod, Skill): """As part of the OpenAPI typing initiative for Flask endpoints, this codemod will add `@my_namespace.expect(None)` to all Flask routes that do not interact with the request object.""" language = ProgrammingLanguage.PYTHON diff --git a/src/codemods/canonical/pascal_case_symbols/pascal_case_symbols.py b/src/codemods/canonical/pascal_case_symbols/pascal_case_symbols.py index 71948f050..d82a4f7df 100644 --- a/src/codemods/canonical/pascal_case_symbols/pascal_case_symbols.py +++ b/src/codemods/canonical/pascal_case_symbols/pascal_case_symbols.py @@ -1,4 +1,3 @@ -from codegen.sdk.codemod import Codemod3 from codegen.sdk.core.class_definition import Class from codegen.sdk.core.codebase import Codebase from codegen.sdk.core.interface import Interface @@ -7,6 +6,7 @@ from codegen.sdk.skills.core.skill import Skill from codegen.sdk.skills.core.utils import skill, skill_impl from codegen.sdk.writer_decorators import canonical +from codemods.canonical.codemod import Codemod @skill( @@ -18,7 +18,7 @@ uid="bbb9e26a-7911-4b94-a4eb-207b9d32d18f", ) @canonical -class PascalCaseSymbols(Codemod3, Skill): +class PascalCaseSymbols(Codemod, Skill): """This (Typescript) codemod converts all Classes, Interfaces and Types to be in PascalCase using simple logic. Note the use of the `isinstance(symbol, (Class | Interface | Type))` syntax to check if the symbol is a Class, Interface, or Type. diff --git a/src/codemods/canonical/pivot_return_types/pivot_return_types.py b/src/codemods/canonical/pivot_return_types/pivot_return_types.py index 500dc3459..f426fb1a0 100644 --- a/src/codemods/canonical/pivot_return_types/pivot_return_types.py +++ b/src/codemods/canonical/pivot_return_types/pivot_return_types.py @@ -1,9 +1,9 @@ -from codegen.sdk.codemod import Codemod3 from codegen.sdk.core.codebase import Codebase from codegen.sdk.enums import ProgrammingLanguage from codegen.sdk.skills.core.skill import Skill from codegen.sdk.skills.core.utils import skill, skill_impl from codegen.sdk.writer_decorators import canonical +from codemods.canonical.codemod import Codemod @skill( @@ -14,7 +14,7 @@ uid="a357f5c4-2ff0-4fb2-a5c6-be051428604a", ) @canonical -class PivotReturnTypes(Codemod3, Skill): +class PivotReturnTypes(Codemod, Skill): """This codemod allows us to take all functions that return str and safely convert it to a custom FastStr type. It does so by wrapping the return statement value in the CustomStr constructor and update the return type annotation. diff --git a/src/codemods/canonical/refactor_react_components_into_separate_files/refactor_react_components_into_separate_files.py b/src/codemods/canonical/refactor_react_components_into_separate_files/refactor_react_components_into_separate_files.py index e95a1e6d9..3be635e58 100644 --- a/src/codemods/canonical/refactor_react_components_into_separate_files/refactor_react_components_into_separate_files.py +++ b/src/codemods/canonical/refactor_react_components_into_separate_files/refactor_react_components_into_separate_files.py @@ -1,9 +1,9 @@ -from codegen.sdk.codemod import Codemod3 from codegen.sdk.core.codebase import Codebase from codegen.sdk.enums import ProgrammingLanguage from codegen.sdk.skills.core.skill import Skill from codegen.sdk.skills.core.utils import skill, skill_impl from codegen.sdk.writer_decorators import canonical +from codemods.canonical.codemod import Codemod @skill( @@ -14,7 +14,7 @@ uid="b64406f4-a670-4d65-8356-c6db25c4f4b7", ) @canonical -class RefactorReactComponentsIntoSeparateFiles(Codemod3, Skill): +class RefactorReactComponentsIntoSeparateFiles(Codemod, Skill): """This codemod breaks up JSX/TSX files by moving components that aren't exported by default into separate files. """ diff --git a/src/codemods/canonical/remove_indirect_imports/remove_indirect_imports.py b/src/codemods/canonical/remove_indirect_imports/remove_indirect_imports.py index 1bb54b60b..74ad687b7 100644 --- a/src/codemods/canonical/remove_indirect_imports/remove_indirect_imports.py +++ b/src/codemods/canonical/remove_indirect_imports/remove_indirect_imports.py @@ -1,4 +1,3 @@ -from codegen.sdk.codemod import Codemod3 from codegen.sdk.core.codebase import Codebase from codegen.sdk.core.external_module import ExternalModule from codegen.sdk.core.import_resolution import Import @@ -7,6 +6,7 @@ from codegen.sdk.skills.core.skill import Skill from codegen.sdk.skills.core.utils import skill, skill_impl from codegen.sdk.writer_decorators import canonical +from codemods.canonical.codemod import Codemod @skill( @@ -17,7 +17,7 @@ uid="0648c80e-a569-4aa5-b241-38a2dd320e9a", ) @canonical -class RemoveIndirectImports(Codemod3, Skill): +class RemoveIndirectImports(Codemod, Skill): """This codemod removes all indirect imports from a codebase (i.e. an import that points to another import), replacing them instead with direct imports """ diff --git a/src/codemods/canonical/rename_function_parameters/rename_function_parameters.py b/src/codemods/canonical/rename_function_parameters/rename_function_parameters.py index c543cc439..0b3a0cdf4 100644 --- a/src/codemods/canonical/rename_function_parameters/rename_function_parameters.py +++ b/src/codemods/canonical/rename_function_parameters/rename_function_parameters.py @@ -1,20 +1,20 @@ -from codegen.sdk.codemod import Codemod3 from codegen.sdk.core.codebase import Codebase from codegen.sdk.enums import ProgrammingLanguage from codegen.sdk.skills.core.skill import Skill from codegen.sdk.skills.core.utils import skill, skill_impl from codegen.sdk.writer_decorators import canonical +from codemods.canonical.codemod import Codemod @skill( canonical=True, prompt="""Generate a Python codemod that iterates through all files in a codebase, identifies function parameters containing the substring 'obj', and renames -them to 'new_obj'. The codemod should be structured as a class that inherits from Codemod3 and Skill, with an execute method that performs the +them to 'new_obj'. The codemod should be structured as a class that inherits from Codemod and Skill, with an execute method that performs the renaming operation.""", uid="1576b2fd-8a00-44e4-9659-eb0f585e015a", ) @canonical -class RenameFunctionParameters(Codemod3, Skill): +class RenameFunctionParameters(Codemod, Skill): """This takes all functions that renames any parameter that contains 'obj' and replaces with 'new_obj'""" language = ProgrammingLanguage.PYTHON diff --git a/src/codemods/canonical/rename_local_variables/rename_local_variables.py b/src/codemods/canonical/rename_local_variables/rename_local_variables.py index 6c24aeba7..7aad342c8 100644 --- a/src/codemods/canonical/rename_local_variables/rename_local_variables.py +++ b/src/codemods/canonical/rename_local_variables/rename_local_variables.py @@ -1,9 +1,9 @@ -from codegen.sdk.codemod import Codemod3 from codegen.sdk.core.codebase import Codebase from codegen.sdk.enums import ProgrammingLanguage from codegen.sdk.skills.core.skill import Skill from codegen.sdk.skills.core.utils import skill, skill_impl from codegen.sdk.writer_decorators import canonical +from codemods.canonical.codemod import Codemod @skill( @@ -14,7 +14,7 @@ uid="79c10c00-bbce-4bdb-8c39-d91586307a2b", ) @canonical -class RenameLocalVariables(Codemod3, Skill): +class RenameLocalVariables(Codemod, Skill): """This codemod renames all local variables in functions that contain 'position' to 'pos' Example: diff --git a/src/codemods/canonical/replace_prop_values/replace_prop_values.py b/src/codemods/canonical/replace_prop_values/replace_prop_values.py index 0e7b892a1..04a522542 100644 --- a/src/codemods/canonical/replace_prop_values/replace_prop_values.py +++ b/src/codemods/canonical/replace_prop_values/replace_prop_values.py @@ -1,9 +1,9 @@ -from codegen.sdk.codemod import Codemod3 from codegen.sdk.core.codebase import Codebase from codegen.sdk.enums import ProgrammingLanguage from codegen.sdk.skills.core.skill import Skill from codegen.sdk.skills.core.utils import skill, skill_impl from codegen.sdk.writer_decorators import canonical +from codemods.canonical.codemod import Codemod @skill( @@ -13,7 +13,7 @@ uid="c1914552-556b-4ae0-99f0-33cb7bfb702e", ) @canonical -class ReplacePropValues(Codemod3, Skill): +class ReplacePropValues(Codemod, Skill): """Replaces any JSX props with text-center to text-left""" language = ProgrammingLanguage.TYPESCRIPT diff --git a/src/codemods/canonical/return_none_type_annotation/return_none_type_annotation.py b/src/codemods/canonical/return_none_type_annotation/return_none_type_annotation.py index 1b339d3c9..ec9c57ea7 100644 --- a/src/codemods/canonical/return_none_type_annotation/return_none_type_annotation.py +++ b/src/codemods/canonical/return_none_type_annotation/return_none_type_annotation.py @@ -1,9 +1,9 @@ -from codegen.sdk.codemod import Codemod3 from codegen.sdk.core.codebase import Codebase from codegen.sdk.enums import ProgrammingLanguage from codegen.sdk.skills.core.skill import Skill from codegen.sdk.skills.core.utils import skill, skill_impl from codegen.sdk.writer_decorators import canonical +from codemods.canonical.codemod import Codemod @skill( @@ -13,7 +13,7 @@ uid="fcac16ed-a915-472a-9dfe-1562452d9ab3", ) @canonical -class ReturnNoneTypeAnnotation(Codemod3, Skill): +class ReturnNoneTypeAnnotation(Codemod, Skill): """This codemod sets the return type of functions that do not have any return statements""" language = ProgrammingLanguage.PYTHON diff --git a/src/codemods/canonical/split_decorators/split_decorators.py b/src/codemods/canonical/split_decorators/split_decorators.py index b564dd3a0..6754d117d 100644 --- a/src/codemods/canonical/split_decorators/split_decorators.py +++ b/src/codemods/canonical/split_decorators/split_decorators.py @@ -1,9 +1,9 @@ -from codegen.sdk.codemod import Codemod3 from codegen.sdk.core.codebase import Codebase from codegen.sdk.enums import ProgrammingLanguage from codegen.sdk.skills.core.skill import Skill from codegen.sdk.skills.core.utils import skill, skill_impl from codegen.sdk.writer_decorators import canonical +from codemods.canonical.codemod import Codemod @skill( @@ -14,7 +14,7 @@ uid="3f6325b8-02c3-4d90-a726-830f8bccce3a", ) @canonical -class SplitDecorators(Codemod3, Skill): +class SplitDecorators(Codemod, Skill): """This codemod splits a single decorator call into multiple For example: diff --git a/src/codemods/canonical/split_file/split_file.py b/src/codemods/canonical/split_file/split_file.py index 8a059903e..a09464d71 100644 --- a/src/codemods/canonical/split_file/split_file.py +++ b/src/codemods/canonical/split_file/split_file.py @@ -1,9 +1,9 @@ -from codegen.sdk.codemod import Codemod3 from codegen.sdk.core.codebase import Codebase from codegen.sdk.enums import ProgrammingLanguage from codegen.sdk.skills.core.skill import Skill from codegen.sdk.skills.core.utils import skill, skill_impl from codegen.sdk.writer_decorators import canonical +from codemods.canonical.codemod import Codemod @skill( @@ -14,7 +14,7 @@ uid="a7c7388d-f473-4a37-b316-e881079fe093", ) @canonical -class SplitFile(Codemod3, Skill): +class SplitFile(Codemod, Skill): """This codemod moves symbols from one large to a new file with the goal of breaking up a large file.""" language = ProgrammingLanguage.PYTHON diff --git a/src/codemods/canonical/split_file_and_rename_symbols/split_file_and_rename_symbols.py b/src/codemods/canonical/split_file_and_rename_symbols/split_file_and_rename_symbols.py index 86beb7ffb..318cfb489 100644 --- a/src/codemods/canonical/split_file_and_rename_symbols/split_file_and_rename_symbols.py +++ b/src/codemods/canonical/split_file_and_rename_symbols/split_file_and_rename_symbols.py @@ -1,9 +1,9 @@ -from codegen.sdk.codemod import Codemod3 from codegen.sdk.core.codebase import CodebaseType from codegen.sdk.enums import ProgrammingLanguage from codegen.sdk.skills.core.skill import Skill from codegen.sdk.skills.core.utils import skill, skill_impl from codegen.sdk.writer_decorators import canonical +from codemods.canonical.codemod import Codemod @skill( @@ -14,7 +14,7 @@ uid="816415d9-27e8-4228-b284-1b18b3072f0d", ) @canonical -class SplitFileAndRenameSymbols(Codemod3, Skill): +class SplitFileAndRenameSymbols(Codemod, Skill): """Split file and rename moved symbols This codemod first moves several symbols to new files and then renames them. diff --git a/src/codemods/canonical/split_large_files/split_large_files.py b/src/codemods/canonical/split_large_files/split_large_files.py index 90be05026..0758359b8 100644 --- a/src/codemods/canonical/split_large_files/split_large_files.py +++ b/src/codemods/canonical/split_large_files/split_large_files.py @@ -1,9 +1,9 @@ -from codegen.sdk.codemod import Codemod3 from codegen.sdk.core.codebase import Codebase from codegen.sdk.enums import ProgrammingLanguage from codegen.sdk.skills.core.skill import Skill from codegen.sdk.skills.core.utils import skill, skill_impl from codegen.sdk.writer_decorators import canonical +from codemods.canonical.codemod import Codemod @skill( @@ -15,7 +15,7 @@ uid="b5bbec91-5bfe-4b4b-b62e-0a1ec94089b5", ) @canonical -class SplitLargeFiles(Codemod3, Skill): +class SplitLargeFiles(Codemod, Skill): """This codemod splits all large files.""" language = ProgrammingLanguage.TYPESCRIPT diff --git a/src/codemods/canonical/swap_call_site_imports/swap_call_site_imports.py b/src/codemods/canonical/swap_call_site_imports/swap_call_site_imports.py index 2f2e67794..2b1a7335f 100644 --- a/src/codemods/canonical/swap_call_site_imports/swap_call_site_imports.py +++ b/src/codemods/canonical/swap_call_site_imports/swap_call_site_imports.py @@ -1,9 +1,9 @@ -from codegen.sdk.codemod import Codemod3 from codegen.sdk.core.codebase import Codebase from codegen.sdk.enums import ProgrammingLanguage from codegen.sdk.skills.core.skill import Skill from codegen.sdk.skills.core.utils import skill, skill_impl from codegen.sdk.writer_decorators import canonical +from codemods.canonical.codemod import Codemod @skill( @@ -16,7 +16,7 @@ uid="8fa00be7-adad-473d-8436-fc5f70e6ac6d", ) @canonical -class SwapCallSiteImports(Codemod3, Skill): +class SwapCallSiteImports(Codemod, Skill): """This codemod replaces all imports of a legacy function with it's new replacement. This involves: diff --git a/src/codemods/canonical/swap_class_attribute_usages/swap_class_attribute_usages.py b/src/codemods/canonical/swap_class_attribute_usages/swap_class_attribute_usages.py index 555b423a9..ed772cb26 100644 --- a/src/codemods/canonical/swap_class_attribute_usages/swap_class_attribute_usages.py +++ b/src/codemods/canonical/swap_class_attribute_usages/swap_class_attribute_usages.py @@ -1,9 +1,9 @@ -from codegen.sdk.codemod import Codemod3 from codegen.sdk.core.codebase import Codebase from codegen.sdk.enums import ProgrammingLanguage from codegen.sdk.skills.core.skill import Skill from codegen.sdk.skills.core.utils import skill, skill_impl from codegen.sdk.writer_decorators import canonical +from codemods.canonical.codemod import Codemod @skill( @@ -14,7 +14,7 @@ class (GraphRagConfig) to use the second class (CacheConfig) instead. It should uid="4a3569c2-cf58-4bdc-822b-7a5747f476ab", ) @canonical -class SwapClassAttributeUsages(Codemod3, Skill): +class SwapClassAttributeUsages(Codemod, Skill): """This codemod takes two classes (class A and class B) and transfers one class's attributes to the other. It does this by: - Renaming any parameters that are passing the class A and replaces it to take in class B instead diff --git a/src/codemods/canonical/update_optional_type_annotations/update_optional_type_annotations.py b/src/codemods/canonical/update_optional_type_annotations/update_optional_type_annotations.py index d54acc1e5..660c0a518 100644 --- a/src/codemods/canonical/update_optional_type_annotations/update_optional_type_annotations.py +++ b/src/codemods/canonical/update_optional_type_annotations/update_optional_type_annotations.py @@ -1,4 +1,3 @@ -from codegen.sdk.codemod import Codemod3 from codegen.sdk.core.codebase import Codebase from codegen.sdk.core.expressions import Type from codegen.sdk.core.expressions.generic_type import GenericType @@ -7,6 +6,7 @@ from codegen.sdk.skills.core.skill import Skill from codegen.sdk.skills.core.utils import skill, skill_impl from codegen.sdk.writer_decorators import canonical +from codemods.canonical.codemod import Codemod @skill( @@ -17,7 +17,7 @@ uid="0e2d60db-bff0-4020-bda7-f264ff6c7f46", ) @canonical -class UpdateOptionalTypeAnnotations(Codemod3, Skill): +class UpdateOptionalTypeAnnotations(Codemod, Skill): """Replaces type annotations with builtin ones, e.g.: def f(x: Optional[int]): becomes diff --git a/src/codemods/canonical/update_union_types/update_union_types.py b/src/codemods/canonical/update_union_types/update_union_types.py index 413ce3c7a..501a4920f 100644 --- a/src/codemods/canonical/update_union_types/update_union_types.py +++ b/src/codemods/canonical/update_union_types/update_union_types.py @@ -1,9 +1,9 @@ -from codegen.sdk.codemod import Codemod3 from codegen.sdk.core.codebase import Codebase from codegen.sdk.enums import ProgrammingLanguage from codegen.sdk.skills.core.skill import Skill from codegen.sdk.skills.core.utils import skill, skill_impl from codegen.sdk.writer_decorators import canonical +from codemods.canonical.codemod import Codemod @skill( @@ -15,7 +15,7 @@ uid="7637d11a-b907-4716-a09f-07776f81a359", ) @canonical -class UpdateUnionTypes(Codemod3, Skill): +class UpdateUnionTypes(Codemod, Skill): """This updates the Union [ x , y ] syntax for x | y for migrations for python 3.9 to python 3.10""" language = ProgrammingLanguage.PYTHON diff --git a/src/codemods/canonical/use_named_kwargs/use_named_kwargs.py b/src/codemods/canonical/use_named_kwargs/use_named_kwargs.py index 63a95cd3f..994ef310f 100644 --- a/src/codemods/canonical/use_named_kwargs/use_named_kwargs.py +++ b/src/codemods/canonical/use_named_kwargs/use_named_kwargs.py @@ -1,4 +1,3 @@ -from codegen.sdk.codemod import Codemod3 from codegen.sdk.core.codebase import Codebase from codegen.sdk.core.external_module import ExternalModule from codegen.sdk.enums import ProgrammingLanguage @@ -6,6 +5,7 @@ from codegen.sdk.skills.core.skill import Skill from codegen.sdk.skills.core.utils import skill, skill_impl from codegen.sdk.writer_decorators import canonical +from codemods.canonical.codemod import Codemod @skill( @@ -17,7 +17,7 @@ uid="1a4b9e66-1df5-4ad1-adbb-034976add8e0", ) @canonical -class UseNamedKwargs(Codemod3, Skill): +class UseNamedKwargs(Codemod, Skill): """Converts all functions to use named kwargs if there are more than >= 2 args being used. In general you can use FunctionCall.convert_args_to_kwargs() once you have filtered properly diff --git a/src/codemods/canonical/wrap_with_component/wrap_with_component.py b/src/codemods/canonical/wrap_with_component/wrap_with_component.py index c5a8f0d45..6d2522553 100644 --- a/src/codemods/canonical/wrap_with_component/wrap_with_component.py +++ b/src/codemods/canonical/wrap_with_component/wrap_with_component.py @@ -1,9 +1,9 @@ -from codegen.sdk.codemod import Codemod3 from codegen.sdk.core.codebase import Codebase from codegen.sdk.enums import ProgrammingLanguage from codegen.sdk.skills.core.skill import Skill from codegen.sdk.skills.core.utils import skill, skill_impl from codegen.sdk.writer_decorators import canonical +from codemods.canonical.codemod import Codemod @skill( @@ -14,7 +14,7 @@ uid="216569d7-5c95-4cf0-bfd8-5b121c1e47cd", ) @canonical -class WrapWithComponentCodemod(Codemod3, Skill): +class WrapWithComponentCodemod(Codemod, Skill): """Wraps certain JSX elements with another component. Imports the component symbol. In particular, this: diff --git a/src/codemods/canonical/wrap_with_statement/wrap_with_statement.py b/src/codemods/canonical/wrap_with_statement/wrap_with_statement.py index b89f54d77..48c006675 100644 --- a/src/codemods/canonical/wrap_with_statement/wrap_with_statement.py +++ b/src/codemods/canonical/wrap_with_statement/wrap_with_statement.py @@ -1,9 +1,9 @@ -from codegen.sdk.codemod import Codemod3 from codegen.sdk.core.codebase import Codebase from codegen.sdk.enums import ProgrammingLanguage from codegen.sdk.skills.core.skill import Skill from codegen.sdk.skills.core.utils import skill, skill_impl from codegen.sdk.writer_decorators import canonical +from codemods.canonical.codemod import Codemod @skill( @@ -14,7 +14,7 @@ uid="345deafc-ac72-4537-8d13-ff27ac6e67f1", ) @canonical -class WrapWithStatement(Codemod3, Skill): +class WrapWithStatement(Codemod, Skill): """Wraps code blocks (that meet certain criteria) with a with statement. Before: diff --git a/tests/codemod/conftest.py b/tests/codemod/conftest.py index 82114d6ea..53539feb7 100644 --- a/tests/codemod/conftest.py +++ b/tests/codemod/conftest.py @@ -12,11 +12,11 @@ from codegen.git.repo_operator.local_repo_operator import LocalRepoOperator from codegen.git.repo_operator.repo_operator import RepoOperator from codegen.sdk.codebase.config import CodebaseConfig, GSFeatureFlags, ProjectConfig -from codegen.sdk.codemod import Codemod3 from codegen.sdk.core.codebase import Codebase from codegen.sdk.testing.constants import DIFF_FILEPATH from codegen.sdk.testing.models import BASE_PATH, BASE_TMP_DIR, VERIFIED_CODEMOD_DIFFS, CodemodMetadata, Repo, Size from codegen.sdk.testing.test_discovery import find_codemod_test_cases, find_repos, find_verified_codemod_cases +from codemods.canonical.codemod import Codemod from tests.utils.recursion import set_recursion_limit logger = logging.getLogger(__name__) @@ -194,13 +194,13 @@ def diff_folder(request): @pytest.fixture -def codemod(raw_codemod: type["Codemod"]): # noqa: F821 +def codemod(raw_codemod: type["Codemod"]): codemod = raw_codemod() return codemod @pytest.fixture -def verified_codemod(codemod_metadata: CodemodMetadata, expected: Path) -> YieldFixture[Codemod3]: +def verified_codemod(codemod_metadata: CodemodMetadata, expected: Path) -> YieldFixture[Codemod]: # write the diff to the file diff_path = expected diff_path.parent.mkdir(parents=True, exist_ok=True) diff --git a/tests/codemod/test_codemods.py b/tests/codemod/test_codemods.py index a7dece3b6..3626aeed1 100644 --- a/tests/codemod/test_codemods.py +++ b/tests/codemod/test_codemods.py @@ -4,9 +4,9 @@ import pytest from pytest_snapshot.plugin import Snapshot -from codegen.sdk.codemod import Codemod3 from codegen.sdk.core.codebase import Codebase from codegen.sdk.testing.models import BASE_PATH +from codemods.canonical.codemod import Codemod from tests.utils.codebase_comparison_utils import compare_codebase_diff DIFF_ROOT = BASE_PATH / ".diffs" @@ -14,7 +14,7 @@ @pytest.mark.timeout(120, func_only=True) -def test_codemods_cloned_repos(codemod: Codemod3, codebase: Codebase, expected: Path, tmp_path: Path, diff_folder: Path, snapshot: Snapshot) -> None: +def test_codemods_cloned_repos(codemod: Codemod, codebase: Codebase, expected: Path, tmp_path: Path, diff_folder: Path, snapshot: Snapshot) -> None: codemod.execute(codebase) codebase.commit(codebase.G.config.feature_flags.verify_graph) compare_codebase_diff(codebase=codebase, expected_dir=tmp_path, expected_diff=expected, diff_path=diff_folder, snapshot=snapshot) diff --git a/tests/codemod/test_verified_codemods.py b/tests/codemod/test_verified_codemods.py index ff1530e86..396631e15 100644 --- a/tests/codemod/test_verified_codemods.py +++ b/tests/codemod/test_verified_codemods.py @@ -5,9 +5,9 @@ import pytest from pytest_snapshot.plugin import Snapshot -from codegen.sdk.codemod import Codemod3 from codegen.sdk.core.codebase import Codebase from codegen.sdk.testing.models import BASE_PATH +from codemods.canonical.codemod import Codemod from tests.utils.codebase_comparison_utils import compare_codebase_diff from tests.utils.recursion import set_recursion_limit @@ -18,7 +18,7 @@ @pytest.mark.timeout(120, func_only=True) def test_verified_codemods( - verified_codemod: Codemod3, + verified_codemod: Codemod, codebase: Codebase, expected: Path, tmp_path: Path, diff --git a/tests/unit/test_codemod.py b/tests/unit/test_codemod.py index 0d42b51da..8281b8960 100644 --- a/tests/unit/test_codemod.py +++ b/tests/unit/test_codemod.py @@ -1,5 +1,5 @@ -from codegen.sdk.codemod import Codemod3 from codegen.sdk.core.codebase import Codebase +from codemods.canonical.codemod import Codemod def test_codemod_execute(): @@ -7,8 +7,8 @@ def sample_execute(codebase: Codebase): for file in codebase.files: file.content = "print('hello')" - codemod = Codemod3(name="sample_codemod", execute=sample_execute) + codemod = Codemod(name="sample_codemod", execute=sample_execute) assert id(codemod.execute) == id(sample_execute) - codemod = Codemod3(name="sample_codemod") + codemod = Codemod(name="sample_codemod") assert codemod.execute is None