Allow empty payloads in Redis and MinIO adapters.
PR Title Check / check-title (pull_request) Successful in 8s
Test Python Package / unit-tests (pull_request) Successful in 12s
Code Quality Pipeline / code-quality (pull_request) Successful in 20s
Test Python Package / integration-tests (pull_request) Successful in 24s
Test Python Package / coverage-report (pull_request) Successful in 11s
PR Title Check / check-title (pull_request) Successful in 8s
Test Python Package / unit-tests (pull_request) Successful in 12s
Code Quality Pipeline / code-quality (pull_request) Successful in 20s
Test Python Package / integration-tests (pull_request) Successful in 24s
Test Python Package / coverage-report (pull_request) Successful in 11s
Relax write validation so {} and zero-byte BytesIO round-trip correctly,
document None-vs-empty semantics on interfaces and adapters, and add
integration tests for placeholders and existence distinction.
Co-authored-by: Cursor <[email protected]>
This commit is contained in:
co-authored by
Cursor
parent
093e538d5b
commit
57b396bcd3
@@ -114,12 +114,17 @@ class MinioAdapter(ObjectRepositoryInterface, ConnectionAwareAdapter):
|
||||
data: BytesIO,
|
||||
content_type: str = "application/octet-stream",
|
||||
) -> None:
|
||||
"""Put an object into the Minio bucket."""
|
||||
"""Put an object into the Minio bucket.
|
||||
|
||||
Accepts zero-byte ``BytesIO``. A zero-byte object is returned by
|
||||
``get()`` as an empty buffer, not ``None``. Use ``delete()`` to remove
|
||||
an object entirely.
|
||||
"""
|
||||
# Check input
|
||||
if not isinstance(object_name, str) or len(object_name) == 0:
|
||||
raise ValueError("object_name must be a non-empty string")
|
||||
if not isinstance(data, BytesIO) or data.getbuffer().nbytes == 0:
|
||||
raise ValueError("data must be a non-empty BytesIO object")
|
||||
if not isinstance(data, BytesIO):
|
||||
raise ValueError("data must be a BytesIO object")
|
||||
if not isinstance(content_type, str) or len(content_type) == 0:
|
||||
raise ValueError("content_type must be a non-empty string")
|
||||
# Check connection
|
||||
@@ -143,7 +148,12 @@ class MinioAdapter(ObjectRepositoryInterface, ConnectionAwareAdapter):
|
||||
)
|
||||
|
||||
def get(self, object_name: str) -> BytesIO | None:
|
||||
"""Get an object from the Minio bucket."""
|
||||
"""Get an object from the Minio bucket.
|
||||
|
||||
Returns ``None`` when the object does not exist. Returns an empty
|
||||
``BytesIO`` for a zero-byte object. Use ``value is not None`` to test
|
||||
existence.
|
||||
"""
|
||||
# Check input
|
||||
if not isinstance(object_name, str) or len(object_name) == 0:
|
||||
raise ValueError("object_name must be a non-empty string")
|
||||
|
||||
Reference in New Issue
Block a user