Skip to content

Commit a16e219

Browse files
authored
Rename codemod3 + nit cleanup (#54)
# Motivation <!-- Why is this change necessary? --> # Content <!-- Please include a summary of the change --> # Testing <!-- How was the change tested? --> # Please check the following before marking your PR as ready for review - [x] I have added tests for my changes - [x] I have updated the documentation or added new documentation as needed - [x] I have read and agree to the [Contributor License Agreement](../CLA.md)
1 parent 73f46bc commit a16e219

File tree

58 files changed

+113
-125
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

58 files changed

+113
-125
lines changed

src/codegen/runner/sandbox/middlewares.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212

1313
from codegen.runner.models.apis import ServerInfo
1414
from codegen.runner.sandbox.runner import SandboxRunner
15-
from codegen.utils.compilation.exceptions import UserCodeException
15+
from codegen.utils.exceptions.compilation import UserCodeException
1616

1717
logger = logging.getLogger(__name__)
1818

src/codegen/sdk/code_generation/doc_utils/skills.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,14 @@
33
import inflection
44
from typing_extensions import deprecated
55

6-
from codegen.sdk.codemod import Codemod3
76
from codegen.sdk.core.codebase import Codebase
87
from codegen.sdk.enums import ProgrammingLanguage
98
from codegen.sdk.python import PyClass
109
from codegen.sdk.python.function import PyFunction
1110
from codegen.sdk.skills.core.skill import Skill
1211
from codegen.sdk.skills.core.skill_implementation import SkillImplementation
1312
from codegen.sdk.skills.core.utils import get_all_evaluation_skills
13+
from codemods.canonical.codemod import Codemod
1414

1515

1616
def remove_leading_tab_or_spaces(text: str) -> str:
@@ -108,7 +108,7 @@ def format_all_skills(skill_classes: list[Skill]) -> str:
108108

109109
# Step 2: Format each skill into an .mdx compatible string
110110
for skill in sorted_skills:
111-
if issubclass(skill, Codemod3):
111+
if issubclass(skill, Codemod):
112112
continue
113113
sk_inst = skill
114114
formatted_skills.append(sk_inst.generate_snippet(skill_doc=True))

src/codegen/sdk/exceptions.py

Lines changed: 0 additions & 10 deletions
This file was deleted.

src/codegen/sdk/python/statements/attribute.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@
66
from codegen.sdk.core.autocommit import reader
77
from codegen.sdk.core.interfaces.editable import Editable
88
from codegen.sdk.core.statements.attribute import Attribute
9-
from codegen.sdk.exceptions import APINotApplicableForLanguageError
109
from codegen.sdk.python.assignment import PyAssignment
1110
from codegen.sdk.python.statements.assignment_statement import PyAssignmentStatement
1211
from codegen.utils.decorators.docs import noapidoc, py_apidoc
12+
from codegen.utils.exceptions.api import APINotApplicableForLanguageError
1313

1414
if TYPE_CHECKING:
1515
from codegen.sdk.python.class_definition import PyClass

src/codegen/sdk/testing/models.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
except (FileNotFoundError, json.decoder.JSONDecodeError):
3030
REPO_ID_TO_URL = {}
3131
if TYPE_CHECKING:
32-
from codegen.sdk.codemod import Codemod3
32+
from codemods.canonical.codemod import Codemod
3333

3434

3535
@unique
@@ -78,7 +78,7 @@ def to_op(self, name: str, token: str | None) -> LocalRepoOperator:
7878

7979
@dataclass
8080
class CodemodMetadata:
81-
codemod: type["Codemod3"]
81+
codemod: type["Codemod"]
8282
category: str
8383
directory: Path
8484
company: str | None = None

src/codegen/sdk/testing/test_discovery.py

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,20 +5,16 @@
55
import textwrap
66
from collections.abc import Generator, Iterator
77
from pathlib import Path
8-
from typing import TYPE_CHECKING
98

109
import emoji
1110
from loguru import logger
1211

1312
from codegen.gscli.generate.runner_imports import get_runner_imports
14-
from codegen.sdk.codemod import Codemod3
1513
from codegen.sdk.enums import ProgrammingLanguage
1614
from codegen.sdk.testing.constants import DIFF_FILEPATH
1715
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
1816
from codegen.sdk.testing.verified_codemod_utils import CodemodAPI, RepoCodemodMetadata, SkillTestConfig, anonymize_id
19-
20-
if TYPE_CHECKING:
21-
pass
17+
from codemods.canonical.codemod import Codemod
2218

2319

2420
def find_repos(
@@ -65,7 +61,7 @@ def codemods_from_dir(codemod_dir: Path) -> Iterator[CodemodMetadata]:
6561
import_path = str(relative).removeprefix("src/").replace("/", ".")
6662
mod = importlib.import_module(import_path)
6763
for name, value in inspect.getmembers(mod, inspect.isclass):
68-
if issubclass(value, Codemod3) and name != "Codemod3":
64+
if issubclass(value, Codemod) and name != "Codemod":
6965
yield CodemodMetadata(codemod=value, category=codemod_dir.parent.name, directory=codemod_dir)
7066

7167

@@ -163,7 +159,7 @@ def generate_codemod_test_cases(repo: Repo, codemods: list[CodemodMetadata], cod
163159
# add the execute method to the codemod
164160
execute_func = create_function_from_string("execute", codemod_data)
165161
name = escape_codemod_name(codemod_data.name) + "-" + str(codemod_data.codemod_id)
166-
codemod = Codemod3(name=name, execute=execute_func)
162+
codemod = Codemod(name=name, execute=execute_func)
167163

168164
codemod_metadata = CodemodMetadata(
169165
codemod=codemod,

src/codegen/utils/compilation/codeblock_validation.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import re
22

3-
from codegen.utils.compilation.exceptions import DangerousUserCodeException
3+
from codegen.utils.exceptions.compilation import DangerousUserCodeException
44

55

66
def check_for_dangerous_operations(user_code: str) -> None:

src/codegen/utils/compilation/function_compilation.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import traceback
55
from collections.abc import Callable
66

7-
from codegen.utils.compilation.exceptions import InvalidUserCodeException
7+
from codegen.utils.exceptions.compilation import InvalidUserCodeException
88

99
logger = logging.getLogger(__name__)
1010

src/codegen/utils/exceptions/api.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
class APINotApplicableForLanguageError(Exception):
2+
pass

src/codemods/canonical/add_function_parameter_type_annotations/add_function_parameter_type_annotations.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
from codegen.sdk.codemod import Codemod3
21
from codegen.sdk.core.codebase import Codebase
32
from codegen.sdk.enums import ProgrammingLanguage
43
from codegen.sdk.skills.core.skill import Skill
54
from codegen.sdk.skills.core.utils import skill, skill_impl
65
from codegen.sdk.writer_decorators import canonical
6+
from codemods.canonical.codemod import Codemod
77

88

99
@skill(
@@ -14,7 +14,7 @@
1414
uid="d62a3590-14ef-4759-853c-39c5cf755ce5",
1515
)
1616
@canonical
17-
class AddFunctionParameterTypeAnnotations(Codemod3, Skill):
17+
class AddFunctionParameterTypeAnnotations(Codemod, Skill):
1818
"""Adds type annotation for function parameters that takes in a 'db' parameter, which is a `SessionLocal` from `app.db`.
1919
It also adds the necessary import if not already present.
2020

src/codemods/canonical/add_internal_to_non_exported_components/add_internal_to_non_exported_components.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
from codegen.sdk.codemod import Codemod3
21
from codegen.sdk.core.codebase import Codebase
32
from codegen.sdk.enums import ProgrammingLanguage
43
from codegen.sdk.skills.core.skill import Skill
54
from codegen.sdk.skills.core.utils import skill, skill_impl
65
from codegen.sdk.writer_decorators import canonical
6+
from codemods.canonical.codemod import Codemod
77

88

99
@skill(
@@ -13,7 +13,7 @@
1313
uid="302d8f7c-c848-4020-9dea-30e8e622d709",
1414
)
1515
@canonical
16-
class AddInternalToNonExportedComponents(Codemod3, Skill):
16+
class AddInternalToNonExportedComponents(Codemod, Skill):
1717
"""This codemod renames all React function components that are not exported from their file to be suffixed with 'Internal'.
1818
1919
Example:

src/codemods/canonical/bang_bang_to_boolean/bang_bang_to_boolean.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
from codegen.sdk.codemod import Codemod3
21
from codegen.sdk.core.codebase import Codebase
32
from codegen.sdk.enums import ProgrammingLanguage
43
from codegen.sdk.skills.core.skill import Skill
54
from codegen.sdk.skills.core.utils import skill, skill_impl
65
from codegen.sdk.writer_decorators import canonical
6+
from codemods.canonical.codemod import Codemod
77

88

99
@skill(
@@ -14,7 +14,7 @@
1414
uid="d1ece8d3-7da9-4696-9288-4087737e2952",
1515
)
1616
@canonical
17-
class BangBangToBoolean(Codemod3, Skill):
17+
class BangBangToBoolean(Codemod, Skill):
1818
"""This codemod converts !!(expression) to Boolean(expression)"""
1919

2020
language = ProgrammingLanguage.TYPESCRIPT

src/codemods/canonical/built_in_type_annotation/built_in_type_annotation.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
from codegen.sdk.codemod import Codemod3
21
from codegen.sdk.core.codebase import Codebase
32
from codegen.sdk.enums import ProgrammingLanguage
43
from codegen.sdk.skills.core.skill import Skill
54
from codegen.sdk.skills.core.utils import skill, skill_impl
65
from codegen.sdk.writer_decorators import canonical
6+
from codemods.canonical.codemod import Codemod
77

88

99
@skill(
@@ -14,7 +14,7 @@
1414
uid="b2cd98af-d3c5-4e45-b396-e7abf06df924",
1515
)
1616
@canonical
17-
class BuiltInTypeAnnotation(Codemod3, Skill):
17+
class BuiltInTypeAnnotation(Codemod, Skill):
1818
"""Replaces type annotations using typing module with builtin types.
1919
2020
Examples:

src/codemods/canonical/change_component_tag_names/change_component_tag_names.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
from codegen.sdk.codemod import Codemod3
21
from codegen.sdk.core.codebase import Codebase
32
from codegen.sdk.enums import ProgrammingLanguage
43
from codegen.sdk.skills.core.skill import Skill
54
from codegen.sdk.skills.core.utils import skill, skill_impl
65
from codegen.sdk.writer_decorators import canonical
6+
from codemods.canonical.codemod import Codemod
77

88

99
@skill(
@@ -14,7 +14,7 @@
1414
uid="ab5879e3-e3ea-4231-b928-b756473f290d",
1515
)
1616
@canonical
17-
class ChangeJSXElementName(Codemod3, Skill):
17+
class ChangeJSXElementName(Codemod, Skill):
1818
"""This codemod updates specific JSX elements inside of React components
1919
2020
In particular, this:

src/codemods/canonical/classnames_to_backtick.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
from codegen.sdk.codemod import Codemod3
21
from codegen.sdk.core.codebase import Codebase
32
from codegen.sdk.enums import ProgrammingLanguage
43
from codegen.sdk.skills.core.skill import Skill
54
from codegen.sdk.skills.core.utils import skill, skill_impl
65
from codegen.sdk.writer_decorators import canonical
6+
from codemods.canonical.codemod import Codemod
77

88

99
@skill(
@@ -14,7 +14,7 @@
1414
uid="bf22f4d7-a93a-458f-be78-470c24487d4c",
1515
)
1616
@canonical
17-
class ClassNamesToBackTick(Codemod3, Skill):
17+
class ClassNamesToBackTick(Codemod, Skill):
1818
"""This Codemod converts all `classNames="..."` props in JSX elements to use backticks.
1919
2020
Example:

src/codegen/sdk/codemod.py renamed to src/codemods/canonical/codemod.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from collections.abc import Callable
22

33

4-
class Codemod3:
4+
class Codemod:
55
execute: Callable | None = None
66

77
def __init__(self, name: str | None = None, execute: Callable | None = None, *args, **kwargs):

src/codemods/canonical/convert_array_type_to_square_bracket/convert_array_type_to_square_bracket.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
from codegen.sdk.codemod import Codemod3
21
from codegen.sdk.core.codebase import Codebase
32
from codegen.sdk.core.expressions.generic_type import GenericType
43
from codegen.sdk.enums import ProgrammingLanguage
54
from codegen.sdk.skills.core.skill import Skill
65
from codegen.sdk.skills.core.utils import skill, skill_impl
76
from codegen.sdk.writer_decorators import canonical
7+
from codemods.canonical.codemod import Codemod
88

99

1010
@skill(
@@ -15,7 +15,7 @@
1515
uid="97184a15-5992-405b-be7b-30122556fe8b",
1616
)
1717
@canonical
18-
class ConvertArrayTypeToSquareBracket(Codemod3, Skill):
18+
class ConvertArrayTypeToSquareBracket(Codemod, Skill):
1919
"""This codemod converts types of the form `Array<T>` to `T[]`, while avoiding edge cases like nested Array types"""
2020

2121
language = ProgrammingLanguage.TYPESCRIPT

src/codemods/canonical/convert_attribute_to_decorator/convert_attribute_to_decorator.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
from codegen.sdk.codemod import Codemod3
21
from codegen.sdk.core.codebase import Codebase
32
from codegen.sdk.enums import ProgrammingLanguage
43
from codegen.sdk.skills.core.skill import Skill
54
from codegen.sdk.skills.core.utils import skill, skill_impl
65
from codegen.sdk.writer_decorators import canonical
6+
from codemods.canonical.codemod import Codemod
77

88

99
@skill(
@@ -14,7 +14,7 @@
1414
uid="b200fb43-dad4-4241-a0b2-75a6fbf5aca6",
1515
)
1616
@canonical
17-
class ConvertAttributeToDecorator(Codemod3, Skill):
17+
class ConvertAttributeToDecorator(Codemod, Skill):
1818
"""This converts any class attributes that initializes a set of Session objects to a decorator.
1919
2020
For example, before:

src/codemods/canonical/convert_comments_to_JSDoc_style/convert_comments_to_JSDoc_style.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
from codegen.sdk.codemod import Codemod3
21
from codegen.sdk.core.codebase import Codebase
32
from codegen.sdk.enums import ProgrammingLanguage
43
from codegen.sdk.skills.core.skill import Skill
54
from codegen.sdk.skills.core.utils import skill, skill_impl
65
from codegen.sdk.writer_decorators import canonical
6+
from codemods.canonical.codemod import Codemod
77

88

99
@skill(
@@ -15,7 +15,7 @@
1515
uid="846a3894-b534-4de2-9810-94bc691a5687",
1616
)
1717
@canonical
18-
class ConvertCommentsToJSDocStyle(Codemod3, Skill):
18+
class ConvertCommentsToJSDocStyle(Codemod, Skill):
1919
"""This codemod converts the comments on any exported function or class to JSDoc style if they aren't already in JSDoc style.
2020
2121
A JSDoc style comment is one that uses /** */ instead of //

src/codemods/canonical/convert_docstring_to_google_style/convert_docstring_to_google_style.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,21 @@
1-
from codegen.sdk.codemod import Codemod3
21
from codegen.sdk.core.codebase import Codebase
32
from codegen.sdk.enums import ProgrammingLanguage
43
from codegen.sdk.skills.core.skill import Skill
54
from codegen.sdk.skills.core.utils import skill, skill_impl
65
from codegen.sdk.writer_decorators import canonical
6+
from codemods.canonical.codemod import Codemod
77

88

99
@skill(
1010
canonical=True,
11-
prompt="""Generate a Python codemod class named `ConvertDocstringToGoogleStyle` that inherits from `Codemod3` and `Skill`. The class should have a docstring
11+
prompt="""Generate a Python codemod class named `ConvertDocstringToGoogleStyle` that inherits from `Codemod` and `Skill`. The class should have a docstring
1212
explaining its purpose: converting docstrings of functions and classes to Google style if they aren't already. The `execute` method should iterate
1313
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
1414
`to_google_docstring`.""",
1515
uid="99da3cd9-6ba8-4a4e-8ceb-8c1b2a60562d",
1616
)
1717
@canonical
18-
class ConvertDocstringToGoogleStyle(Codemod3, Skill):
18+
class ConvertDocstringToGoogleStyle(Codemod, Skill):
1919
"""This codemod converts docstrings on any function or class to Google docstring style if they aren't already.
2020
2121
A Google docstring style is one that specifies the args, return value, and raised exceptions in a structured format.

src/codemods/canonical/delete_unused_functions/delete_unused_functions.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
from codegen.sdk.codemod import Codemod3
21
from codegen.sdk.core.codebase import Codebase
32
from codegen.sdk.enums import ProgrammingLanguage
43
from codegen.sdk.skills.core.skill import Skill
54
from codegen.sdk.skills.core.utils import skill, skill_impl
65
from codegen.sdk.writer_decorators import canonical
6+
from codemods.canonical.codemod import Codemod
77

88

99
@skill(
@@ -14,7 +14,7 @@
1414
uid="4024ceb5-54de-49de-b8f5-122ca2d3a6ee",
1515
)
1616
@canonical
17-
class DeleteUnusedFunctionsCodemod(Codemod3, Skill):
17+
class DeleteUnusedFunctionsCodemod(Codemod, Skill):
1818
"""This Codemod deletes all functions that are not used in the codebase (no usages).
1919
In general, when deleting unused things, it's good practice to check both usages and call-sites, even though
2020
call-sites should be basically a subset of usages (every call-site should correspond to a usage).

src/codemods/canonical/emojify_py_files_codemod/emojify_py_files_codemod.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,20 @@
1-
from codegen.sdk.codemod import Codemod3
21
from codegen.sdk.core.codebase import Codebase
32
from codegen.sdk.enums import ProgrammingLanguage
43
from codegen.sdk.skills.core.skill import Skill
54
from codegen.sdk.skills.core.utils import skill, skill_impl
65
from codegen.sdk.writer_decorators import canonical
6+
from codemods.canonical.codemod import Codemod
77

88

99
@skill(
1010
canonical=True,
1111
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
12-
codemod should be implemented in the `execute` function of the `EmojifyPyFilesCodemod` class, which inherits from `Codemod3` and `Skill`. Ensure that
12+
codemod should be implemented in the `execute` function of the `EmojifyPyFilesCodemod` class, which inherits from `Codemod` and `Skill`. Ensure that
1313
the new content for each file starts with the comment '#🌈' followed by the original content of the file.""",
1414
uid="5d8f1994-7f74-42e8-aaa8-0c41ced228ef",
1515
)
1616
@canonical
17-
class EmojifyPyFilesCodemod(Codemod3, Skill):
17+
class EmojifyPyFilesCodemod(Codemod, Skill):
1818
"""Trivial codemod to add a rainbow emoji in a comment at the beginning of all Python files."""
1919

2020
language = ProgrammingLanguage.PYTHON

0 commit comments

Comments
 (0)