diff --git a/.circleci/config.yml b/.circleci/config.yml index 1848164cb..51d55caac 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -61,7 +61,7 @@ commands: if [ "<>" = "true" ]; then EXTRA_REPOS_ARG="--extra-repos" fi - uv run --frozen gs codemod clone-repos ${EXTRA_REPOS_ARG} --token ${CODEGEN_BOT_GHE_TOKEN} --clean-cache + uv run --frozen python -m tests.shared.codemod.commands clone-repos ${EXTRA_REPOS_ARG} --token ${CODEGEN_BOT_GHE_TOKEN} --clean-cache - save_cache: paths: - $GITHUB_WORKSPACE @@ -70,7 +70,7 @@ commands: steps: - run: command: | - uv run --frozen gs codemod fetch-verified-codemods --cli-api-key ${PROD_CLI_API_KEY} + uv run --frozen python -m tests.shared.codemod.commands fetch-verified-codemods --cli-api-key ${PROD_CLI_API_KEY} cache-verified-codemod-repos: steps: - restore_cache: @@ -78,7 +78,7 @@ commands: - v1-verified-codemod-repos-{{ checksum "tests/integration/verified_codemods/codemod_data/repo_commits.json" }}-{{.Environment.CIRCLE_NODE_INDEX}}-{{.Environment.CIRCLE_NODE_TOTAL}} - run: command: | - uv run --frozen gs codemod clone-repos --verified-codemod-repos --token ${CODEGEN_BOT_GHE_TOKEN} + uv run --frozen python -m tests.shared.codemod.commands clone-repos --verified-codemod-repos --token ${CODEGEN_BOT_GHE_TOKEN} - save_cache: paths: - $GITHUB_WORKSPACE diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 301e09986..41de13667 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -19,7 +19,7 @@ repos: hooks: - id: biome-check additional_dependencies: ["@biomejs/biome@1.9.4"] - exclude: (src/codemods/eval)|(tests/unit/codegen/sdk/skills)|(tests/unit/codegen/sdk/output)|(tests/integration/verified_codemods)|(docs/samples) + exclude: (src/codemods/eval)|(tests/unit/skills/snapshots)|(tests/unit/codegen/sdk/output)|(tests/integration/verified_codemods)|(docs/samples) - repo: https://github.com/MarcoGorelli/cython-lint rev: v0.16.6 diff --git a/Dockerfile b/Dockerfile index 15a5a1ef2..fc5dd8e61 100644 --- a/Dockerfile +++ b/Dockerfile @@ -34,7 +34,7 @@ RUN --mount=type=cache,target=/root/.cache/uv \ uv run pre-commit install-hooks FROM base-image AS extra-repos ARG CODEGEN_BOT_GHE_TOKEN="" -RUN uv run gs codemod clone-repos --clean-cache --extra-repos --token ${CODEGEN_BOT_GHE_TOKEN} +RUN uv run python -m tests.shared.codemod.commands clone-repos --clean-cache --extra-repos --token ${CODEGEN_BOT_GHE_TOKEN} FROM base-image AS oss-repos ARG CODEGEN_BOT_GHE_TOKEN="" -RUN uv run gs codemod clone-repos --clean-cache --token ${CODEGEN_BOT_GHE_TOKEN} +RUN uv run python -m tests.shared.codemod.commands clone-repos --clean-cache --token ${CODEGEN_BOT_GHE_TOKEN} diff --git a/conftest.py b/conftest.py index 0e6da30b0..526d5eeb6 100644 --- a/conftest.py +++ b/conftest.py @@ -1,7 +1,7 @@ import logging import os -from codegen.sdk.testing.models import Size +from tests.shared.codemod.models import Size def find_dirs_to_ignore(start_dir, prefix): diff --git a/mypy.ini b/mypy.ini index 4f89d4127..5d62d120b 100644 --- a/mypy.ini +++ b/mypy.ini @@ -46,7 +46,7 @@ exclude = (?x)( | scripts/.* | .*/codemods/.*/test_.*/ | ^/expected/ - | src/codegen/sdk/skills/* + | tests/unit/skills/snapshots/* ) plugins = pydantic.mypy diff --git a/pyproject.toml b/pyproject.toml index a594030c6..22cab4782 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -23,19 +23,14 @@ dependencies = [ "networkx>=3.4.1", "wrapt<2.0.0,>=1.16.0", "pyright<2.0.0,>=1.1.372", - "jsbeautifier<2.0.0,>=1.15.1", "watchfiles<1.1.0,>=1.0.0", "loguru<1.0.0,>=0.7.2", "rich<14.0.0,>=13.7.1", - "inflection<1.0.0,>=0.5.1", "pydantic<3.0.0,>=2.9.2", "docstring-parser<1.0,>=0.16", "plotly<6.0.0,>=5.24.0", "humanize<5.0.0,>=4.10.0", - "autoflake>=2.3.1", - "black>=24.8.0", "pytest-snapshot>=0.9.0", - "isort>=5.13.2", "anthropic==0.23.1", "pyjson5==1.6.8", "mini-racer>=0.12.4", @@ -52,7 +47,6 @@ dependencies = [ "hatchling>=1.25.0", "pyinstrument>=5.0.0", "pip>=24.3.1", # This is needed for some NPM/YARN/PNPM post-install scripts to work! - "emoji>=2.14.0", "rich-click>=1.8.5", "python-dotenv>=1.0.1", "giturlparse", @@ -110,6 +104,12 @@ dev-dependencies = [ "deptry>=0.22.0", "cibuildwheel[uv]>=2.22.0", "sybil[pytest]>=9.0.0", + "jsbeautifier<2.0.0,>=1.15.1", + "inflection<1.0.0,>=0.5.1", + "autoflake>=2.3.1", + "black>=24.8.0", + "isort>=5.13.2", + "emoji>=2.14.0", ] keyring-provider = "subprocess" #extra-index-url = ["https://aws@codegen-922078275900.d.codeartifact.us-east-1.amazonaws.com/pypi/codegen/simple/"] diff --git a/src/codegen/gscli/generate/commands.py b/src/codegen/gscli/generate/commands.py index e1cdd5a83..cdc24944a 100644 --- a/src/codegen/gscli/generate/commands.py +++ b/src/codegen/gscli/generate/commands.py @@ -5,17 +5,13 @@ import shutil import click -import inflection from termcolor import colored from codegen.gscli.generate.runner_imports import _generate_runner_imports from codegen.gscli.generate.utils import LanguageType, generate_builtins_file from codegen.sdk.code_generation.codegen_sdk_codebase import get_codegen_sdk_codebase from codegen.sdk.code_generation.doc_utils.generate_docs_json import generate_docs_json -from codegen.sdk.code_generation.doc_utils.skills import format_all_skills from codegen.sdk.code_generation.mdx_docs_generation import render_mdx_page_for_class -from codegen.sdk.python import PyClass -from codegen.sdk.skills.core.utils import get_all_skills, get_guide_skills_dict logger = logging.getLogger(__name__) @@ -113,26 +109,6 @@ def generate_docs(docs_dir: str) -> None: # generate_guides(docs_dir) -def generate_guides(docs_dir: str): - """Updates code snippets in the guides with the latest skill implementations""" - guide_skills = get_guide_skills_dict() - for guide_relative_path in guide_skills: - guide_file_path = os.path.join(docs_dir, "api-reference", str(guide_relative_path) + ".mdx") - - with open(guide_file_path) as f: - file_content = f.read() - - for skill in guide_skills[guide_relative_path]: - # Perform the regex search and replace - target_name = inflection.camelize(skill.name) - pattern = get_snippet_pattern(target_name) - replacement = f"[//]: # (--{target_name}--)\n[//]: # (--{AUTO_GENERATED_COMMENT}--)\n\n{skill.generate_snippet()}" - file_content = re.sub(pattern, replacement, file_content, flags=re.DOTALL) - - with open(guide_file_path, "w") as f: - f.write(file_content) - - def get_snippet_pattern(target_name: str) -> str: pattern = rf"\[//\]: # \(--{re.escape(target_name)}--\)\s*(?:\[//\]: # \(--{re.escape(AUTO_GENERATED_COMMENT)}--\)\s*)?" pattern += CODE_SNIPPETS_REGEX @@ -210,29 +186,3 @@ def generate_codegen_sdk_docs(docs_dir: str) -> None: json.dump(mint_data, mint_file, indent=2) print(colored("Updated mint.json with new page sets", "green")) - - -def generate_skills_docs(docs_dir: str) -> None: - """Generates docs for all skills""" - print(colored("Generating skills docs", "green")) - # Interim Modification: We need to refactor all skills - skills = [skill for skill in get_all_skills() if not skill.guide] - skills_doc = format_all_skills(skills) - - # =====[ Write the skills docs to the file system ]===== - core_dir = os.path.join(docs_dir, "codebase-sdk", "examples") - file_path = os.path.join(core_dir, "skills.mdx") - print(colored(f"> Writing to {file_path}", "green")) - open(file_path, "w").write(skills_doc) - - -def document_skill(skill: PyClass): - return "skill" in [decorator.name for decorator in skill.decorators] - - -def filter_class(cls: PyClass): - for method in cls.methods: - for decorator in method.decorators: - if decorator.name == "skill_impl" and "external=True" in decorator.source: - return True - return False diff --git a/src/codegen/gscli/main.py b/src/codegen/gscli/main.py index 9f5fbdaf4..de43fa7dd 100644 --- a/src/codegen/gscli/main.py +++ b/src/codegen/gscli/main.py @@ -3,7 +3,6 @@ import click -from codegen.gscli.codemod.commands import codemod from codegen.gscli.generate.commands import generate @@ -13,7 +12,6 @@ def cli() -> None: # ============= Import all command groups ============= -cli.add_command(codemod) cli.add_command(generate) diff --git a/src/codegen/sdk/code_generation/doc_utils/skills.py b/src/codegen/sdk/code_generation/doc_utils/skills.py deleted file mode 100644 index 2f5ee926e..000000000 --- a/src/codegen/sdk/code_generation/doc_utils/skills.py +++ /dev/null @@ -1,169 +0,0 @@ -import textwrap - -import inflection -from typing_extensions import deprecated - -from codegen.sdk.core.codebase import Codebase -from codegen.sdk.enums import ProgrammingLanguage -from codegen.sdk.python import PyClass -from codegen.sdk.python.function import PyFunction -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.codemod import Codemod - - -def remove_leading_tab_or_spaces(text: str) -> str: - """Removes the leading tab or four spaces from the first line of a string.""" - lines = text.splitlines() - out_lines = [] - for line in lines: - if line.startswith("\t"): - out_lines.append(line[1:]) - elif line.startswith(" "): - out_lines.append(line[4:]) - return "\n".join(out_lines) - - -def format_skill_function_mdx(skill: PyFunction, name: str | None = None, dedent: bool = False) -> str: - """Returns a .mdx for a skill implementation""" - if name is None: - name = skill.name - docstring = skill.docstring - docstring = skill.docstring.source if docstring else "" - raw_docstring = docstring.replace('"""', "") - raw_source = skill.code_block.source.replace(docstring, "") - raw_source = remove_leading_tab_or_spaces(raw_source) - if dedent: - raw_source = textwrap.dedent(raw_source) - return f"""## {name} -{raw_docstring} -```python -{raw_source} -```""" - - -def format_skill_code_group_mdx(skill: PyFunction, name: str | None = None, dedent: bool = False) -> str: - """Returns a .mdx for a skill code group. See https://mintlify.com/docs/content/components/code-groups""" - if name is None: - name = skill.name - if skill is None: - raise ValueError(f"Skill is None. name: {name}") - docstring = skill.docstring - docstring = skill.docstring.source if docstring else "" - raw_docstring = docstring.replace('"""', "") - raw_source = skill.code_block.source.replace(docstring, "") - raw_source = remove_leading_tab_or_spaces(raw_source) - if dedent: - raw_source = textwrap.dedent(raw_source) - return raw_source - - -def get_skill_function(skill: PyClass, skill_func_name: str) -> PyFunction: - python_skill_func = skill.get_method(skill_func_name) - if python_skill_func.code_block.source.strip() == "...": - if skill.get_method("skill_func").code_block.source.strip() != "...": - python_skill_func = skill.get_method("skill_func") - elif skill.get_method("execute").code_block.source.strip() != "...": - python_skill_func = skill.get_method("execute") - return python_skill_func - - -def format_skill_class_mdx(skill: PyClass) -> str: - """Returns a .mdx for a skill""" - name = inflection.underscore(skill.name) - docstring = skill.docstring - docstring = skill.docstring.source if docstring else "" - raw_docstring = docstring.replace('"""', "") - raw_source = skill.code_block.source.replace(docstring, "") - raw_source = remove_leading_tab_or_spaces(raw_source) - raw_source = textwrap.dedent(raw_source) - - python_skill_func = get_skill_function(skill, "python_skill_func") - typescript_skill_func = get_skill_function(skill, "typescript_skill_func") - - return f""" -## {name} - -{raw_docstring} - - - -```python python -{format_skill_code_group_mdx(python_skill_func, name=f"{name}_python", dedent=True)} -``` - -```python typescript -{format_skill_code_group_mdx(typescript_skill_func, name=f"{name}_typescript", dedent=True)} -``` - -""" - - -def format_all_skills(skill_classes: list[Skill]) -> str: - """Returns a string of .mdx for all skills""" - # Step 1: Sort all skills by name so they appear in alpha order in the docs - sorted_skills = sorted(skill_classes, key=lambda x: x.name) - formatted_skills = [] - - # Step 2: Format each skill into an .mdx compatible string - for skill in sorted_skills: - if issubclass(skill, Codemod): - continue - sk_inst = skill - formatted_skills.append(sk_inst.generate_snippet(skill_doc=True)) - - # Step 3: Render full .mdx skills page - return f"""--- -title: "Skills" -sidebarTitle: "Skills" -description: "Common GraphSitter code snippets" ---- - -{"\n\n".join(formatted_skills)} -""" - - -@deprecated("Generating skills docs no longer requires ") -def get_skill_functions(codebase: Codebase, language: ProgrammingLanguage) -> list[PyFunction]: - return [c for c in codebase.functions if any(["@skill_impl" in d.source for d in c.decorators])] - - -@deprecated("Generating skills docs no longer requires ") -def get_skill_classes(codebase: Codebase, language: ProgrammingLanguage) -> list[PyClass]: - return [c for c in codebase.classes if any(["@skill" in d.source for d in c.decorators])] - - -@deprecated("Generating skills docs no longer requires ") -def get_skills_docstring(codebase: Codebase, language: ProgrammingLanguage) -> str: - """Idea here is to perform some sort of RAG and return the skills in a markdown format""" - skill_functions = get_skill_functions(codebase, language) - skill_classes = get_skill_classes(codebase, language) - skillz = format_all_skills(skill_functions, skill_classes) - return f"""### Skills - -{skillz} -""" - - -def get_formatted_skills() -> str: - """Format a list of SkillImplementations to mdx. Used to avoid reloading """ - skills: list[SkillImplementation] = get_all_evaluation_skills() - formatted_skills = [] - for skill in skills: - skill_str = f"""### {skill.name} -{skill.doc} -```python -{skill.function_body} -```""" - formatted_skills.append(skill_str) - - return f"""## Skills ---- -title: "Skills" -sidebarTitle: "Skills" -description: "Common GraphSitter code snippets" ---- - -{"\n\n".join(formatted_skills)} -""" diff --git a/src/codegen/sdk/skills/core/__init__.py b/src/codegen/sdk/skills/core/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/src/codegen/sdk/skills/utils/__init__.py b/src/codegen/sdk/skills/utils/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/src/codegen/sdk/testing/__init__.py b/src/codegen/sdk/testing/__init__.py deleted file mode 100644 index e69de29bb..000000000 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 33197f335..0f15a6d4a 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.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.codemod import Codemod +from tests.shared.skills.decorators import skill, skill_impl +from tests.shared.skills.skill import Skill @skill( 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 ce8cf1ae7..e6650dc7b 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.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.codemod import Codemod +from tests.shared.skills.decorators import skill, skill_impl +from tests.shared.skills.skill import Skill @skill( 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 daf562148..9de7c88fa 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.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.codemod import Codemod +from tests.shared.skills.decorators import skill, skill_impl +from tests.shared.skills.skill import Skill @skill( 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 83a96160a..433ed9608 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.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.codemod import Codemod +from tests.shared.skills.decorators import skill, skill_impl +from tests.shared.skills.skill import Skill @skill( 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 d8ad708d8..6a013c9b8 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.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.codemod import Codemod +from tests.shared.skills.decorators import skill, skill_impl +from tests.shared.skills.skill import Skill @skill( diff --git a/src/codemods/canonical/classnames_to_backtick.py b/src/codemods/canonical/classnames_to_backtick.py index 25e014331..7711faf20 100644 --- a/src/codemods/canonical/classnames_to_backtick.py +++ b/src/codemods/canonical/classnames_to_backtick.py @@ -1,9 +1,9 @@ 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.codemod import Codemod +from tests.shared.skills.decorators import skill, skill_impl +from tests.shared.skills.skill import Skill @skill( 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 28ab61383..4c449c7e2 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.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.codemod import Codemod +from tests.shared.skills.decorators import skill, skill_impl +from tests.shared.skills.skill import Skill @skill( 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 65f74592d..6c0343479 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.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.codemod import Codemod +from tests.shared.skills.decorators import skill, skill_impl +from tests.shared.skills.skill import Skill @skill( 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 9a1b10537..a4996fb17 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.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.codemod import Codemod +from tests.shared.skills.decorators import skill, skill_impl +from tests.shared.skills.skill import Skill @skill( 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 207b7e064..d371893cf 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,9 +1,9 @@ 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.codemod import Codemod +from tests.shared.skills.decorators import skill, skill_impl +from tests.shared.skills.skill import Skill @skill( 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 6f1fd5ee1..1d474a298 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.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.codemod import Codemod +from tests.shared.skills.decorators import skill, skill_impl +from tests.shared.skills.skill import Skill @skill( 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 8590b4294..11f3a5ef0 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,9 +1,9 @@ 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.codemod import Codemod +from tests.shared.skills.decorators import skill, skill_impl +from tests.shared.skills.skill import Skill @skill( diff --git a/src/codemods/canonical/enum_mover/enum_mover.py b/src/codemods/canonical/enum_mover/enum_mover.py index 9fa799806..2a6522fa1 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.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.codemod import Codemod +from tests.shared.skills.decorators import skill, skill_impl +from tests.shared.skills.skill import Skill @skill( 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 5efda2420..f37c91122 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.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.codemod import Codemod +from tests.shared.skills.decorators import skill, skill_impl +from tests.shared.skills.skill import Skill @skill( 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 105324e4a..a2c28e236 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.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.codemod import Codemod +from tests.shared.skills.decorators import skill, skill_impl +from tests.shared.skills.skill import Skill @skill( 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 794fc7d6b..3ed266d64 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.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.codemod import Codemod +from tests.shared.skills.decorators import skill, skill_impl +from tests.shared.skills.skill import Skill @skill( 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 272e61258..71d2bb456 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 @@ -2,10 +2,10 @@ 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.codemod import Codemod +from tests.shared.skills.decorators import skill, skill_impl +from tests.shared.skills.skill import Skill @skill( 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 2e466fb85..9de1e717a 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.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.codemod import Codemod +from tests.shared.skills.decorators import skill, skill_impl +from tests.shared.skills.skill import Skill @skill( 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 7d8c4a33d..f744304e9 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.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.codemod import Codemod +from tests.shared.skills.decorators import skill, skill_impl +from tests.shared.skills.skill import Skill @skill( 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 fdf8c58e9..449db2168 100644 --- a/src/codemods/canonical/migrate_class_attributes/migrate_class_attributes.py +++ b/src/codemods/canonical/migrate_class_attributes/migrate_class_attributes.py @@ -3,10 +3,10 @@ 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.codemod import Codemod +from tests.shared.skills.decorators import skill, skill_impl +from tests.shared.skills.skill import Skill logger = logging.getLogger(__name__) 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 d875473e6..6d79b7b7c 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.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.codemod import Codemod +from tests.shared.skills.decorators import skill, skill_impl +from tests.shared.skills.skill import Skill @skill( 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 1e7904ab3..a888f7002 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.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.codemod import Codemod +from tests.shared.skills.decorators import skill, skill_impl +from tests.shared.skills.skill import Skill @skill( 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 309862f99..945f316c5 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 @@ -2,10 +2,10 @@ from codegen.sdk.core.detached_symbols.decorator import Decorator from codegen.sdk.core.symbol import Symbol 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.codemod import Codemod +from tests.shared.skills.decorators import skill, skill_impl +from tests.shared.skills.skill import Skill @skill( 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 eba78a889..f7247f439 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 @@ -2,10 +2,10 @@ from codegen.sdk.core.detached_symbols.decorator import Decorator from codegen.sdk.core.symbol import Symbol 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.codemod import Codemod +from tests.shared.skills.decorators import skill, skill_impl +from tests.shared.skills.skill import Skill @skill( 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 79bddf173..6375b956f 100644 --- a/src/codemods/canonical/pascal_case_symbols/pascal_case_symbols.py +++ b/src/codemods/canonical/pascal_case_symbols/pascal_case_symbols.py @@ -3,10 +3,10 @@ from codegen.sdk.core.interface import Interface from codegen.sdk.core.type_alias import TypeAlias 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.codemod import Codemod +from tests.shared.skills.decorators import skill, skill_impl +from tests.shared.skills.skill import Skill @skill( 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 9dd585e3c..25804921a 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.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.codemod import Codemod +from tests.shared.skills.decorators import skill, skill_impl +from tests.shared.skills.skill import Skill @skill( 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 83fb9e784..48806687e 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.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.codemod import Codemod +from tests.shared.skills.decorators import skill, skill_impl +from tests.shared.skills.skill import Skill @skill( 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 6b2f13e93..18c08e72d 100644 --- a/src/codemods/canonical/remove_indirect_imports/remove_indirect_imports.py +++ b/src/codemods/canonical/remove_indirect_imports/remove_indirect_imports.py @@ -3,10 +3,10 @@ from codegen.sdk.core.import_resolution import Import from codegen.sdk.core.symbol import Symbol 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.codemod import Codemod +from tests.shared.skills.decorators import skill, skill_impl +from tests.shared.skills.skill import Skill @skill( 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 b1556b513..a538c3628 100644 --- a/src/codemods/canonical/rename_function_parameters/rename_function_parameters.py +++ b/src/codemods/canonical/rename_function_parameters/rename_function_parameters.py @@ -1,9 +1,9 @@ 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.codemod import Codemod +from tests.shared.skills.decorators import skill, skill_impl +from tests.shared.skills.skill import Skill @skill( 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 dded22c85..5689f2186 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.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.codemod import Codemod +from tests.shared.skills.decorators import skill, skill_impl +from tests.shared.skills.skill import Skill @skill( 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 643c6010b..3fe1c5f00 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.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.codemod import Codemod +from tests.shared.skills.decorators import skill, skill_impl +from tests.shared.skills.skill import Skill @skill( 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 686d20f1d..8ace2d728 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.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.codemod import Codemod +from tests.shared.skills.decorators import skill, skill_impl +from tests.shared.skills.skill import Skill @skill( diff --git a/src/codemods/canonical/split_decorators/split_decorators.py b/src/codemods/canonical/split_decorators/split_decorators.py index b1a5eba28..a1122b2b8 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.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.codemod import Codemod +from tests.shared.skills.decorators import skill, skill_impl +from tests.shared.skills.skill import Skill @skill( diff --git a/src/codemods/canonical/split_file/split_file.py b/src/codemods/canonical/split_file/split_file.py index 7f4fdd75b..ee6e5a7ac 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.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.codemod import Codemod +from tests.shared.skills.decorators import skill, skill_impl +from tests.shared.skills.skill import Skill @skill( 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 46079d70c..6a8bd2603 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.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.codemod import Codemod +from tests.shared.skills.decorators import skill, skill_impl +from tests.shared.skills.skill import Skill @skill( 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 31f12522b..6ec618ac2 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.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.codemod import Codemod +from tests.shared.skills.decorators import skill, skill_impl +from tests.shared.skills.skill import Skill @skill( 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 5b84baae8..3378ae9b6 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.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.codemod import Codemod +from tests.shared.skills.decorators import skill, skill_impl +from tests.shared.skills.skill import Skill @skill( 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 b97238818..2fb7c5283 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.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.codemod import Codemod +from tests.shared.skills.decorators import skill, skill_impl +from tests.shared.skills.skill import Skill @skill( 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 1a3075666..3c4b718ab 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 @@ -3,10 +3,10 @@ from codegen.sdk.core.expressions.generic_type import GenericType from codegen.sdk.core.expressions.union_type import UnionType 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.codemod import Codemod +from tests.shared.skills.decorators import skill, skill_impl +from tests.shared.skills.skill import Skill @skill( 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 7c14d4960..dbba3a004 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.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.codemod import Codemod +from tests.shared.skills.decorators import skill, skill_impl +from tests.shared.skills.skill import Skill @skill( 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 3b88f59c1..e68a3b567 100644 --- a/src/codemods/canonical/use_named_kwargs/use_named_kwargs.py +++ b/src/codemods/canonical/use_named_kwargs/use_named_kwargs.py @@ -2,10 +2,10 @@ from codegen.sdk.core.external_module import ExternalModule from codegen.sdk.enums import ProgrammingLanguage from codegen.sdk.python.class_definition import PyClass -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.codemod import Codemod +from tests.shared.skills.decorators import skill, skill_impl +from tests.shared.skills.skill import Skill @skill( 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 3df0f60c3..f0ae9c2d6 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.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.codemod import Codemod +from tests.shared.skills.decorators import skill, skill_impl +from tests.shared.skills.skill import Skill @skill( 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 5f29a55e5..1fb015e34 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.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.codemod import Codemod +from tests.shared.skills.decorators import skill, skill_impl +from tests.shared.skills.skill import Skill @skill( diff --git a/tests/integration/codemod/conftest.py b/tests/integration/codemod/conftest.py index 15117f5a5..33363c3a9 100644 --- a/tests/integration/codemod/conftest.py +++ b/tests/integration/codemod/conftest.py @@ -13,11 +13,11 @@ from codegen.git.repo_operator.repo_operator import RepoOperator from codegen.sdk.codebase.config import CodebaseConfig, GSFeatureFlags, ProjectConfig 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.codemod import Codemod -from tests.shared.recursion import set_recursion_limit +from tests.shared.codemod.constants import DIFF_FILEPATH +from tests.shared.codemod.models import BASE_PATH, BASE_TMP_DIR, VERIFIED_CODEMOD_DIFFS, CodemodMetadata, Repo, Size +from tests.shared.codemod.test_discovery import find_codemod_test_cases, find_repos, find_verified_codemod_cases +from tests.shared.utils.recursion import set_recursion_limit logger = logging.getLogger(__name__) diff --git a/tests/integration/codemod/test_codemods.py b/tests/integration/codemod/test_codemods.py index 681803af1..beb4012ae 100644 --- a/tests/integration/codemod/test_codemods.py +++ b/tests/integration/codemod/test_codemods.py @@ -5,9 +5,9 @@ from pytest_snapshot.plugin import Snapshot from codegen.sdk.core.codebase import Codebase -from codegen.sdk.testing.models import BASE_PATH from codemods.codemod import Codemod -from tests.shared.codebase_comparison_utils import compare_codebase_diff +from tests.shared.codemod.codebase_comparison_utils import compare_codebase_diff +from tests.shared.codemod.models import BASE_PATH DIFF_ROOT = BASE_PATH / ".diffs" T = TypeVar("T") diff --git a/tests/integration/codemod/test_diffs.py b/tests/integration/codemod/test_diffs.py index ba9fc8f6a..5745caef2 100644 --- a/tests/integration/codemod/test_diffs.py +++ b/tests/integration/codemod/test_diffs.py @@ -6,9 +6,9 @@ from codegen.sdk.codebase.diff_lite import DiffLite from codegen.sdk.core.codebase import Codebase from codegen.sdk.output.utils import stylize_error -from codegen.sdk.testing.models import BASE_PATH from codegen.sdk.tree_sitter_parser import print_errors -from tests.shared.codebase_comparison_utils import gather_modified_files +from tests.shared.codemod.codebase_comparison_utils import gather_modified_files +from tests.shared.codemod.models import BASE_PATH DIFF_ROOT = BASE_PATH / ".diffs" T = TypeVar("T") diff --git a/tests/integration/codemod/test_parse.py b/tests/integration/codemod/test_parse.py index 79e6279a9..6bd124c2c 100644 --- a/tests/integration/codemod/test_parse.py +++ b/tests/integration/codemod/test_parse.py @@ -9,8 +9,8 @@ from codegen.sdk.codebase.config import CodebaseConfig, DefaultFlags, ProjectConfig from codegen.sdk.codebase.validation import PostInitValidationStatus, post_init_validation from codegen.sdk.core.codebase import Codebase -from codegen.sdk.testing.models import Repo -from tests.shared.recursion import set_recursion_limit +from tests.shared.codemod.models import Repo +from tests.shared.utils.recursion import set_recursion_limit BYTES_IN_GIGABYTE = 1024**3 MAX_ALLOWED_GIGABYTES = 31 diff --git a/tests/integration/codemod/test_verified_codemods.py b/tests/integration/codemod/test_verified_codemods.py index 4331a1461..1b754dd31 100644 --- a/tests/integration/codemod/test_verified_codemods.py +++ b/tests/integration/codemod/test_verified_codemods.py @@ -6,10 +6,10 @@ from pytest_snapshot.plugin import Snapshot from codegen.sdk.core.codebase import Codebase -from codegen.sdk.testing.models import BASE_PATH from codemods.codemod import Codemod -from tests.shared.codebase_comparison_utils import compare_codebase_diff -from tests.shared.recursion import set_recursion_limit +from tests.shared.codemod.codebase_comparison_utils import compare_codebase_diff +from tests.shared.codemod.models import BASE_PATH +from tests.shared.utils.recursion import set_recursion_limit logger = logging.getLogger(__name__) DIFF_ROOT = BASE_PATH / ".diffs" diff --git a/tests/shared/codebase_comparison_utils.py b/tests/shared/codemod/codebase_comparison_utils.py similarity index 99% rename from tests/shared/codebase_comparison_utils.py rename to tests/shared/codemod/codebase_comparison_utils.py index 0918160ea..ec4feb384 100644 --- a/tests/shared/codebase_comparison_utils.py +++ b/tests/shared/codemod/codebase_comparison_utils.py @@ -10,7 +10,7 @@ from codegen.git.schemas.enums import DiffChangeType from codegen.sdk.core.codebase import Codebase -from codegen.sdk.testing.constants import DIFF_FILEPATH +from tests.shared.codemod.constants import DIFF_FILEPATH logger = logging.getLogger(__name__) diff --git a/src/codegen/gscli/codemod/commands.py b/tests/shared/codemod/commands.py similarity index 91% rename from src/codegen/gscli/codemod/commands.py rename to tests/shared/codemod/commands.py index 7ee8748b5..26e9f5918 100644 --- a/src/codegen/gscli/codemod/commands.py +++ b/tests/shared/codemod/commands.py @@ -10,9 +10,9 @@ from rich.table import Table from codegen.sdk.enums import ProgrammingLanguage -from codegen.sdk.testing.models import BASE_TMP_DIR, REPO_ID_TO_URL, VERIFIED_CODEMOD_DATA_DIR, ClonedRepoTestCase, Size -from codegen.sdk.testing.test_discovery import filter_repos, find_codemod_test_cases, find_codemods, find_repos, find_verified_codemod_repos -from codegen.sdk.testing.verified_codemod_utils import CodemodAPI, RepoCodemodMetadata +from tests.shared.codemod.models import BASE_TMP_DIR, REPO_ID_TO_URL, VERIFIED_CODEMOD_DATA_DIR, ClonedRepoTestCase, Size +from tests.shared.codemod.test_discovery import filter_repos, find_codemod_test_cases, find_codemods, find_repos, find_verified_codemod_repos +from tests.shared.codemod.verified_codemod_utils import CodemodAPI, RepoCodemodMetadata @click.group() @@ -35,8 +35,8 @@ def generate_cases(extra_repos: bool = False): def _generate_diffs(extra_repos: bool = False): """Generate diffs for codemod tests""" - os.system(f"pytest codegen_tests/graph_sitter/codemod/test_codemods.py::test_codemods_cloned_repos --size small --extra-repos={str(extra_repos).lower()} -n auto --snapshot-update") - os.system(f"pytest codegen_tests/graph_sitter/codemod/test_codemods.py::test_codemods_cloned_repos --size large --extra-repos={str(extra_repos).lower()} -n auto --snapshot-update") + os.system(f"pytest tests/integration/codemod/test_codemods.py::test_codemods_cloned_repos --size small --extra-repos={str(extra_repos).lower()} -n auto --snapshot-update") + os.system(f"pytest tests/integration/codemod/test_codemods.py::test_codemods_cloned_repos --size large --extra-repos={str(extra_repos).lower()} -n auto --snapshot-update") @codemod.command() @@ -222,3 +222,7 @@ def fetch_verified_codemods(cli_api_key: str): with repo_commits_file.open("w") as f: f.write(json.dumps(repos_to_commits, indent=4)) f.flush() + + +if __name__ == "__main__": + codemod() diff --git a/src/codegen/sdk/testing/constants.py b/tests/shared/codemod/constants.py similarity index 100% rename from src/codegen/sdk/testing/constants.py rename to tests/shared/codemod/constants.py diff --git a/src/codegen/sdk/testing/models.py b/tests/shared/codemod/models.py similarity index 94% rename from src/codegen/sdk/testing/models.py rename to tests/shared/codemod/models.py index 1ab254573..35106d27b 100644 --- a/src/codegen/sdk/testing/models.py +++ b/tests/shared/codemod/models.py @@ -12,11 +12,11 @@ from codegen.git.repo_operator.local_repo_operator import LocalRepoOperator from codegen.sdk.codebase.config import GSFeatureFlags from codegen.sdk.enums import ProgrammingLanguage -from codegen.sdk.testing.constants import DIFF_FILEPATH -from codegen.sdk.testing.verified_codemod_utils import CodemodAPI +from tests.shared.codemod.constants import DIFF_FILEPATH +from tests.shared.codemod.verified_codemod_utils import CodemodAPI BASE_TMP_DIR = Path(os.getenv("GITHUB_WORKSPACE", tempfile.gettempdir())) -BASE_PATH: Path = Path(__file__).parent.parent.parent.parent.parent +BASE_PATH: Path = Path(__file__).parent.parent.parent.parent TEST_DIR: Path = BASE_PATH / "tests" / "integration" / "codemod" CODEMOD_PATH: Path = BASE_PATH / "src" / "codemods" VERIFIED_CODEMOD_DIR: Path = BASE_PATH / "tests" / "integration" / "verified_codemods" diff --git a/src/codegen/sdk/testing/test_discovery.py b/tests/shared/codemod/test_discovery.py similarity index 95% rename from src/codegen/sdk/testing/test_discovery.py rename to tests/shared/codemod/test_discovery.py index 60ef66159..f5fdf2039 100644 --- a/src/codegen/sdk/testing/test_discovery.py +++ b/tests/shared/codemod/test_discovery.py @@ -11,10 +11,10 @@ from codegen.gscli.generate.runner_imports import get_runner_imports 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 from codemods.codemod import Codemod +from tests.shared.codemod.constants import DIFF_FILEPATH +from tests.shared.codemod.models import BASE_PATH, CODEMOD_PATH, REPO_ID_TO_URL, TEST_DIR, VERIFIED_CODEMOD_DATA_DIR, VERIFIED_CODEMOD_DIFFS, ClonedRepoTestCase, CodemodMetadata, Repo, Size +from tests.shared.codemod.verified_codemod_utils import CodemodAPI, RepoCodemodMetadata, SkillTestConfig, anonymize_id def find_repos( diff --git a/src/codegen/sdk/testing/verified_codemod_utils.py b/tests/shared/codemod/verified_codemod_utils.py similarity index 98% rename from src/codegen/sdk/testing/verified_codemod_utils.py rename to tests/shared/codemod/verified_codemod_utils.py index 2ec1c5bf0..84b4960e4 100644 --- a/src/codegen/sdk/testing/verified_codemod_utils.py +++ b/tests/shared/codemod/verified_codemod_utils.py @@ -9,7 +9,7 @@ from pydantic import BaseModel from codegen.sdk.enums import ProgrammingLanguage -from codegen.sdk.testing.constants import GET_CODEMODS_URL_SUFFIX, UPDATE_CODEMOD_DIFF_URL_SUFFIX +from tests.shared.codemod.constants import GET_CODEMODS_URL_SUFFIX, UPDATE_CODEMOD_DIFF_URL_SUFFIX logger = logging.getLogger(__name__) diff --git a/src/codegen/sdk/skills/core/utils.py b/tests/shared/skills/decorators.py similarity index 68% rename from src/codegen/sdk/skills/core/utils.py rename to tests/shared/skills/decorators.py index d95f7b011..c85c0cd4e 100644 --- a/src/codegen/sdk/skills/core/utils.py +++ b/tests/shared/skills/decorators.py @@ -1,25 +1,17 @@ -import importlib import inspect from collections.abc import Callable -from pathlib import Path import inflection 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.skill_implementation import SkillImplementation -from codegen.sdk.skills.core.skill_test import SkillTestCase +from tests.shared.skills.skill import Skill +from tests.shared.skills.skill_implementation import SkillImplementation +from tests.shared.skills.skill_test import SkillTestCase +from tests.shared.skills.utils import skill_name_to_skill_implementations, skills ExecuteFuncType = Callable[[CodebaseType], None] -# This is a registry that holds all skill implementations -skill_name_to_skill_implementations: dict[str, list[SkillImplementation]] = {} -skills: list[Skill] = [] -SkillDecoratorType = Callable[[ExecuteFuncType], SkillImplementation] -SKILLS_PATH: Path = Path(__file__).parent.parent -CODEMODS_PATH: Path = Path(__file__).parent.parent.parent.parent / "codemods" / "canonical" - def skill_impl( test_cases: list[SkillTestCase], @@ -145,67 +137,3 @@ def decorator(cls): return cls return decorator - - -def import_skills_from(path: Path, package: str): - for file in path.rglob("*.py"): - relative_path = file.relative_to(path) - if "evaluation" in relative_path.parts or "__init__" in file.name: - continue - module_name = package + "." + str(relative_path).replace("/", ".").removesuffix(".py") - importlib.import_module(module_name) - - -def import_all_skills(): - import_skills_from(SKILLS_PATH, "codegen.sdk.skills") - import_skills_from(CODEMODS_PATH, "codemods.canonical") - - -def import_all_guide_skill_files(): - # HACK: force import all skills - for file in SKILLS_PATH.rglob("*.py"): - relative_path = file.relative_to(SKILLS_PATH) - if "evaluation" in relative_path.parts or "__init__" in file.name or "guides" not in relative_path.parts: - continue - module_name = "codegen.sdk.skills." + str(relative_path).replace("/", ".").removesuffix(".py") - importlib.import_module(module_name) - - -def get_all_skills() -> list[Skill]: - import_all_skills() - return skills - - -def get_skill_name_to_skill_implementations() -> dict[str, list[SkillImplementation]]: - import_all_skills() - return skill_name_to_skill_implementations - - -def get_guide_skills_dict() -> dict: - import_all_guide_skill_files() - skills_dict = {} - for sk in skills: - if not sk.guide: - continue - sk_inst = sk - name = sk_inst.guide_path() - if name in skills_dict: - skills_dict[name].append(sk_inst) - else: - skills_dict[name] = [sk_inst] - return skills_dict - - -def get_all_skill_implementations() -> list[SkillImplementation]: - """Get all skills.""" - import_all_skills() - all_skills = [] - for skill_list in skill_name_to_skill_implementations.values(): - all_skills.extend(skill_list) - return all_skills - - -def get_all_evaluation_skills() -> list[SkillImplementation]: - """Get all evaluation skills.""" - all_skills = get_all_skill_implementations() - return [sk for sk in all_skills if sk.eval_skill] diff --git a/src/codegen/sdk/skills/core/skill.py b/tests/shared/skills/skill.py similarity index 97% rename from src/codegen/sdk/skills/core/skill.py rename to tests/shared/skills/skill.py index fc490ff85..cfb4e09ec 100644 --- a/src/codegen/sdk/skills/core/skill.py +++ b/tests/shared/skills/skill.py @@ -4,7 +4,7 @@ from codegen.sdk.core.codebase import Codebase, CodebaseType, PyCodebaseType, TSCodebaseType from codegen.sdk.enums import ProgrammingLanguage -from codegen.sdk.skills.core.skill_implementation import SkillImplementation +from tests.shared.skills.skill_implementation import SkillImplementation class Skill(ABC): diff --git a/src/codegen/sdk/skills/core/skill_implementation.py b/tests/shared/skills/skill_implementation.py similarity index 95% rename from src/codegen/sdk/skills/core/skill_implementation.py rename to tests/shared/skills/skill_implementation.py index 2679b7b8c..4d2d8e61e 100644 --- a/src/codegen/sdk/skills/core/skill_implementation.py +++ b/tests/shared/skills/skill_implementation.py @@ -7,8 +7,9 @@ from codegen.sdk.codebase.factory.get_session import get_codebase_session from codegen.sdk.core.codebase import CodebaseType from codegen.sdk.enums import ProgrammingLanguage -from codegen.sdk.skills.core.skill_test import SkillTestCase -from codegen.sdk.skills.utils.utils import verify_skill_output +from codegen.shared.compilation.string_to_code import create_execute_function_from_codeblock +from tests.shared.skills.skill_test import SkillTestCase +from tests.shared.skills.verify_skill_output import verify_skill_output class SkillImplementation: @@ -72,8 +73,6 @@ def from_source(cls, source: str, name: str, language: ProgrammingLanguage, test :param test_cases: The test cases for the skill. :return: A new Skill instance. """ - from app.codemod.compilation.string_to_code import create_execute_function_from_codeblock - skill_func = create_execute_function_from_codeblock(codeblock=source, func_name="skill_func") # Create and return a new Skill instance diff --git a/src/codegen/sdk/skills/core/skill_test.py b/tests/shared/skills/skill_test.py similarity index 100% rename from src/codegen/sdk/skills/core/skill_test.py rename to tests/shared/skills/skill_test.py diff --git a/tests/shared/skills/utils.py b/tests/shared/skills/utils.py new file mode 100644 index 000000000..342d7d061 --- /dev/null +++ b/tests/shared/skills/utils.py @@ -0,0 +1,40 @@ +import importlib +from collections.abc import Callable +from pathlib import Path + +from codegen.sdk.core.codebase import CodebaseType +from tests.shared.skills.skill import Skill +from tests.shared.skills.skill_implementation import SkillImplementation + +ExecuteFuncType = Callable[[CodebaseType], None] + +# This is a registry that holds all skill implementations +skill_name_to_skill_implementations: dict[str, list[SkillImplementation]] = {} +skills: list[Skill] = [] +SkillDecoratorType = Callable[[ExecuteFuncType], SkillImplementation] +REPO_ROOT_PATH: Path = Path(__file__).parent.parent.parent.parent +SKILLS_PATH: Path = REPO_ROOT_PATH / "tests" / "unit" / "skills" / "implementations" +CODEMODS_PATH: Path = REPO_ROOT_PATH / "src" / "codemods" / "canonical" + + +def import_skills_from(path: Path, module_prefix: str): + for file in path.rglob("*.py"): + relative_path = file.relative_to(path) + if "evaluation" in relative_path.parts or "__init__" in file.name: + continue + module = module_prefix + "." + str(relative_path).replace("/", ".").removesuffix(".py") + importlib.import_module(module) + + +def import_all_skills(): + import_skills_from(SKILLS_PATH, "tests.unit.skills.implementations") + import_skills_from(CODEMODS_PATH, "codemods.canonical") + + +def get_all_skill_implementations() -> list[SkillImplementation]: + """Get all skills.""" + import_all_skills() + all_skills = [] + for skill_list in skill_name_to_skill_implementations.values(): + all_skills.extend(skill_list) + return all_skills diff --git a/src/codegen/sdk/skills/utils/utils.py b/tests/shared/skills/verify_skill_output.py similarity index 100% rename from src/codegen/sdk/skills/utils/utils.py rename to tests/shared/skills/verify_skill_output.py diff --git a/tests/shared/normalize.py b/tests/shared/utils/normalize.py similarity index 100% rename from tests/shared/normalize.py rename to tests/shared/utils/normalize.py diff --git a/tests/shared/recursion.py b/tests/shared/utils/recursion.py similarity index 100% rename from tests/shared/recursion.py rename to tests/shared/utils/recursion.py diff --git a/tests/unit/codegen/sdk/skills/__init__.py b/tests/unit/codegen/sdk/skills/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/tests/unit/codegen/sdk/typescript/function/test_function_move_to_file.py b/tests/unit/codegen/sdk/typescript/function/test_function_move_to_file.py index 6f1ba434b..138244999 100644 --- a/tests/unit/codegen/sdk/typescript/function/test_function_move_to_file.py +++ b/tests/unit/codegen/sdk/typescript/function/test_function_move_to_file.py @@ -6,7 +6,7 @@ from codegen.sdk.codebase.factory.get_session import get_codebase_session from codegen.sdk.core.function import Function from codegen.sdk.enums import ProgrammingLanguage -from tests.shared.normalize import normalize_imports +from tests.shared.utils.normalize import normalize_imports # All the diff types of JS/TS imports: diff --git a/src/codegen/sdk/skills/__init__.py b/tests/unit/skills/__init__.py similarity index 100% rename from src/codegen/sdk/skills/__init__.py rename to tests/unit/skills/__init__.py diff --git a/src/codegen/sdk/skills/ai_skills.py b/tests/unit/skills/implementations/ai_skills.py similarity index 97% rename from src/codegen/sdk/skills/ai_skills.py rename to tests/unit/skills/implementations/ai_skills.py index 9f16e7ead..448b0612e 100644 --- a/src/codegen/sdk/skills/ai_skills.py +++ b/tests/unit/skills/implementations/ai_skills.py @@ -2,9 +2,9 @@ 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.skill_test import SkillTestCase, SkillTestCasePyFile -from codegen.sdk.skills.core.utils import skill, skill_impl +from tests.shared.skills.decorators import skill, skill_impl +from tests.shared.skills.skill import Skill +from tests.shared.skills.skill_test import SkillTestCase, SkillTestCasePyFile ######################################################################################################################## # Codebase AI Skills diff --git a/src/codegen/sdk/skills/asyncify_skills.py b/tests/unit/skills/implementations/asyncify_skills.py similarity index 96% rename from src/codegen/sdk/skills/asyncify_skills.py rename to tests/unit/skills/implementations/asyncify_skills.py index 37cb294d3..d6640adae 100644 --- a/src/codegen/sdk/skills/asyncify_skills.py +++ b/tests/unit/skills/implementations/asyncify_skills.py @@ -3,9 +3,9 @@ from codegen.sdk.core.codebase import CodebaseType, PyCodebaseType, TSCodebaseType 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.skill_test import SkillTestCase, SkillTestCasePyFile, SkillTestCaseTSFile -from codegen.sdk.skills.core.utils import skill, skill_impl +from tests.shared.skills.decorators import skill, skill_impl +from tests.shared.skills.skill import Skill +from tests.shared.skills.skill_test import SkillTestCase, SkillTestCasePyFile, SkillTestCaseTSFile py_input1 = """ def func_to_convert(a: int) -> int: diff --git a/src/codegen/sdk/skills/code_block_skills.py b/tests/unit/skills/implementations/code_block_skills.py similarity index 98% rename from src/codegen/sdk/skills/code_block_skills.py rename to tests/unit/skills/implementations/code_block_skills.py index b2872e469..1001bb7bb 100644 --- a/src/codegen/sdk/skills/code_block_skills.py +++ b/tests/unit/skills/implementations/code_block_skills.py @@ -5,9 +5,9 @@ from codegen.sdk.core.expressions.chained_attribute import ChainedAttribute from codegen.sdk.core.statements.expression_statement import ExpressionStatement from codegen.sdk.enums import ProgrammingLanguage -from codegen.sdk.skills.core.skill import Skill -from codegen.sdk.skills.core.skill_test import SkillTestCase, SkillTestCasePyFile, SkillTestCaseTSFile -from codegen.sdk.skills.core.utils import skill, skill_impl +from tests.shared.skills.decorators import skill, skill_impl +from tests.shared.skills.skill import Skill +from tests.shared.skills.skill_test import SkillTestCase, SkillTestCasePyFile, SkillTestCaseTSFile py_input = """ def main(): diff --git a/src/codegen/sdk/skills/comment_skills.py b/tests/unit/skills/implementations/comment_skills.py similarity index 95% rename from src/codegen/sdk/skills/comment_skills.py rename to tests/unit/skills/implementations/comment_skills.py index a1ce98c10..917662a27 100644 --- a/src/codegen/sdk/skills/comment_skills.py +++ b/tests/unit/skills/implementations/comment_skills.py @@ -2,9 +2,9 @@ from codegen.sdk.core.codebase import TSCodebaseType from codegen.sdk.enums import ProgrammingLanguage -from codegen.sdk.skills.core.skill import Skill -from codegen.sdk.skills.core.skill_test import SkillTestCase, SkillTestCaseTSFile -from codegen.sdk.skills.core.utils import skill, skill_impl +from tests.shared.skills.decorators import skill, skill_impl +from tests.shared.skills.skill import Skill +from tests.shared.skills.skill_test import SkillTestCase, SkillTestCaseTSFile # Case 1: all rules disabled in a SINGLE line comment are no longer required - should remove entire comment ts_case_1_input = """ diff --git a/src/codegen/sdk/skills/decorator_skills.py b/tests/unit/skills/implementations/decorator_skills.py similarity index 96% rename from src/codegen/sdk/skills/decorator_skills.py rename to tests/unit/skills/implementations/decorator_skills.py index 39ce37481..549101580 100644 --- a/src/codegen/sdk/skills/decorator_skills.py +++ b/tests/unit/skills/implementations/decorator_skills.py @@ -2,9 +2,9 @@ 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.skill_test import SkillTestCase, SkillTestCasePyFile, SkillTestCaseTSFile -from codegen.sdk.skills.core.utils import skill, skill_impl +from tests.shared.skills.decorators import skill, skill_impl +from tests.shared.skills.skill import Skill +from tests.shared.skills.skill_test import SkillTestCase, SkillTestCasePyFile, SkillTestCaseTSFile ######################################################################################################################## # ADD FUNCTION DECORATOR diff --git a/src/codegen/sdk/skills/eval_skills.py b/tests/unit/skills/implementations/eval_skills.py similarity index 99% rename from src/codegen/sdk/skills/eval_skills.py rename to tests/unit/skills/implementations/eval_skills.py index 12217317c..7e4a6b38e 100644 --- a/src/codegen/sdk/skills/eval_skills.py +++ b/tests/unit/skills/implementations/eval_skills.py @@ -5,9 +5,9 @@ from codegen.sdk.core.codebase import CodebaseType from codegen.sdk.enums import ProgrammingLanguage from codegen.sdk.python import PyFunction -from codegen.sdk.skills.core.skill import Skill -from codegen.sdk.skills.core.skill_test import SkillTestCase -from codegen.sdk.skills.core.utils import skill, skill_impl +from tests.shared.skills.decorators import skill, skill_impl +from tests.shared.skills.skill import Skill +from tests.shared.skills.skill_test import SkillTestCase EVAL_SKILLS_TEST_DIR = Path(__file__).parent.parents[3] / "src" / "codemods" / "eval" / "test_files" diff --git a/src/codegen/sdk/skills/example_skills.py b/tests/unit/skills/implementations/example_skills.py similarity index 98% rename from src/codegen/sdk/skills/example_skills.py rename to tests/unit/skills/implementations/example_skills.py index 09ebacdc4..1951a4419 100644 --- a/src/codegen/sdk/skills/example_skills.py +++ b/tests/unit/skills/implementations/example_skills.py @@ -2,9 +2,9 @@ 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.skill_test import SkillTestCase, SkillTestCasePyFile -from codegen.sdk.skills.core.utils import skill, skill_impl +from tests.shared.skills.decorators import skill, skill_impl +from tests.shared.skills.skill import Skill +from tests.shared.skills.skill_test import SkillTestCase, SkillTestCasePyFile ######################################################################################################################## # GLOBAL VARS diff --git a/src/codegen/sdk/skills/export_skills.py b/tests/unit/skills/implementations/export_skills.py similarity index 90% rename from src/codegen/sdk/skills/export_skills.py rename to tests/unit/skills/implementations/export_skills.py index 9a6f69b2a..a30fea49c 100644 --- a/src/codegen/sdk/skills/export_skills.py +++ b/tests/unit/skills/implementations/export_skills.py @@ -1,8 +1,8 @@ from codegen.sdk.core.codebase import TSCodebaseType from codegen.sdk.enums import ProgrammingLanguage -from codegen.sdk.skills.core.skill import Skill -from codegen.sdk.skills.core.skill_test import SkillTestCase, SkillTestCaseTSFile -from codegen.sdk.skills.core.utils import skill, skill_impl +from tests.shared.skills.decorators import skill, skill_impl +from tests.shared.skills.skill import Skill +from tests.shared.skills.skill_test import SkillTestCase, SkillTestCaseTSFile ts_input1 = """ export default A = function() {b()}; diff --git a/src/codegen/sdk/skills/expressions/dict.py b/tests/unit/skills/implementations/expressions/dict.py similarity index 87% rename from src/codegen/sdk/skills/expressions/dict.py rename to tests/unit/skills/implementations/expressions/dict.py index 8ce27b5d4..f8e38bbbb 100644 --- a/src/codegen/sdk/skills/expressions/dict.py +++ b/tests/unit/skills/implementations/expressions/dict.py @@ -1,9 +1,9 @@ from codegen.sdk.core.codebase import PyCodebaseType from codegen.sdk.core.symbol_groups.dict import Dict from codegen.sdk.enums import ProgrammingLanguage -from codegen.sdk.skills.core.skill import Skill -from codegen.sdk.skills.core.skill_test import SkillTestCase, SkillTestCasePyFile -from codegen.sdk.skills.core.utils import skill, skill_impl +from tests.shared.skills.decorators import skill, skill_impl +from tests.shared.skills.skill import Skill +from tests.shared.skills.skill_test import SkillTestCase, SkillTestCasePyFile test_cases = [ SkillTestCase(files=[SkillTestCasePyFile(input='a={"foo": "bar"}', output="a=Schema(foo=bar)")]), diff --git a/src/codegen/sdk/skills/expressions/list.py b/tests/unit/skills/implementations/expressions/list.py similarity index 94% rename from src/codegen/sdk/skills/expressions/list.py rename to tests/unit/skills/implementations/expressions/list.py index 42fe1ae24..8852e6a92 100644 --- a/src/codegen/sdk/skills/expressions/list.py +++ b/tests/unit/skills/implementations/expressions/list.py @@ -2,13 +2,9 @@ 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.skill_test import ( - SkillTestCase, - SkillTestCasePyFile, - SkillTestCaseTSFile, -) -from codegen.sdk.skills.core.utils import skill, skill_impl +from tests.shared.skills.decorators import skill, skill_impl +from tests.shared.skills.skill import Skill +from tests.shared.skills.skill_test import SkillTestCase, SkillTestCasePyFile, SkillTestCaseTSFile # Test cases for appending to list test_cases_append_py = [ diff --git a/src/codegen/sdk/skills/expressions/type.py b/tests/unit/skills/implementations/expressions/type.py similarity index 95% rename from src/codegen/sdk/skills/expressions/type.py rename to tests/unit/skills/implementations/expressions/type.py index 9f0130c5b..a43c0dda0 100644 --- a/src/codegen/sdk/skills/expressions/type.py +++ b/tests/unit/skills/implementations/expressions/type.py @@ -2,10 +2,10 @@ from codegen.sdk.core.expressions.union_type import UnionType from codegen.sdk.enums import ProgrammingLanguage from codegen.sdk.python.assignment import PyAssignment -from codegen.sdk.skills.core.skill import Skill -from codegen.sdk.skills.core.skill_test import SkillTestCase, SkillTestCasePyFile, SkillTestCaseTSFile -from codegen.sdk.skills.core.utils import skill, skill_impl from codegen.sdk.typescript.assignment import TSAssignment +from tests.shared.skills.decorators import skill, skill_impl +from tests.shared.skills.skill import Skill +from tests.shared.skills.skill_test import SkillTestCase, SkillTestCasePyFile, SkillTestCaseTSFile test_cases_append_py = [ SkillTestCase(files=[SkillTestCasePyFile(input="a: int | None", output="a: int | None | str")]), diff --git a/src/codegen/sdk/skills/feature_flag_deletion_skill.py b/tests/unit/skills/implementations/feature_flag_deletion_skill.py similarity index 96% rename from src/codegen/sdk/skills/feature_flag_deletion_skill.py rename to tests/unit/skills/implementations/feature_flag_deletion_skill.py index ae6eebc70..17744025f 100644 --- a/src/codegen/sdk/skills/feature_flag_deletion_skill.py +++ b/tests/unit/skills/implementations/feature_flag_deletion_skill.py @@ -6,9 +6,9 @@ from codegen.sdk.core.statements.if_block_statement import IfBlockStatement from codegen.sdk.enums import ProgrammingLanguage from codegen.sdk.python.statements.with_statement import WithStatement -from codegen.sdk.skills.core.skill import Skill -from codegen.sdk.skills.core.skill_test import SkillTestCase, SkillTestCasePyFile, SkillTestCaseTSFile -from codegen.sdk.skills.core.utils import skill, skill_impl +from tests.shared.skills.decorators import skill, skill_impl +from tests.shared.skills.skill import Skill +from tests.shared.skills.skill_test import SkillTestCase, SkillTestCasePyFile, SkillTestCaseTSFile py_feature_flag_def = """ ROLLED_OUT_FLAG_TO_DELETE = False diff --git a/src/codegen/sdk/skills/function_skills.py b/tests/unit/skills/implementations/function_skills.py similarity index 90% rename from src/codegen/sdk/skills/function_skills.py rename to tests/unit/skills/implementations/function_skills.py index 2faf3053c..0168af72a 100644 --- a/src/codegen/sdk/skills/function_skills.py +++ b/tests/unit/skills/implementations/function_skills.py @@ -2,9 +2,9 @@ from codegen.sdk.core.codebase import PyCodebaseType, TSCodebaseType from codegen.sdk.enums import ProgrammingLanguage -from codegen.sdk.skills.core.skill import Skill -from codegen.sdk.skills.core.skill_test import SkillTestCase, SkillTestCasePyFile, SkillTestCaseTSFile -from codegen.sdk.skills.core.utils import skill, skill_impl +from tests.shared.skills.decorators import skill, skill_impl +from tests.shared.skills.skill import Skill +from tests.shared.skills.skill_test import SkillTestCase, SkillTestCasePyFile, SkillTestCaseTSFile py_function_input = """ def foo(a: int): diff --git a/src/codegen/sdk/skills/global_var_skills.py b/tests/unit/skills/implementations/global_var_skills.py similarity index 94% rename from src/codegen/sdk/skills/global_var_skills.py rename to tests/unit/skills/implementations/global_var_skills.py index b9c2871c1..bf38f9873 100644 --- a/src/codegen/sdk/skills/global_var_skills.py +++ b/tests/unit/skills/implementations/global_var_skills.py @@ -2,9 +2,9 @@ from codegen.sdk.core.codebase import PyCodebaseType, TSCodebaseType from codegen.sdk.enums import ProgrammingLanguage -from codegen.sdk.skills.core.skill import Skill -from codegen.sdk.skills.core.skill_test import SkillTestCase, SkillTestCasePyFile, SkillTestCaseTSFile -from codegen.sdk.skills.core.utils import skill, skill_impl +from tests.shared.skills.decorators import skill, skill_impl +from tests.shared.skills.skill import Skill +from tests.shared.skills.skill_test import SkillTestCase, SkillTestCasePyFile, SkillTestCaseTSFile ######################################################################################################################## # Py test cases diff --git a/src/codegen/sdk/skills/graph_viz/graph_viz_app_imports.py b/tests/unit/skills/implementations/graph_viz/graph_viz_app_imports.py similarity index 91% rename from src/codegen/sdk/skills/graph_viz/graph_viz_app_imports.py rename to tests/unit/skills/implementations/graph_viz/graph_viz_app_imports.py index 0c5511fb2..4d4a4c11e 100644 --- a/src/codegen/sdk/skills/graph_viz/graph_viz_app_imports.py +++ b/tests/unit/skills/implementations/graph_viz/graph_viz_app_imports.py @@ -2,9 +2,9 @@ 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.skill_test import SkillTestCase, SkillTestCasePyFile -from codegen.sdk.skills.core.utils import skill, skill_impl +from tests.shared.skills.decorators import skill, skill_impl +from tests.shared.skills.skill import Skill +from tests.shared.skills.skill_test import SkillTestCase, SkillTestCasePyFile FileAppImportGraphTest = SkillTestCase( [ diff --git a/src/codegen/sdk/skills/graph_viz/graph_viz_call_graph.py b/tests/unit/skills/implementations/graph_viz/graph_viz_call_graph.py similarity index 98% rename from src/codegen/sdk/skills/graph_viz/graph_viz_call_graph.py rename to tests/unit/skills/implementations/graph_viz/graph_viz_call_graph.py index 029a9b2de..21bbd1a6f 100644 --- a/src/codegen/sdk/skills/graph_viz/graph_viz_call_graph.py +++ b/tests/unit/skills/implementations/graph_viz/graph_viz_call_graph.py @@ -9,9 +9,9 @@ from codegen.sdk.core.function import Function from codegen.sdk.core.interfaces.callable import Callable from codegen.sdk.enums import ProgrammingLanguage -from codegen.sdk.skills.core.skill import Skill -from codegen.sdk.skills.core.skill_test import SkillTestCase, SkillTestCasePyFile -from codegen.sdk.skills.core.utils import skill, skill_impl +from tests.shared.skills.decorators import skill, skill_impl +from tests.shared.skills.skill import Skill +from tests.shared.skills.skill_test import SkillTestCase, SkillTestCasePyFile CallGraphFromNodeTest = SkillTestCase( [ diff --git a/src/codegen/sdk/skills/graph_viz/graph_viz_dead_code.py b/tests/unit/skills/implementations/graph_viz/graph_viz_dead_code.py similarity index 96% rename from src/codegen/sdk/skills/graph_viz/graph_viz_dead_code.py rename to tests/unit/skills/implementations/graph_viz/graph_viz_dead_code.py index 1fd4b5154..27b8ed1c3 100644 --- a/src/codegen/sdk/skills/graph_viz/graph_viz_dead_code.py +++ b/tests/unit/skills/implementations/graph_viz/graph_viz_dead_code.py @@ -7,9 +7,9 @@ from codegen.sdk.core.import_resolution import Import from codegen.sdk.core.symbol import Symbol from codegen.sdk.enums import ProgrammingLanguage -from codegen.sdk.skills.core.skill import Skill -from codegen.sdk.skills.core.skill_test import SkillTestCase, SkillTestCasePyFile -from codegen.sdk.skills.core.utils import skill, skill_impl +from tests.shared.skills.decorators import skill, skill_impl +from tests.shared.skills.skill import Skill +from tests.shared.skills.skill_test import SkillTestCase, SkillTestCasePyFile PyDeadCodeTest = SkillTestCase( [ diff --git a/src/codegen/sdk/skills/graph_viz/graph_viz_dir_tree.py b/tests/unit/skills/implementations/graph_viz/graph_viz_dir_tree.py similarity index 94% rename from src/codegen/sdk/skills/graph_viz/graph_viz_dir_tree.py rename to tests/unit/skills/implementations/graph_viz/graph_viz_dir_tree.py index 79a52f208..b5fec176b 100644 --- a/src/codegen/sdk/skills/graph_viz/graph_viz_dir_tree.py +++ b/tests/unit/skills/implementations/graph_viz/graph_viz_dir_tree.py @@ -4,9 +4,9 @@ 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.skill_test import SkillTestCase, SkillTestCasePyFile -from codegen.sdk.skills.core.utils import skill, skill_impl +from tests.shared.skills.decorators import skill, skill_impl +from tests.shared.skills.skill import Skill +from tests.shared.skills.skill_test import SkillTestCase, SkillTestCasePyFile PyRepoDirTreeTest = SkillTestCase( [ diff --git a/src/codegen/sdk/skills/graph_viz/graph_viz_foreign_key.py b/tests/unit/skills/implementations/graph_viz/graph_viz_foreign_key.py similarity index 97% rename from src/codegen/sdk/skills/graph_viz/graph_viz_foreign_key.py rename to tests/unit/skills/implementations/graph_viz/graph_viz_foreign_key.py index 0a2b6c563..608487257 100644 --- a/src/codegen/sdk/skills/graph_viz/graph_viz_foreign_key.py +++ b/tests/unit/skills/implementations/graph_viz/graph_viz_foreign_key.py @@ -4,9 +4,9 @@ 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.skill_test import SkillTestCase, SkillTestCasePyFile -from codegen.sdk.skills.core.utils import skill, skill_impl +from tests.shared.skills.decorators import skill, skill_impl +from tests.shared.skills.skill import Skill +from tests.shared.skills.skill_test import SkillTestCase, SkillTestCasePyFile PyForeignKeyGraphTest = SkillTestCase( [ diff --git a/src/codegen/sdk/skills/guides/code-quality-metrics/import-loops.py b/tests/unit/skills/implementations/guides/code-quality-metrics/import-loops.py similarity index 95% rename from src/codegen/sdk/skills/guides/code-quality-metrics/import-loops.py rename to tests/unit/skills/implementations/guides/code-quality-metrics/import-loops.py index a03bcdf4c..ce61479ec 100644 --- a/src/codegen/sdk/skills/guides/code-quality-metrics/import-loops.py +++ b/tests/unit/skills/implementations/guides/code-quality-metrics/import-loops.py @@ -5,9 +5,9 @@ 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.skill_test import SkillTestCase, SkillTestCasePyFile -from codegen.sdk.skills.core.utils import skill, skill_impl +from tests.shared.skills.decorators import skill, skill_impl +from tests.shared.skills.skill import Skill +from tests.shared.skills.skill_test import SkillTestCase, SkillTestCasePyFile ImportCycleDetectionAndVisualizationTest = SkillTestCase( [ diff --git a/src/codegen/sdk/skills/guides/code-quality-metrics/large-files.py b/tests/unit/skills/implementations/guides/code-quality-metrics/large-files.py similarity index 92% rename from src/codegen/sdk/skills/guides/code-quality-metrics/large-files.py rename to tests/unit/skills/implementations/guides/code-quality-metrics/large-files.py index cc6a6d3f4..e8f6eb3b4 100644 --- a/src/codegen/sdk/skills/guides/code-quality-metrics/large-files.py +++ b/tests/unit/skills/implementations/guides/code-quality-metrics/large-files.py @@ -2,9 +2,9 @@ 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.skill_test import SkillTestCase, SkillTestCasePyFile, SkillTestCaseTSFile -from codegen.sdk.skills.core.utils import skill, skill_impl +from tests.shared.skills.decorators import skill, skill_impl +from tests.shared.skills.skill import Skill +from tests.shared.skills.skill_test import SkillTestCase, SkillTestCasePyFile, SkillTestCaseTSFile CountLargeFilesPyTest = SkillTestCase( [ diff --git a/src/codegen/sdk/skills/guides/code-quality-metrics/missing-documentation.py b/tests/unit/skills/implementations/guides/code-quality-metrics/missing-documentation.py similarity index 93% rename from src/codegen/sdk/skills/guides/code-quality-metrics/missing-documentation.py rename to tests/unit/skills/implementations/guides/code-quality-metrics/missing-documentation.py index 72d9f542c..a16dbe70c 100644 --- a/src/codegen/sdk/skills/guides/code-quality-metrics/missing-documentation.py +++ b/tests/unit/skills/implementations/guides/code-quality-metrics/missing-documentation.py @@ -2,9 +2,9 @@ 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.skill_test import SkillTestCase, SkillTestCasePyFile -from codegen.sdk.skills.core.utils import skill, skill_impl +from tests.shared.skills.decorators import skill, skill_impl +from tests.shared.skills.skill import Skill +from tests.shared.skills.skill_test import SkillTestCase, SkillTestCasePyFile AutoDocstringGeneratorTest = SkillTestCase( [ diff --git a/src/codegen/sdk/skills/guides/code-quality-metrics/unnamed-kwargs.py b/tests/unit/skills/implementations/guides/code-quality-metrics/unnamed-kwargs.py similarity index 94% rename from src/codegen/sdk/skills/guides/code-quality-metrics/unnamed-kwargs.py rename to tests/unit/skills/implementations/guides/code-quality-metrics/unnamed-kwargs.py index cf5d5260e..a918c0ac7 100644 --- a/src/codegen/sdk/skills/guides/code-quality-metrics/unnamed-kwargs.py +++ b/tests/unit/skills/implementations/guides/code-quality-metrics/unnamed-kwargs.py @@ -2,9 +2,9 @@ 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.skill_test import SkillTestCase, SkillTestCasePyFile -from codegen.sdk.skills.core.utils import skill, skill_impl +from tests.shared.skills.decorators import skill, skill_impl +from tests.shared.skills.skill import Skill +from tests.shared.skills.skill_test import SkillTestCase, SkillTestCasePyFile CountUnnamedKeywordArgumentsTest = SkillTestCase( [ diff --git a/src/codegen/sdk/skills/guides/code-quality-metrics/untyped-attributes.py b/tests/unit/skills/implementations/guides/code-quality-metrics/untyped-attributes.py similarity index 94% rename from src/codegen/sdk/skills/guides/code-quality-metrics/untyped-attributes.py rename to tests/unit/skills/implementations/guides/code-quality-metrics/untyped-attributes.py index aff3eaed5..b728735bc 100644 --- a/src/codegen/sdk/skills/guides/code-quality-metrics/untyped-attributes.py +++ b/tests/unit/skills/implementations/guides/code-quality-metrics/untyped-attributes.py @@ -3,9 +3,9 @@ from codegen.sdk.core.codebase import CodebaseType from codegen.sdk.core.placeholder.placeholder_type import TypePlaceholder from codegen.sdk.enums import ProgrammingLanguage -from codegen.sdk.skills.core.skill import Skill -from codegen.sdk.skills.core.skill_test import SkillTestCase, SkillTestCasePyFile, SkillTestCaseTSFile -from codegen.sdk.skills.core.utils import skill, skill_impl +from tests.shared.skills.decorators import skill, skill_impl +from tests.shared.skills.skill import Skill +from tests.shared.skills.skill_test import SkillTestCase, SkillTestCasePyFile, SkillTestCaseTSFile CountUntypedAttributesInCodebasePyTest = SkillTestCase( [ diff --git a/src/codegen/sdk/skills/guides/code-quality-metrics/untyped-parameters.py b/tests/unit/skills/implementations/guides/code-quality-metrics/untyped-parameters.py similarity index 93% rename from src/codegen/sdk/skills/guides/code-quality-metrics/untyped-parameters.py rename to tests/unit/skills/implementations/guides/code-quality-metrics/untyped-parameters.py index 32b02d1d1..b179f7599 100644 --- a/src/codegen/sdk/skills/guides/code-quality-metrics/untyped-parameters.py +++ b/tests/unit/skills/implementations/guides/code-quality-metrics/untyped-parameters.py @@ -2,9 +2,9 @@ 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.skill_test import SkillTestCase, SkillTestCasePyFile -from codegen.sdk.skills.core.utils import skill, skill_impl +from tests.shared.skills.decorators import skill, skill_impl +from tests.shared.skills.skill import Skill +from tests.shared.skills.skill_test import SkillTestCase, SkillTestCasePyFile CountUntypedParametersTest = SkillTestCase( [ diff --git a/src/codegen/sdk/skills/guides/code-quality-metrics/untyped-return-types.py b/tests/unit/skills/implementations/guides/code-quality-metrics/untyped-return-types.py similarity index 92% rename from src/codegen/sdk/skills/guides/code-quality-metrics/untyped-return-types.py rename to tests/unit/skills/implementations/guides/code-quality-metrics/untyped-return-types.py index b1fd41c6a..82b492792 100644 --- a/src/codegen/sdk/skills/guides/code-quality-metrics/untyped-return-types.py +++ b/tests/unit/skills/implementations/guides/code-quality-metrics/untyped-return-types.py @@ -3,9 +3,9 @@ from codegen.sdk.core.codebase import CodebaseType from codegen.sdk.core.placeholder.placeholder import Placeholder from codegen.sdk.enums import ProgrammingLanguage -from codegen.sdk.skills.core.skill import Skill -from codegen.sdk.skills.core.skill_test import SkillTestCase, SkillTestCasePyFile -from codegen.sdk.skills.core.utils import skill, skill_impl +from tests.shared.skills.decorators import skill, skill_impl +from tests.shared.skills.skill import Skill +from tests.shared.skills.skill_test import SkillTestCase, SkillTestCasePyFile CountUntypedReturnStatementsTest = SkillTestCase( files=[ diff --git a/src/codegen/sdk/skills/guides/codebase-ai.py b/tests/unit/skills/implementations/guides/codebase-ai.py similarity index 98% rename from src/codegen/sdk/skills/guides/codebase-ai.py rename to tests/unit/skills/implementations/guides/codebase-ai.py index 226e7401b..713740e06 100644 --- a/src/codegen/sdk/skills/guides/codebase-ai.py +++ b/tests/unit/skills/implementations/guides/codebase-ai.py @@ -3,9 +3,9 @@ from codegen.sdk.core.codebase import CodebaseType from codegen.sdk.core.function import Function from codegen.sdk.enums import ProgrammingLanguage -from codegen.sdk.skills.core.skill import Skill -from codegen.sdk.skills.core.skill_test import SkillTestCase, SkillTestCasePyFile -from codegen.sdk.skills.core.utils import skill, skill_impl +from tests.shared.skills.decorators import skill, skill_impl +from tests.shared.skills.skill import Skill +from tests.shared.skills.skill_test import SkillTestCase, SkillTestCasePyFile MethodSummaryGeneratorPyTestCase = SkillTestCase( [ diff --git a/src/codegen/sdk/skills/guides/complex-renaming.py b/tests/unit/skills/implementations/guides/complex-renaming.py similarity index 98% rename from src/codegen/sdk/skills/guides/complex-renaming.py rename to tests/unit/skills/implementations/guides/complex-renaming.py index 5a36f00ba..b3694b2aa 100644 --- a/src/codegen/sdk/skills/guides/complex-renaming.py +++ b/tests/unit/skills/implementations/guides/complex-renaming.py @@ -2,9 +2,9 @@ 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.skill_test import SkillTestCase, SkillTestCasePyFile, SkillTestCaseTSFile -from codegen.sdk.skills.core.utils import skill, skill_impl +from tests.shared.skills.decorators import skill, skill_impl +from tests.shared.skills.skill import Skill +from tests.shared.skills.skill_test import SkillTestCase, SkillTestCasePyFile, SkillTestCaseTSFile RenameFunctionAndUpdateReferencesPyTestCase = SkillTestCase( [ diff --git a/src/codegen/sdk/skills/guides/creating-documentation.py b/tests/unit/skills/implementations/guides/creating-documentation.py similarity index 98% rename from src/codegen/sdk/skills/guides/creating-documentation.py rename to tests/unit/skills/implementations/guides/creating-documentation.py index dcaa671f4..c7fa4cf3e 100644 --- a/src/codegen/sdk/skills/guides/creating-documentation.py +++ b/tests/unit/skills/implementations/guides/creating-documentation.py @@ -3,9 +3,9 @@ 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.skill_test import SkillTestCase, SkillTestCasePyFile, SkillTestCaseTSFile -from codegen.sdk.skills.core.utils import skill, skill_impl +from tests.shared.skills.decorators import skill, skill_impl +from tests.shared.skills.skill import Skill +from tests.shared.skills.skill_test import SkillTestCase, SkillTestCasePyFile, SkillTestCaseTSFile UpdateFunctionDocstringPyTestCase = SkillTestCase( [ diff --git a/src/codegen/sdk/skills/guides/deleting-dead-code.py b/tests/unit/skills/implementations/guides/deleting-dead-code.py similarity index 98% rename from src/codegen/sdk/skills/guides/deleting-dead-code.py rename to tests/unit/skills/implementations/guides/deleting-dead-code.py index 548472f57..c6f7a99c4 100644 --- a/src/codegen/sdk/skills/guides/deleting-dead-code.py +++ b/tests/unit/skills/implementations/guides/deleting-dead-code.py @@ -3,9 +3,9 @@ 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.skill_test import SkillTestCase, SkillTestCasePyFile, SkillTestCaseTSFile -from codegen.sdk.skills.core.utils import skill, skill_impl +from tests.shared.skills.decorators import skill, skill_impl +from tests.shared.skills.skill import Skill +from tests.shared.skills.skill_test import SkillTestCase, SkillTestCasePyFile, SkillTestCaseTSFile RemoveUnusedSymbolsPyTestCase = SkillTestCase( [ diff --git a/src/codegen/sdk/skills/guides/increase-type-coverage.py b/tests/unit/skills/implementations/guides/increase-type-coverage.py similarity index 98% rename from src/codegen/sdk/skills/guides/increase-type-coverage.py rename to tests/unit/skills/implementations/guides/increase-type-coverage.py index db5ebb25f..52bf3a854 100644 --- a/src/codegen/sdk/skills/guides/increase-type-coverage.py +++ b/tests/unit/skills/implementations/guides/increase-type-coverage.py @@ -2,9 +2,9 @@ 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.skill_test import SkillTestCase, SkillTestCasePyFile, SkillTestCaseTSFile -from codegen.sdk.skills.core.utils import skill, skill_impl +from tests.shared.skills.decorators import skill, skill_impl +from tests.shared.skills.skill import Skill +from tests.shared.skills.skill_test import SkillTestCase, SkillTestCasePyFile, SkillTestCaseTSFile CountTypedParametersPyTestCase = SkillTestCase( [ diff --git a/src/codegen/sdk/skills/guides/manipulating-collections.py b/tests/unit/skills/implementations/guides/manipulating-collections.py similarity index 97% rename from src/codegen/sdk/skills/guides/manipulating-collections.py rename to tests/unit/skills/implementations/guides/manipulating-collections.py index 44ba69676..1f596e1da 100644 --- a/src/codegen/sdk/skills/guides/manipulating-collections.py +++ b/tests/unit/skills/implementations/guides/manipulating-collections.py @@ -3,9 +3,9 @@ from codegen.sdk.core.codebase import CodebaseType from codegen.sdk.core.symbol_groups.list import List from codegen.sdk.enums import ProgrammingLanguage -from codegen.sdk.skills.core.skill import Skill -from codegen.sdk.skills.core.skill_test import SkillTestCase, SkillTestCasePyFile, SkillTestCaseTSFile -from codegen.sdk.skills.core.utils import skill, skill_impl +from tests.shared.skills.decorators import skill, skill_impl +from tests.shared.skills.skill import Skill +from tests.shared.skills.skill_test import SkillTestCase, SkillTestCasePyFile, SkillTestCaseTSFile AddParameterToFunctionPyTestCase = SkillTestCase( [ diff --git a/src/codegen/sdk/skills/guides/organize-your-codebase.py b/tests/unit/skills/implementations/guides/organize-your-codebase.py similarity index 98% rename from src/codegen/sdk/skills/guides/organize-your-codebase.py rename to tests/unit/skills/implementations/guides/organize-your-codebase.py index d7dca9431..b78330b51 100644 --- a/src/codegen/sdk/skills/guides/organize-your-codebase.py +++ b/tests/unit/skills/implementations/guides/organize-your-codebase.py @@ -2,9 +2,9 @@ from codegen.sdk.core.codebase import CodebaseType, TSCodebaseType from codegen.sdk.enums import ProgrammingLanguage -from codegen.sdk.skills.core.skill import Skill -from codegen.sdk.skills.core.skill_test import SkillTestCase, SkillTestCasePyFile, SkillTestCaseTSFile -from codegen.sdk.skills.core.utils import skill, skill_impl +from tests.shared.skills.decorators import skill, skill_impl +from tests.shared.skills.skill import Skill +from tests.shared.skills.skill_test import SkillTestCase, SkillTestCasePyFile, SkillTestCaseTSFile SplitFunctionsIntoSeparateFilesPyTestCase = SkillTestCase( [ diff --git a/src/codegen/sdk/skills/if_statement_skills.py b/tests/unit/skills/implementations/if_statement_skills.py similarity index 95% rename from src/codegen/sdk/skills/if_statement_skills.py rename to tests/unit/skills/implementations/if_statement_skills.py index 9cc179de6..aeb3b1991 100644 --- a/src/codegen/sdk/skills/if_statement_skills.py +++ b/tests/unit/skills/implementations/if_statement_skills.py @@ -2,9 +2,9 @@ from codegen.sdk.core.codebase import PyCodebaseType, TSCodebaseType from codegen.sdk.enums import ProgrammingLanguage -from codegen.sdk.skills.core.skill import Skill -from codegen.sdk.skills.core.skill_test import SkillTestCase, SkillTestCasePyFile, SkillTestCaseTSFile -from codegen.sdk.skills.core.utils import skill, skill_impl +from tests.shared.skills.decorators import skill, skill_impl +from tests.shared.skills.skill import Skill +from tests.shared.skills.skill_test import SkillTestCase, SkillTestCasePyFile, SkillTestCaseTSFile py_if_input = """ def foo(): diff --git a/src/codegen/sdk/skills/move_symbols_skills.py b/tests/unit/skills/implementations/move_symbols_skills.py similarity index 94% rename from src/codegen/sdk/skills/move_symbols_skills.py rename to tests/unit/skills/implementations/move_symbols_skills.py index 91f60dd8e..a68b48eec 100644 --- a/src/codegen/sdk/skills/move_symbols_skills.py +++ b/tests/unit/skills/implementations/move_symbols_skills.py @@ -1,8 +1,8 @@ from codegen.sdk.core.codebase import CodebaseType, PyCodebaseType from codegen.sdk.enums import ProgrammingLanguage -from codegen.sdk.skills.core.skill import Skill -from codegen.sdk.skills.core.skill_test import SkillTestCase, SkillTestCasePyFile -from codegen.sdk.skills.core.utils import skill, skill_impl +from tests.shared.skills.decorators import skill, skill_impl +from tests.shared.skills.skill import Skill +from tests.shared.skills.skill_test import SkillTestCase, SkillTestCasePyFile ######################################################################################################################## # Py test cases diff --git a/src/codegen/sdk/skills/type_inheritance_skills.py b/tests/unit/skills/implementations/type_inheritance_skills.py similarity index 98% rename from src/codegen/sdk/skills/type_inheritance_skills.py rename to tests/unit/skills/implementations/type_inheritance_skills.py index c22b20341..3f272cf35 100644 --- a/src/codegen/sdk/skills/type_inheritance_skills.py +++ b/tests/unit/skills/implementations/type_inheritance_skills.py @@ -6,9 +6,9 @@ from codegen.sdk.core.symbol_groups.dict import Dict from codegen.sdk.core.type_alias import TypeAlias from codegen.sdk.enums import ProgrammingLanguage -from codegen.sdk.skills.core.skill import Skill -from codegen.sdk.skills.core.skill_test import SkillTestCase, SkillTestCaseTSFile -from codegen.sdk.skills.core.utils import skill, skill_impl +from tests.shared.skills.decorators import skill, skill_impl +from tests.shared.skills.skill import Skill +from tests.shared.skills.skill_test import SkillTestCase, SkillTestCaseTSFile ts_input1 = """ export type MyMapper = { diff --git a/tests/unit/codegen/sdk/skills/snapshots/test_skills/test_all_example_skills/call_graph_filter-PYTHON-case-0/call_graph_filter_unnamed.json b/tests/unit/skills/snapshots/test_skills/test_all_example_skills/call_graph_filter-PYTHON-case-0/call_graph_filter_unnamed.json similarity index 100% rename from tests/unit/codegen/sdk/skills/snapshots/test_skills/test_all_example_skills/call_graph_filter-PYTHON-case-0/call_graph_filter_unnamed.json rename to tests/unit/skills/snapshots/test_skills/test_all_example_skills/call_graph_filter-PYTHON-case-0/call_graph_filter_unnamed.json diff --git a/tests/unit/codegen/sdk/skills/snapshots/test_skills/test_all_example_skills/call_graph_from_node-PYTHON-case-0/call_graph_from_node_unnamed.json b/tests/unit/skills/snapshots/test_skills/test_all_example_skills/call_graph_from_node-PYTHON-case-0/call_graph_from_node_unnamed.json similarity index 100% rename from tests/unit/codegen/sdk/skills/snapshots/test_skills/test_all_example_skills/call_graph_from_node-PYTHON-case-0/call_graph_from_node_unnamed.json rename to tests/unit/skills/snapshots/test_skills/test_all_example_skills/call_graph_from_node-PYTHON-case-0/call_graph_from_node_unnamed.json diff --git a/tests/unit/codegen/sdk/skills/snapshots/test_skills/test_all_example_skills/call_paths_between_nodes-PYTHON-case-0/call_paths_between_nodes_unnamed.json b/tests/unit/skills/snapshots/test_skills/test_all_example_skills/call_paths_between_nodes-PYTHON-case-0/call_paths_between_nodes_unnamed.json similarity index 100% rename from tests/unit/codegen/sdk/skills/snapshots/test_skills/test_all_example_skills/call_paths_between_nodes-PYTHON-case-0/call_paths_between_nodes_unnamed.json rename to tests/unit/skills/snapshots/test_skills/test_all_example_skills/call_paths_between_nodes-PYTHON-case-0/call_paths_between_nodes_unnamed.json diff --git a/tests/unit/codegen/sdk/skills/snapshots/test_skills/test_all_example_skills/dead_code-PYTHON-case-0/dead_code_unnamed.json b/tests/unit/skills/snapshots/test_skills/test_all_example_skills/dead_code-PYTHON-case-0/dead_code_unnamed.json similarity index 100% rename from tests/unit/codegen/sdk/skills/snapshots/test_skills/test_all_example_skills/dead_code-PYTHON-case-0/dead_code_unnamed.json rename to tests/unit/skills/snapshots/test_skills/test_all_example_skills/dead_code-PYTHON-case-0/dead_code_unnamed.json diff --git a/tests/unit/codegen/sdk/skills/snapshots/test_skills/test_all_example_skills/file_app_import_graph-PYTHON-case-0/file_app_import_graph_unnamed.json b/tests/unit/skills/snapshots/test_skills/test_all_example_skills/file_app_import_graph-PYTHON-case-0/file_app_import_graph_unnamed.json similarity index 100% rename from tests/unit/codegen/sdk/skills/snapshots/test_skills/test_all_example_skills/file_app_import_graph-PYTHON-case-0/file_app_import_graph_unnamed.json rename to tests/unit/skills/snapshots/test_skills/test_all_example_skills/file_app_import_graph-PYTHON-case-0/file_app_import_graph_unnamed.json diff --git a/tests/unit/codegen/sdk/skills/snapshots/test_skills/test_all_example_skills/foreign_key_graph-PYTHON-case-0/foreign_key_graph_unnamed.json b/tests/unit/skills/snapshots/test_skills/test_all_example_skills/foreign_key_graph-PYTHON-case-0/foreign_key_graph_unnamed.json similarity index 100% rename from tests/unit/codegen/sdk/skills/snapshots/test_skills/test_all_example_skills/foreign_key_graph-PYTHON-case-0/foreign_key_graph_unnamed.json rename to tests/unit/skills/snapshots/test_skills/test_all_example_skills/foreign_key_graph-PYTHON-case-0/foreign_key_graph_unnamed.json diff --git a/tests/unit/codegen/sdk/skills/snapshots/test_skills/test_all_example_skills/repo_dir_tree-PYTHON-case-0/repo_dir_tree_unnamed.json b/tests/unit/skills/snapshots/test_skills/test_all_example_skills/repo_dir_tree-PYTHON-case-0/repo_dir_tree_unnamed.json similarity index 100% rename from tests/unit/codegen/sdk/skills/snapshots/test_skills/test_all_example_skills/repo_dir_tree-PYTHON-case-0/repo_dir_tree_unnamed.json rename to tests/unit/skills/snapshots/test_skills/test_all_example_skills/repo_dir_tree-PYTHON-case-0/repo_dir_tree_unnamed.json diff --git a/tests/unit/codegen/sdk/skills/test_skills.py b/tests/unit/skills/test_skills.py similarity index 79% rename from tests/unit/codegen/sdk/skills/test_skills.py rename to tests/unit/skills/test_skills.py index 8d4a0b2de..11d83baca 100644 --- a/tests/unit/codegen/sdk/skills/test_skills.py +++ b/tests/unit/skills/test_skills.py @@ -2,10 +2,10 @@ from codegen.git.schemas.repo_config import BaseRepoConfig from codegen.sdk.codebase.factory.get_session import get_codebase_session -from codegen.sdk.skills.core.skill_implementation import SkillImplementation -from codegen.sdk.skills.core.skill_test import SkillTestCase -from codegen.sdk.skills.core.utils import get_all_skill_implementations -from codegen.sdk.skills.utils.utils import verify_skill_output +from tests.shared.skills.skill_implementation import SkillImplementation +from tests.shared.skills.skill_test import SkillTestCase +from tests.shared.skills.utils import get_all_skill_implementations +from tests.shared.skills.verify_skill_output import verify_skill_output skill_implementations = get_all_skill_implementations() cases = [(skill, test_case, idx) for skill in skill_implementations for idx, test_case in enumerate(skill.test_cases) if not skill.external] diff --git a/uv.lock b/uv.lock index 7d56640c1..8990481d7 100644 --- a/uv.lock +++ b/uv.lock @@ -371,25 +371,19 @@ source = { editable = "." } dependencies = [ { name = "anthropic" }, { name = "astor" }, - { name = "autoflake" }, { name = "backoff" }, - { name = "black" }, { name = "click" }, { name = "codeowners" }, { name = "dataclasses-json" }, { name = "datamodel-code-generator" }, { name = "dicttoxml" }, { name = "docstring-parser" }, - { name = "emoji" }, { name = "fastapi", extra = ["standard"] }, { name = "gitpython" }, { name = "giturlparse" }, { name = "hatch-vcs" }, { name = "hatchling" }, { name = "humanize" }, - { name = "inflection" }, - { name = "isort" }, - { name = "jsbeautifier" }, { name = "lazy-object-proxy" }, { name = "loguru" }, { name = "mini-racer" }, @@ -442,12 +436,17 @@ dev = [ { name = "austin-dist" }, { name = "austin-python" }, { name = "autoflake" }, + { name = "black" }, { name = "braintrust" }, { name = "cibuildwheel", extra = ["uv"] }, { name = "coverage" }, { name = "cython" }, { name = "deptry" }, + { name = "emoji" }, { name = "filelock" }, + { name = "inflection" }, + { name = "isort" }, + { name = "jsbeautifier" }, { name = "keyrings-codeartifact" }, { name = "mypy", extra = ["faster-cache", "mypyc"] }, { name = "pre-commit" }, @@ -468,25 +467,19 @@ dev = [ requires-dist = [ { name = "anthropic", specifier = "==0.23.1" }, { name = "astor", specifier = ">=0.8.1,<1.0.0" }, - { name = "autoflake", specifier = ">=2.3.1" }, { name = "backoff", specifier = "==2.2.1" }, - { name = "black", specifier = ">=24.8.0" }, { name = "click", specifier = ">=8.1.7" }, { name = "codeowners", specifier = ">=0.6.0,<1.0.0" }, { name = "dataclasses-json", specifier = ">=0.6.4,<1.0.0" }, { name = "datamodel-code-generator", specifier = ">=0.26.5" }, { name = "dicttoxml", specifier = ">=1.7.16,<2.0.0" }, { name = "docstring-parser", specifier = ">=0.16,<1.0" }, - { name = "emoji", specifier = ">=2.14.0" }, { name = "fastapi", extras = ["standard"], specifier = ">=0.115.2,<1.0.0" }, { name = "gitpython", specifier = "==3.1.44" }, { name = "giturlparse" }, { name = "hatch-vcs", specifier = ">=0.4.0" }, { name = "hatchling", specifier = ">=1.25.0" }, { name = "humanize", specifier = ">=4.10.0,<5.0.0" }, - { name = "inflection", specifier = ">=0.5.1,<1.0.0" }, - { name = "isort", specifier = ">=5.13.2" }, - { name = "jsbeautifier", specifier = ">=1.15.1,<2.0.0" }, { name = "lazy-object-proxy", specifier = ">=0.0.0" }, { name = "loguru", specifier = ">=0.7.2,<1.0.0" }, { name = "mini-racer", specifier = ">=0.12.4" }, @@ -535,12 +528,17 @@ dev = [ { name = "austin-dist", specifier = ">=3.7.0" }, { name = "austin-python", specifier = ">=1.7.1" }, { name = "autoflake", specifier = ">=2.3.1" }, + { name = "black", specifier = ">=24.8.0" }, { name = "braintrust", specifier = ">=0.0.160" }, { name = "cibuildwheel", extras = ["uv"], specifier = ">=2.22.0" }, { name = "coverage", specifier = ">=7.6.1,<8.0.0" }, { name = "cython", specifier = ">=3.0.11" }, { name = "deptry", specifier = ">=0.22.0" }, + { name = "emoji", specifier = ">=2.14.0" }, { name = "filelock", specifier = ">=3.15.4,<4.0.0" }, + { name = "inflection", specifier = ">=0.5.1,<1.0.0" }, + { name = "isort", specifier = ">=5.13.2" }, + { name = "jsbeautifier", specifier = ">=1.15.1,<2.0.0" }, { name = "keyrings-codeartifact", specifier = ">=1.3.3" }, { name = "mypy", extras = ["mypyc", "faster-cache"], specifier = ">=1.13.0" }, { name = "pre-commit", specifier = ">=4.0.1" },