|
| 1 | +--- |
| 2 | +title: "Changelog 4.12.0" |
| 3 | +description: "Release notes for ArchiPy 4.12.0" |
| 4 | +--- |
| 5 | + |
| 6 | +# 4.12.0 — 2026-06-20 |
| 7 | + |
| 8 | +[← 4.11.1](4.11.1.md) | [↑ 4.x series](index.md) |
| 9 | + |
| 10 | +## Added |
| 11 | + |
| 12 | +### Adapters - MinIO |
| 13 | + |
| 14 | +- **Object Existence Check** - Added `object_exists` to `MinioPort` and `MinioAdapter` for lightweight presence checks without downloading object content. |
| 15 | + - Returns `True` when the object key exists and `False` when it does not. |
| 16 | + - Cached for five minutes via `@ttl_cache_decorator` to reduce repeated HEAD requests. |
| 17 | +- **Batch Object Deletion** - Added `remove_objects` for deleting multiple object keys in a single S3 `DeleteObjects` call. |
| 18 | + - Clears object-related caches after a successful batch delete. |
| 19 | +- **Object Tag Operations** - Added tag management methods for per-object metadata used with lifecycle-based expiration. |
| 20 | + - `set_object_tags` replaces all tags on an existing object. |
| 21 | + - `get_object_tags` returns the current tag mapping (empty dict when none are set). |
| 22 | + - `remove_object_tags` clears all tags from an object. |
| 23 | +- **Upload-Time Tags** - Extended `put_object` and `put_object_stream` with an optional `tags: dict[str, str] | None` parameter so tags can be applied at upload time. |
| 24 | +- **Bucket Lifecycle / TTL** - Added lifecycle configuration methods for automatic object expiration. |
| 25 | + - `set_bucket_lifecycle` accepts S3-format lifecycle rule dicts (`MinioLifecycleRuleType`). |
| 26 | + - `get_bucket_lifecycle` returns configured rules or an empty list when none are set. |
| 27 | + - `delete_bucket_lifecycle` removes all lifecycle rules from a bucket. |
| 28 | +- **Object Versioning** - Added bucket versioning and version-level delete support. |
| 29 | + - `set_bucket_versioning` enables or suspends versioning on a bucket. |
| 30 | + - `get_bucket_versioning` returns `Enabled`, `Suspended`, or an empty string when never configured. |
| 31 | + - `list_object_versions` lists version entries and delete markers with normalized metadata (`MinioObjectVersionType`). |
| 32 | + - `remove_object_version` permanently deletes a specific version by `version_id`. |
| 33 | + |
| 34 | +## Changed |
| 35 | + |
| 36 | +### Adapters - StarRocks |
| 37 | + |
| 38 | +- **Type Ignore Cleanup** - Removed redundant `# type: ignore[invalid-assignment]` comments from StarRocks SQLAlchemy compiler patches, keeping only the `ty: ignore` directives. |
| 39 | + |
| 40 | +### Documentation - MinIO |
| 41 | + |
| 42 | +- **Tutorial Expansion** - Extended `docs/tutorials/adapters/minio.md` with examples for object existence checks, batch deletion, object tags, and versioning workflows. |
| 43 | +- **API Reference Clarification** - Updated the MinIO adapter API reference to state that the concrete adapter wraps **boto3** for S3-compatible storage. |
| 44 | + |
| 45 | +## Tests |
| 46 | + |
| 47 | +### Tests - MinIO Adapter |
| 48 | + |
| 49 | +- **Tag Scenarios** - Added BDD coverage for upload-time tags, setting tags on existing objects, and removing all tags. |
| 50 | +- **Lifecycle Scenarios** - Added scenarios for setting, verifying, and deleting bucket lifecycle rules. |
| 51 | +- **Existence and Batch Delete** - Added scenarios for `object_exists` before and after deletion, and for `remove_objects` batch cleanup. |
| 52 | +- **Versioning Scenarios** - Added end-to-end coverage for enabling versioning, uploading multiple versions, listing versions, and permanently deleting the oldest version. |
| 53 | + |
| 54 | +## Dependencies |
| 55 | + |
| 56 | +- **Core dependencies** - Updated base package pins in `pyproject.toml`. |
| 57 | + - `pydantic-settings`: `>=2.14.1` → `>=2.14.2` |
| 58 | +- **Optional extras** - Updated optional adapter dependency pins. |
| 59 | + - `dependency-injection`: `dependency-injector>=4.49.0` → `>=4.49.1` |
| 60 | + - `minio`: `boto3>=1.43.32` → `>=1.43.34` |
| 61 | + - `parsian-ipg` / `parsian-ipg-async`: `zeep>=4.3.2` → `>=4.3.3` |
| 62 | +- **Dev group** - Updated development tooling pins. |
| 63 | + - `boto3-stubs`: `>=1.43.32` → `>=1.43.34` |
| 64 | + - `ruff`: `>=0.15.17` → `>=0.15.18` |
| 65 | + - `ty`: `>=0.0.50` → `>=0.0.51` |
| 66 | +- **Docs group** - Updated documentation tooling pins. |
| 67 | + - `mkdocstrings-python`: `>=2.0.4` → `>=2.0.5` |
| 68 | +- **Lockfile** - Regenerated `uv.lock` to align with the updated `pyproject.toml` constraints. |
0 commit comments