From dbe0161614d6a030e7ef31013950aed45b86ec98 Mon Sep 17 00:00:00 2001 From: bagel897 Date: Mon, 27 Jan 2025 14:53:56 -0800 Subject: [PATCH 1/6] Fix gradio --- src/codegen/sdk/core/file.py | 6 +++++- src/codegen/sdk/core/interfaces/importable.py | 9 ++++++++- tests/integration/codemod/repos/open_source/gradio.json | 7 +++++++ 3 files changed, 20 insertions(+), 2 deletions(-) create mode 100644 tests/integration/codemod/repos/open_source/gradio.json diff --git a/src/codegen/sdk/core/file.py b/src/codegen/sdk/core/file.py index e242636f4..6bd39c969 100644 --- a/src/codegen/sdk/core/file.py +++ b/src/codegen/sdk/core/file.py @@ -819,7 +819,11 @@ def valid_symbol_names(self) -> dict[str, Symbol | TImport | WildcardImport[TImp @reader def resolve_name(self, name: str, start_byte: int | None = None) -> Symbol | Import | WildcardImport | None: if resolved := self.valid_symbol_names.get(name): - return resolved + if start_byte is None or resolved.end_byte <= start_byte: + return resolved + for symbol in self.symbols: + if symbol.start_byte <= start_byte and symbol.name == name: + return symbol @property @reader diff --git a/src/codegen/sdk/core/interfaces/importable.py b/src/codegen/sdk/core/interfaces/importable.py index 809fb3efe..f84442cba 100644 --- a/src/codegen/sdk/core/interfaces/importable.py +++ b/src/codegen/sdk/core/interfaces/importable.py @@ -1,3 +1,4 @@ +import logging from typing import TYPE_CHECKING, Generic, Self, TypeVar, Union from tree_sitter import Node as TSNode @@ -20,6 +21,8 @@ Parent = TypeVar("Parent", bound="Editable") +logger = logging.getLogger(__name__) + @apidoc class Importable(Expression[Parent], HasName, Generic[Parent]): @@ -90,7 +93,11 @@ def recompute(self, incremental: bool = False) -> list["Importable"]: """ if incremental: self._remove_internal_edges(EdgeType.SYMBOL_USAGE) - self._compute_dependencies() + try: + self._compute_dependencies() + except Exception as e: + logger.error(f"Error in file {self.file.path} while computing dependencies for symbol {self.name}") + raise e if incremental: return self.descendant_symbols + self.file.get_nodes(sort=False) return [] diff --git a/tests/integration/codemod/repos/open_source/gradio.json b/tests/integration/codemod/repos/open_source/gradio.json new file mode 100644 index 000000000..0e3d56376 --- /dev/null +++ b/tests/integration/codemod/repos/open_source/gradio.json @@ -0,0 +1,7 @@ +{ + "name": "gradio", + "commit": "f40747c9fd12d160ac9f7b3c5273be6be815efac", + "url": "https://github.com/gradio-app/gradio", + "language": "PYTHON", + "size": "small" +} From 90ab713ed81cd0ba16a0b486341771acc1ce18de Mon Sep 17 00:00:00 2001 From: codegen-bot Date: Mon, 27 Jan 2025 15:06:18 -0800 Subject: [PATCH 2/6] Fix bug --- src/codegen/sdk/core/file.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/codegen/sdk/core/file.py b/src/codegen/sdk/core/file.py index 6bd39c969..d22cd227d 100644 --- a/src/codegen/sdk/core/file.py +++ b/src/codegen/sdk/core/file.py @@ -819,11 +819,11 @@ def valid_symbol_names(self) -> dict[str, Symbol | TImport | WildcardImport[TImp @reader def resolve_name(self, name: str, start_byte: int | None = None) -> Symbol | Import | WildcardImport | None: if resolved := self.valid_symbol_names.get(name): - if start_byte is None or resolved.end_byte <= start_byte: - return resolved - for symbol in self.symbols: - if symbol.start_byte <= start_byte and symbol.name == name: - return symbol + if start_byte is not None and resolved.end_byte > start_byte: + for symbol in self.symbols: + if symbol.start_byte <= start_byte and symbol.name == name: + return symbol + return resolved @property @reader From 3d3967c0cfd4d2ea797174f8a928f802d7373b9a Mon Sep 17 00:00:00 2001 From: codegen-bot Date: Mon, 27 Jan 2025 15:07:13 -0800 Subject: [PATCH 3/6] hack: put a ts_node on wildcards --- src/codegen/sdk/core/import_resolution.py | 1 + 1 file changed, 1 insertion(+) diff --git a/src/codegen/sdk/core/import_resolution.py b/src/codegen/sdk/core/import_resolution.py index 489376705..e9d44e9c0 100644 --- a/src/codegen/sdk/core/import_resolution.py +++ b/src/codegen/sdk/core/import_resolution.py @@ -624,6 +624,7 @@ class WildcardImport(Chainable, Generic[TImport]): def __init__(self, imp: TImport, symbol: Importable): self.imp = imp self.symbol = symbol + self.ts_node = imp.ts_node @reader @noapidoc From 634126817d7ac30292aff3a7274a6398cb094db4 Mon Sep 17 00:00:00 2001 From: bagel897 Date: Mon, 27 Jan 2025 15:12:14 -0800 Subject: [PATCH 4/6] Fix email --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index f7474a234..48fc6d5e0 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -86,7 +86,7 @@ classifiers = [ "Topic :: Software Development :: Code Generators", "Topic :: Software Development :: Libraries", ] -authors = [{ name = "Codegen Team", email = "team+codegenbot@codegen.sh" }] +authors = [{ name = "Codegen Team", email = "team@codegen.sh" }] keywords = [ "codegen", "codebase", From a6bf4eff676b345557dd75369aab1941526d8cd2 Mon Sep 17 00:00:00 2001 From: bagel897 Date: Mon, 27 Jan 2025 15:15:28 -0800 Subject: [PATCH 5/6] update lock --- uv.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/uv.lock b/uv.lock index 41dbf5b5b..c74fd17fa 100644 --- a/uv.lock +++ b/uv.lock @@ -385,7 +385,6 @@ dependencies = [ { name = "hatchling" }, { name = "humanize" }, { name = "lazy-object-proxy" }, - { name = "loguru" }, { name = "mini-racer" }, { name = "networkx" }, { name = "openai" }, @@ -448,6 +447,7 @@ dev = [ { name = "isort" }, { name = "jsbeautifier" }, { name = "keyrings-codeartifact" }, + { name = "loguru" }, { name = "mypy", extra = ["faster-cache", "mypyc"] }, { name = "pre-commit" }, { name = "pre-commit-uv" }, @@ -482,7 +482,6 @@ requires-dist = [ { name = "hatchling", specifier = ">=1.25.0" }, { name = "humanize", specifier = ">=4.10.0,<5.0.0" }, { name = "lazy-object-proxy", specifier = ">=0.0.0" }, - { name = "loguru", specifier = ">=0.7.3" }, { name = "mini-racer", specifier = ">=0.12.4" }, { name = "networkx", specifier = ">=3.4.1" }, { name = "openai", specifier = "==1.59.9" }, @@ -541,6 +540,7 @@ dev = [ { name = "isort", specifier = ">=5.13.2" }, { name = "jsbeautifier", specifier = ">=1.15.1,<2.0.0" }, { name = "keyrings-codeartifact", specifier = ">=1.3.3" }, + { name = "loguru", specifier = ">=0.7.3" }, { name = "mypy", extras = ["mypyc", "faster-cache"], specifier = ">=1.13.0" }, { name = "pre-commit", specifier = ">=4.0.1" }, { name = "pre-commit-uv", specifier = ">=4.1.4" }, From a2beca4e266a24e9abc61b66241710e4b6690ef4 Mon Sep 17 00:00:00 2001 From: bagel897 Date: Mon, 27 Jan 2025 15:15:52 -0800 Subject: [PATCH 6/6] reformat --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index cb91f6758..260fa94f9 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Codegen -![PyPI](https://img.shields.io/pypi/v/codegen?color=blue) [![Documentation](https://img.shields.io/badge/docs-docs.codegen.com-purple)](https://docs.codegen.com) [![Slack Community](https://img.shields.io/badge/slack-community-4A154B?logo=slack)](https://community.codegen.com) [![Follow on X](https://img.shields.io/twitter/follow/codegen)](https://x.com/codegen) +![PyPI](https://img.shields.io/pypi/v/codegen?color=blue) [![Documentation](https://img.shields.io/badge/docs-docs.codegen.com-purple)](https://docs.codegen.com) [![Slack Community](https://img.shields.io/badge/slack-community-4A154B?logo=slack)](https://community.codegen.com) [![Follow on X](https://img.shields.io/twitter/follow/codegen)](https://x.com/codegen) [Codegen](https://docs.codegen.com) is a python library for manipulating codebases.