From d070452abc3a7578f408c58639e29423f2cd34be Mon Sep 17 00:00:00 2001 From: Christine Wang Date: Wed, 12 Feb 2025 16:29:33 -0800 Subject: [PATCH 1/2] clean-up from_repo --- src/codegen/sdk/core/codebase.py | 15 ++++----- .../codegen/git/codebase/conftest.py | 31 +++---------------- 2 files changed, 10 insertions(+), 36 deletions(-) diff --git a/src/codegen/sdk/core/codebase.py b/src/codegen/sdk/core/codebase.py index 3fee74378..c445d15cf 100644 --- a/src/codegen/sdk/core/codebase.py +++ b/src/codegen/sdk/core/codebase.py @@ -1219,11 +1219,10 @@ def set_session_options(self, **kwargs: Unpack[SessionOptions]) -> None: @classmethod def from_repo( cls, - repo_name: str, + repo_full_name: str, *, - tmp_dir: str | None = None, + tmp_dir: str | None = "/tmp/codegen", commit: str | None = None, - shallow: bool = True, programming_language: ProgrammingLanguage | None = None, config: CodebaseConfig = DefaultConfig, ) -> "Codebase": @@ -1240,23 +1239,21 @@ def from_repo( Returns: Codebase: A Codebase instance initialized with the cloned repository """ - logger.info(f"Fetching codebase for {repo_name}") + logger.info(f"Fetching codebase for {repo_full_name}") # Parse repo name - if "/" not in repo_name: + if "/" not in repo_full_name: msg = "repo_name must be in format 'owner/repo'" raise ValueError(msg) - owner, repo = repo_name.split("/") + owner, repo = repo_full_name.split("/") # Setup temp directory - if tmp_dir is None: - tmp_dir = "/tmp/codegen" os.makedirs(tmp_dir, exist_ok=True) logger.info(f"Using directory: {tmp_dir}") # Setup repo path and URL repo_path = os.path.join(tmp_dir, repo) - repo_url = f"https://github.com/{repo_name}.git" + repo_url = f"https://github.com/{repo_full_name}.git" logger.info(f"Will clone {repo_url} to {repo_path}") try: diff --git a/tests/integration/codegen/git/codebase/conftest.py b/tests/integration/codegen/git/codebase/conftest.py index 568606d9d..601027a2a 100644 --- a/tests/integration/codegen/git/codebase/conftest.py +++ b/tests/integration/codegen/git/codebase/conftest.py @@ -1,36 +1,13 @@ import os import pytest -from git import Repo as GitRepo -from codegen.git.repo_operator.local_repo_operator import LocalRepoOperator -from codegen.git.schemas.repo_config import RepoConfig -from codegen.git.utils.clone_url import get_authenticated_clone_url_for_repo_config -from codegen.sdk.codebase.config import ProjectConfig from codegen.sdk.core.codebase import Codebase -from codegen.shared.configs.session_configs import config +from codegen.shared.enums.programming_language import ProgrammingLanguage @pytest.fixture -def repo_config(tmpdir): - repo_config = RepoConfig( - name="Kevin-s-Adventure-Game", - full_name="codegen-sh/Kevin-s-Adventure-Game", - base_dir=str(tmpdir), - ) - yield repo_config - - -@pytest.fixture -def op(repo_config): - os.chdir(repo_config.base_dir) - GitRepo.clone_from(url=get_authenticated_clone_url_for_repo_config(repo_config, token=config.secrets.github_token), to_path=os.path.join(repo_config.base_dir, repo_config.name), depth=1) - op = LocalRepoOperator(repo_config=repo_config) - yield op - - -@pytest.fixture -def codebase(op: LocalRepoOperator): - project_config = ProjectConfig(repo_operator=op) - codebase = Codebase(projects=[project_config]) +def codebase(tmpdir): + os.chdir(tmpdir) + codebase = Codebase.from_repo(repo_full_name="codegen-sh/Kevin-s-Adventure-Game", tmp_dir=tmpdir, programming_language=ProgrammingLanguage.PYTHON) yield codebase From 746d706fffd302435992d784e75a71ac96b029c8 Mon Sep 17 00:00:00 2001 From: Christine Wang Date: Wed, 12 Feb 2025 16:57:20 -0800 Subject: [PATCH 2/2] use token in clone url --- src/codegen/git/repo_operator/local_repo_operator.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/codegen/git/repo_operator/local_repo_operator.py b/src/codegen/git/repo_operator/local_repo_operator.py index 9d84847d3..37501ccef 100644 --- a/src/codegen/git/repo_operator/local_repo_operator.py +++ b/src/codegen/git/repo_operator/local_repo_operator.py @@ -12,7 +12,9 @@ from codegen.git.repo_operator.repo_operator import RepoOperator from codegen.git.schemas.enums import FetchResult from codegen.git.schemas.repo_config import RepoConfig +from codegen.git.utils.clone_url import add_access_token_to_url from codegen.git.utils.file_utils import create_files +from codegen.shared.configs.session_configs import config logger = logging.getLogger(__name__) @@ -112,6 +114,9 @@ def create_from_repo(cls, repo_path: str, url: str, access_token: str | None = N url (str): Git URL of the repository access_token (str | None): Optional GitHub API key for operations that need GitHub access """ + access_token = access_token or config.secrets.github_token + url = add_access_token_to_url(url=url, token=access_token) + # Check if repo already exists if os.path.exists(repo_path): try: