diff --git a/.github/workflows/claude-code-review.yml b/.github/workflows/claude-code-review.yml index 31c04fdf..52a706ac 100644 --- a/.github/workflows/claude-code-review.yml +++ b/.github/workflows/claude-code-review.yml @@ -12,19 +12,15 @@ on: jobs: claude-review: - # Optional: Filter by PR author - # if: | - # github.event.pull_request.user.login == 'external-contributor' || - # github.event.pull_request.user.login == 'new-developer' || - # github.event.pull_request.author_association == 'FIRST_TIME_CONTRIBUTOR' - + if: ${{ !startsWith(github.head_ref, 'openapi-generation-') }} + runs-on: ubuntu-latest permissions: contents: read pull-requests: read issues: read id-token: write - + steps: - name: Checkout repository uses: actions/checkout@v4 @@ -46,12 +42,12 @@ jobs: - Performance considerations - Security concerns - Test coverage - + Use the repository's CLAUDE.md for guidance on style and conventions. Be constructive and helpful in your feedback. Use `gh pr comment` with your Bash tool to leave your review as a comment on the PR. - + # See https://github.com/anthropics/claude-code-action/blob/main/docs/usage.md - # or https://docs.claude.com/en/docs/claude-code/sdk#command-line for available options + # or https://code.claude.com/docs/en/cli-reference for available options claude_args: '--allowed-tools "Bash(gh issue view:*),Bash(gh search:*),Bash(gh issue list:*),Bash(gh pr comment:*),Bash(gh pr diff:*),Bash(gh pr view:*),Bash(gh pr list:*)"' diff --git a/.github/workflows/claude.yml b/.github/workflows/claude.yml index ec2fc2d6..d300267f 100644 --- a/.github/workflows/claude.yml +++ b/.github/workflows/claude.yml @@ -1,14 +1,22 @@ name: Claude Code + on: + issue_comment: + types: [created] pull_request_review_comment: types: [created] + issues: + types: [opened, assigned] pull_request_review: types: [submitted] + jobs: claude: if: | + (github.event_name == 'issue_comment' && contains(github.event.comment.body, '@claude')) || (github.event_name == 'pull_request_review_comment' && contains(github.event.comment.body, '@claude')) || - (github.event_name == 'pull_request_review' && contains(github.event.review.body, '@claude')) + (github.event_name == 'pull_request_review' && contains(github.event.review.body, '@claude')) || + (github.event_name == 'issues' && (contains(github.event.issue.body, '@claude') || contains(github.event.issue.title, '@claude'))) runs-on: ubuntu-latest permissions: contents: read @@ -21,18 +29,22 @@ jobs: uses: actions/checkout@v4 with: fetch-depth: 1 + - name: Run Claude Code id: claude uses: anthropics/claude-code-action@v1 with: claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }} - + # This is an optional setting that allows Claude to read CI results on PRs additional_permissions: | actions: read + # Optional: Give a custom prompt to Claude. If this is not specified, Claude will perform the instructions specified in the comment that tagged it. # prompt: 'Update the pull request description to include a summary of changes.' + # Optional: Add claude_args to customize behavior and configuration # See https://github.com/anthropics/claude-code-action/blob/main/docs/usage.md - # or https://docs.claude.com/en/docs/claude-code/sdk#command-line for available options - # claude_args: '--model claude-opus-4-1-20250805 --allowed-tools Bash(gh pr:*)' + # or https://code.claude.com/docs/en/cli-reference for available options + # claude_args: '--allowed-tools Bash(gh pr:*)' + diff --git a/src/rapidata/rapidata_client/benchmark/participant/_participant.py b/src/rapidata/rapidata_client/benchmark/participant/_participant.py index 27b1cbf7..ccf62bce 100644 --- a/src/rapidata/rapidata_client/benchmark/participant/_participant.py +++ b/src/rapidata/rapidata_client/benchmark/participant/_participant.py @@ -42,7 +42,6 @@ def _process_single_sample_upload( from rapidata.api_client.models.i_asset_input_existing_asset_input import ( IAssetInputExistingAssetInput, ) - from rapidata.api_client.models.existing_asset_input import ExistingAssetInput from rapidata.api_client.models.i_asset_input import IAssetInput last_exception = None diff --git a/src/rapidata/rapidata_client/config/upload_config.py b/src/rapidata/rapidata_client/config/upload_config.py index a9d53286..83ccc2d8 100644 --- a/src/rapidata/rapidata_client/config/upload_config.py +++ b/src/rapidata/rapidata_client/config/upload_config.py @@ -1,6 +1,7 @@ from pathlib import Path from typing import Callable from pydantic import BaseModel, Field, field_validator +import shutil from rapidata.rapidata_client.config import logger # Type alias for config update handlers @@ -34,8 +35,9 @@ class UploadConfig(BaseModel): maxRetries: int = Field(default=3) cacheUploads: bool = Field(default=True) cacheTimeout: float = Field(default=0.1) - cacheLocation: Path = Field(default=Path.home() / ".rapidata" / "upload_cache") - cacheSizeLimit: int = Field(default=100_000_000) # 100MB + cacheLocation: Path = Field( + default=Path.home() / ".cache" / "rapidata" / "upload_cache" + ) @field_validator("maxWorkers") @classmethod @@ -50,6 +52,7 @@ def validate_max_workers(cls, v: int) -> int: def __init__(self, **kwargs): super().__init__(**kwargs) self._notify_handlers() + self._migrate_cache() def __setattr__(self, name: str, value) -> None: super().__setattr__(name, value) @@ -62,3 +65,16 @@ def _notify_handlers(self) -> None: handler(self) except Exception as e: logger.warning(f"Warning: UploadConfig handler failed: {e}") + + def _migrate_cache(self) -> None: + """Migrate the cache from the old location to the new location.""" + old_cache = Path.home() / ".rapidata" / "upload_cache" + new_cache = self.cacheLocation + if old_cache.exists() and not new_cache.exists(): + logger.info(f"Migrating cache from {old_cache} to {self.cacheLocation}") + self.cacheLocation.parent.mkdir(parents=True, exist_ok=True) + shutil.move(str(old_cache), str(self.cacheLocation)) + + # Clean up old directory if empty + if old_cache.parent.exists() and not any(old_cache.parent.iterdir()): + old_cache.parent.rmdir() diff --git a/src/rapidata/rapidata_client/datapoints/_asset_uploader.py b/src/rapidata/rapidata_client/datapoints/_asset_uploader.py index 8039a9a8..5605374f 100644 --- a/src/rapidata/rapidata_client/datapoints/_asset_uploader.py +++ b/src/rapidata/rapidata_client/datapoints/_asset_uploader.py @@ -21,7 +21,6 @@ class AssetUploader: rapidata_config.upload.cacheLocation, shards=rapidata_config.upload.maxWorkers, timeout=rapidata_config.upload.cacheTimeout, - size_limit=rapidata_config.upload.cacheSizeLimit, ) def __init__(self, openapi_service: OpenAPIService): @@ -50,15 +49,14 @@ def _handle_config_update(cls, config: UploadConfig): config.cacheLocation, shards=config.maxWorkers, timeout=config.cacheTimeout, - size_limit=config.cacheSizeLimit, ) logger.info( - "AssetUploader shared upload cache updated: location=%s, shards=%s, timeout=%s, size_limit=%s", + "AssetUploader shared upload cache updated: location=%s, shards=%s, timeout=%s", config.cacheLocation, config.maxWorkers, config.cacheTimeout, - config.cacheSizeLimit, ) + except Exception as e: logger.warning(f"Failed to update AssetUploader shared upload cache: {e}")