Skip to content
  • Andrey Azeev's avatar
    78eba17c
    feat(s3_client)!: 3.0.0 — unify upload error contract, single retry layer, CI · 78eba17c
    Andrey Azeev authored
    Breaking change: S3Client.upload_from_bytes / upload_from_file now raise
    on upload failure instead of returning {"action": "failed", ...}. Migration
    guide in README and CHANGELOG.
    
    - AioConfig.retries set to {max_attempts=1, mode=standard}; tenacity owns
      retries solely (no more 3x stacked attempts).
    - list_objects passes PageSize=min(max_keys, 1000) to the paginator —
      small max_keys no longer pulls a full 1000-object first page.
    - __aenter__ stores the aiobotocore client context manager and unwinds
      via the same CM in __aexit__ (removes latent fragility on close).
    - Renamed _generate_url_from_file_with_result → _attach_presigned_url
      (used by both upload methods); typed dict[str, Any].
    - Trimmed dead commented-out control-character check in _validate_s3_key;
      tightened its docstring.
    - FileNamingStrategy docstring documents prefix="" → "file" fallback.
    
    Tooling and infra:
    - New CHANGELOG.md (Keep a Changelog, full history reconstructed back
      to 0.1.0).
    - New .gitlab-ci.yml: lint (black --check, mypy) + pytest with cobertura
      coverage report.
    - pyproject: [tool.mypy], [tool.black]; added types-aiofiles dev dep;
      bumped to 3.0.0.
    - .gitignore rewritten in structured sections; added .ruff_cache, .vscode,
      Thumbs.db, secret patterns (*.pem, *.key, id_rsa*, credentials*,
      *.kubeconfig), coverage.xml.
    
    Tests: 142 passing, 100% coverage. Updated upload-error tests for new
    raise-based contract; added PaginationConfig PageSize coverage; rewired
    async CM tests around the stored context manager.
    78eba17c
    feat(s3_client)!: 3.0.0 — unify upload error contract, single retry layer, CI
    Andrey Azeev authored
    Breaking change: S3Client.upload_from_bytes / upload_from_file now raise
    on upload failure instead of returning {"action": "failed", ...}. Migration
    guide in README and CHANGELOG.
    
    - AioConfig.retries set to {max_attempts=1, mode=standard}; tenacity owns
      retries solely (no more 3x stacked attempts).
    - list_objects passes PageSize=min(max_keys, 1000) to the paginator —
      small max_keys no longer pulls a full 1000-object first page.
    - __aenter__ stores the aiobotocore client context manager and unwinds
      via the same CM in __aexit__ (removes latent fragility on close).
    - Renamed _generate_url_from_file_with_result → _attach_presigned_url
      (used by both upload methods); typed dict[str, Any].
    - Trimmed dead commented-out control-character check in _validate_s3_key;
      tightened its docstring.
    - FileNamingStrategy docstring documents prefix="" → "file" fallback.
    
    Tooling and infra:
    - New CHANGELOG.md (Keep a Changelog, full history reconstructed back
      to 0.1.0).
    - New .gitlab-ci.yml: lint (black --check, mypy) + pytest with cobertura
      coverage report.
    - pyproject: [tool.mypy], [tool.black]; added types-aiofiles dev dep;
      bumped to 3.0.0.
    - .gitignore rewritten in structured sections; added .ruff_cache, .vscode,
      Thumbs.db, secret patterns (*.pem, *.key, id_rsa*, credentials*,
      *.kubeconfig), coverage.xml.
    
    Tests: 142 passing, 100% coverage. Updated upload-error tests for new
    raise-based contract; added PaginationConfig PageSize coverage; rewired
    async CM tests around the stored context manager.
To find the state of this project's repository at the time of any of these versions, check out the tags.
Loading