[patch] Allow empty payloads in Redis and MinIO adapters #55

Merged
brian merged 1 commits from cursor/allow-empty-payloads into main 2026-07-10 21:44:01 +02:00
Owner

Summary

  • Relax write validation so Redis accepts {} and MinIO accepts zero-byte BytesIO
  • Document None vs empty semantics on interfaces and adapters (delete() removes records; use is not None for existence checks)
  • Add integration tests for round-trip, missing-vs-empty distinction, and listing empty records

Motivation

Empty payloads are valid in both backends, but the adapters previously rejected them on write while still allowing reads of empty data written by other clients. Allowing empty writes supports downstream placeholders and fixes that read/write asymmetry.

Test plan

  • pytest tests/unit/
  • pytest tests/integration/redis/redis_adapter_test.py -k "empty or invalid_set_data"
  • pytest tests/integration/minio/minio_adapter_test.py -k "empty or zero"
## Summary - Relax write validation so Redis accepts `{}` and MinIO accepts zero-byte `BytesIO` - Document `None` vs empty semantics on interfaces and adapters (`delete()` removes records; use `is not None` for existence checks) - Add integration tests for round-trip, missing-vs-empty distinction, and listing empty records ## Motivation Empty payloads are valid in both backends, but the adapters previously rejected them on write while still allowing reads of empty data written by other clients. Allowing empty writes supports downstream placeholders and fixes that read/write asymmetry. ## Test plan - [x] `pytest tests/unit/` - [ ] `pytest tests/integration/redis/redis_adapter_test.py -k "empty or invalid_set_data"` - [ ] `pytest tests/integration/minio/minio_adapter_test.py -k "empty or zero"`
brian added 1 commit 2026-07-10 21:41:30 +02:00
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
57b396bcd3
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 <cursoragent@cursor.com>
Member

Test Coverage Report:

Name                                                            Stmts   Miss    Cover   Missing
-----------------------------------------------------------------------------------------------
python_repositories/__init__.py                                    12      0  100.00%
python_repositories/adapters/__init__.py                           13      0  100.00%
python_repositories/adapters/connection_aware_adapter.py           61      0  100.00%
python_repositories/adapters/minio_adapter.py                     117      0  100.00%
python_repositories/adapters/redis_adapter.py                     105      0  100.00%
python_repositories/config/__init__.py                              4      0  100.00%
python_repositories/config/dotenv_loader.py                         7      0  100.00%
python_repositories/config/env_bool.py                             14      0  100.00%
python_repositories/config/minio_config.py                         21      0  100.00%
python_repositories/config/redis_config.py                         14      0  100.00%
python_repositories/examples/__init__.py                            0      0  100.00%
python_repositories/examples/artifact_object_repository.py          9      0  100.00%
python_repositories/examples/user_json_repository.py               11      0  100.00%
python_repositories/interfaces/__init__.py                          5      0  100.00%
python_repositories/interfaces/connection_aware_interface.py        8      0  100.00%
python_repositories/interfaces/context_aware_interface.py           8      0  100.00%
python_repositories/interfaces/json_repository_interface.py        15      0  100.00%
python_repositories/interfaces/object_repository_interface.py      11      0  100.00%
-----------------------------------------------------------------------------------------------
TOTAL                                                             435      0  100.00%

**Test Coverage Report:** ``` Name Stmts Miss Cover Missing ----------------------------------------------------------------------------------------------- python_repositories/__init__.py 12 0 100.00% python_repositories/adapters/__init__.py 13 0 100.00% python_repositories/adapters/connection_aware_adapter.py 61 0 100.00% python_repositories/adapters/minio_adapter.py 117 0 100.00% python_repositories/adapters/redis_adapter.py 105 0 100.00% python_repositories/config/__init__.py 4 0 100.00% python_repositories/config/dotenv_loader.py 7 0 100.00% python_repositories/config/env_bool.py 14 0 100.00% python_repositories/config/minio_config.py 21 0 100.00% python_repositories/config/redis_config.py 14 0 100.00% python_repositories/examples/__init__.py 0 0 100.00% python_repositories/examples/artifact_object_repository.py 9 0 100.00% python_repositories/examples/user_json_repository.py 11 0 100.00% python_repositories/interfaces/__init__.py 5 0 100.00% python_repositories/interfaces/connection_aware_interface.py 8 0 100.00% python_repositories/interfaces/context_aware_interface.py 8 0 100.00% python_repositories/interfaces/json_repository_interface.py 15 0 100.00% python_repositories/interfaces/object_repository_interface.py 11 0 100.00% ----------------------------------------------------------------------------------------------- TOTAL 435 0 100.00% ```
brian merged commit 6d02f32ca5 into main 2026-07-10 21:44:01 +02:00
brian deleted branch cursor/allow-empty-payloads 2026-07-10 21:44:02 +02:00
Sign in to join this conversation.
No Reviewers
No labels
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: lille-vemmelund/python-repositories#55