Skip to content

Commit 5009ab1

Browse files
chore: update dependencies and changelog for version 4.12.0
1 parent c87d3b7 commit 5009ab1

6 files changed

Lines changed: 89 additions & 20 deletions

File tree

docs/community/changelog/4/4.11.1.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ description: "Release notes for ArchiPy 4.11.1"
55

66
# 4.11.1 — 2026-06-18
77

8-
[← 4.11.0](4.11.0.md) | [↑ 4.x series](index.md)
8+
[← 4.12.0](4.12.0.md) | [4.11.0](4.11.0.md) | [↑ 4.x series](index.md)
99

1010
## Fixed
1111

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
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.

docs/community/changelog/4/index.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ description: "Release history for ArchiPy 4.x series"
99

1010
| Version | Date | Summary |
1111
|---------------------|------------|-------------------------------------------------------------------------------------------------|
12+
| [4.12.0](4.12.0.md) | 2026-06-20 | MinIO TTL/lifecycle, object tags, batch deletion, existence checks, and versioning support |
1213
| [4.11.1](4.11.1.md) | 2026-06-18 | FastAPI compatibility pin to <0.137, removed parallel behave settings, docs alignment |
1314
| [4.11.0](4.11.0.md) | 2026-06-18 | MinIO stream upload/download APIs, IPG DTO extraction, and FastAPI large-file upload tests |
1415
| [4.10.2](4.10.2.md) | 2026-06-15 | httpx2 HTTP client migration, gRPC/app-utils fixes, and dependency updates |

docs/community/changelog/index.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ All notable changes to ArchiPy are documented here, organized by major version s
99

1010
## [4.x Series](4/index.md)
1111

12-
31 releases — from 4.0.0 to 4.11.1
12+
32 releases — from 4.0.0 to 4.12.0
1313

1414
## [3.x Series](3/index.md)
1515

pyproject.toml

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ version = "0.1.0" # This vesrion set on publish flow!
1010
requires-python = ">=3.14,<4"
1111
dependencies = [
1212
"pydantic>=2.13.4",
13-
"pydantic-settings>=2.14.1",
13+
"pydantic-settings>=2.14.2",
1414
"requests>=2.34.2",
1515
"jdatetime>=5.3.0",
1616
]
@@ -21,7 +21,7 @@ license = { file = "LICENSE" }
2121
aiosqlite = ["aiosqlite>=0.22.1"]
2222
behave = ["behave>=1.3.3"]
2323
cache = ["cachetools>=7.1.4", "async-lru>=2.3.0"]
24-
dependency-injection = ["dependency-injector>=4.49.0"]
24+
dependency-injection = ["dependency-injector>=4.49.1"]
2525
elastic-apm = ["elastic-apm>=6.26.1"]
2626
elasticsearch = ["elasticsearch>=9.4.1"]
2727
elasticsearch-async = ["elasticsearch[async]>=9.4.1"]
@@ -31,9 +31,9 @@ grpc = ["grpcio>=1.81.1", "grpcio-health-checking>=1.81.1", "protobuf>=6.33.6"]
3131
jwt = ["pyjwt>=2.13.0"]
3232
kafka = ["confluent-kafka>=2.14.2"]
3333
keycloak = ["python-keycloak>=7.1.1", "cachetools>=7.1.4", "async-lru>=2.3.0"]
34-
minio = ["boto3>=1.43.32", "cachetools>=7.1.4", "async-lru>=2.3.0"]
35-
parsian-ipg = ["zeep>=4.3.2", "requests[socks]>=2.34.2"]
36-
parsian-ipg-async = ["zeep[async]>=4.3.2", "httpx2[socks]>=2.4.0"]
34+
minio = ["boto3>=1.43.34", "cachetools>=7.1.4", "async-lru>=2.3.0"]
35+
parsian-ipg = ["zeep>=4.3.3", "requests[socks]>=2.34.2"]
36+
parsian-ipg-async = ["zeep[async]>=4.3.3", "httpx2[socks]>=2.4.0"]
3737
postgres = ["psycopg[binary,pool]>=3.3.4"]
3838
prometheus = ["prometheus-client>=0.25.0"]
3939
redis = ["redis[hiredis]>=8.0.0"]
@@ -56,12 +56,12 @@ build-backend = "hatchling.build"
5656
dev = [
5757
"add-trailing-comma>=4.0.0",
5858
"bandit>=1.9.4",
59-
"boto3-stubs>=1.43.32",
59+
"boto3-stubs>=1.43.34",
6060
"codespell>=2.4.2",
6161
"pre-commit-hooks>=6.0.0",
6262
"pre-commit>=4.6.0",
63-
"ruff>=0.15.17",
64-
"ty>=0.0.50",
63+
"ruff>=0.15.18",
64+
"ty>=0.0.51",
6565
"types-cachetools>=7.0.0.20260518",
6666
"types-grpcio>=1.0.0.20260614",
6767
"types-protobuf>=7.34.1.20260518",
@@ -75,7 +75,7 @@ docs = [
7575
"mkdocs-autorefs>=1.4.4",
7676
"mkdocs-material>=9.7.6",
7777
"mkdocs>=1.6.1",
78-
"mkdocstrings-python>=2.0.4",
78+
"mkdocstrings-python>=2.0.5",
7979
"mkdocstrings>=1.0.4",
8080
"pymdown-extensions>=10.21.3",
8181
]

uv.lock

Lines changed: 9 additions & 9 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)