[minor] Add QueueRepositoryInterface with memory and file-backed adapters #62

Merged
brian merged 5 commits from cursor/queue-adapters into main 2026-07-16 21:27:51 +02:00
Owner

Summary

  • Add QueueRepositoryInterface with MemoryQueueAdapter and FileBackedQueueAdapter (JSONL persistence; configurable path, retention, and dedup keys)
  • Add FileQueueConfig (FILE_QUEUE_PATH, optional FILE_QUEUE_MAX_AGE_HOURS, default retention 24h)
  • Update exports, README, and .env.example
  • Align changelog_section heading spacing with Prettier v4 so release CI stops needing format-only follow-ups

Test plan

  • Unit tests for queue interface, config, memory adapter, file-backed adapter, and lazy exports (100% coverage on new modules)
  • uv run mypy python_repositories
  • uv run ruff check on new modules
  • Generated changelog sample passes Prettier with no rewrites
  • CI on PR
## Summary - Add `QueueRepositoryInterface` with `MemoryQueueAdapter` and `FileBackedQueueAdapter` (JSONL persistence; configurable path, retention, and dedup keys) - Add `FileQueueConfig` (`FILE_QUEUE_PATH`, optional `FILE_QUEUE_MAX_AGE_HOURS`, default retention 24h) - Update exports, README, and `.env.example` - Align `changelog_section` heading spacing with Prettier v4 so release CI stops needing format-only follow-ups ## Test plan - [x] Unit tests for queue interface, config, memory adapter, file-backed adapter, and lazy exports (100% coverage on new modules) - [x] `uv run mypy python_repositories` - [x] `uv run ruff check` on new modules - [x] Generated changelog sample passes Prettier with no rewrites - [ ] CI on PR
brian added 1 commit 2026-07-16 20:21:43 +02:00
Add QueueRepositoryInterface with memory and file-backed adapters.
PR Title Check / check-title (pull_request) Successful in 9s
Code Quality Pipeline / code-quality (pull_request) Failing after 53s
Test Python Package / unit-tests (pull_request) Successful in 1m1s
Test Python Package / integration-tests (pull_request) Successful in 1m44s
Test Python Package / coverage-report (pull_request) Successful in 13s
4f58c32dd6
Provide a generic disk-backed FIFO queue with configurable path, retention, and dedup keys so consumers can buffer items across restarts without optional extras.

Co-authored-by: Cursor <[email protected]>
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/file_backed_queue_adapter.py         141      0  100.00%
python_repositories/adapters/memory_queue_adapter.py               86      0  100.00%
python_repositories/adapters/minio_adapter.py                     117      0  100.00%
python_repositories/adapters/postgres_adapter.py                  146      0  100.00%
python_repositories/adapters/redis_adapter.py                     105      0  100.00%
python_repositories/config/__init__.py                              6      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/file_queue_config.py                    21      0  100.00%
python_repositories/config/minio_config.py                         21      0  100.00%
python_repositories/config/postgres_config.py                      20      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/examples/user_table_repository.py              10      0  100.00%
python_repositories/interfaces/__init__.py                          7      0  100.00%
python_repositories/interfaces/connection_aware_interface.py       10      0  100.00%
python_repositories/interfaces/context_aware_interface.py           9      0  100.00%
python_repositories/interfaces/json_repository_interface.py        16      0  100.00%
python_repositories/interfaces/object_repository_interface.py      13      0  100.00%
python_repositories/interfaces/queue_repository_interface.py       13      0  100.00%
python_repositories/interfaces/table_repository_interface.py       14      0  100.00%
-----------------------------------------------------------------------------------------------
TOTAL                                                             896      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/file_backed_queue_adapter.py 141 0 100.00% python_repositories/adapters/memory_queue_adapter.py 86 0 100.00% python_repositories/adapters/minio_adapter.py 117 0 100.00% python_repositories/adapters/postgres_adapter.py 146 0 100.00% python_repositories/adapters/redis_adapter.py 105 0 100.00% python_repositories/config/__init__.py 6 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/file_queue_config.py 21 0 100.00% python_repositories/config/minio_config.py 21 0 100.00% python_repositories/config/postgres_config.py 20 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/examples/user_table_repository.py 10 0 100.00% python_repositories/interfaces/__init__.py 7 0 100.00% python_repositories/interfaces/connection_aware_interface.py 10 0 100.00% python_repositories/interfaces/context_aware_interface.py 9 0 100.00% python_repositories/interfaces/json_repository_interface.py 16 0 100.00% python_repositories/interfaces/object_repository_interface.py 13 0 100.00% python_repositories/interfaces/queue_repository_interface.py 13 0 100.00% python_repositories/interfaces/table_repository_interface.py 14 0 100.00% ----------------------------------------------------------------------------------------------- TOTAL 896 0 100.00% ```
brian added 1 commit 2026-07-16 20:25:04 +02:00
Apply ruff formatting to queue adapter and tests.
PR Title Check / check-title (pull_request) Successful in 11s
Test Python Package / unit-tests (pull_request) Successful in 16s
Code Quality Pipeline / code-quality (pull_request) Failing after 30s
Test Python Package / integration-tests (pull_request) Successful in 34s
Test Python Package / coverage-report (pull_request) Successful in 16s
1822d886b1
Co-authored-by: Cursor <[email protected]>
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/file_backed_queue_adapter.py         141      0  100.00%
python_repositories/adapters/memory_queue_adapter.py               86      0  100.00%
python_repositories/adapters/minio_adapter.py                     117      0  100.00%
python_repositories/adapters/postgres_adapter.py                  146      0  100.00%
python_repositories/adapters/redis_adapter.py                     105      0  100.00%
python_repositories/config/__init__.py                              6      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/file_queue_config.py                    21      0  100.00%
python_repositories/config/minio_config.py                         21      0  100.00%
python_repositories/config/postgres_config.py                      20      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/examples/user_table_repository.py              10      0  100.00%
python_repositories/interfaces/__init__.py                          7      0  100.00%
python_repositories/interfaces/connection_aware_interface.py       10      0  100.00%
python_repositories/interfaces/context_aware_interface.py           9      0  100.00%
python_repositories/interfaces/json_repository_interface.py        16      0  100.00%
python_repositories/interfaces/object_repository_interface.py      13      0  100.00%
python_repositories/interfaces/queue_repository_interface.py       13      0  100.00%
python_repositories/interfaces/table_repository_interface.py       14      0  100.00%
-----------------------------------------------------------------------------------------------
TOTAL                                                             896      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/file_backed_queue_adapter.py 141 0 100.00% python_repositories/adapters/memory_queue_adapter.py 86 0 100.00% python_repositories/adapters/minio_adapter.py 117 0 100.00% python_repositories/adapters/postgres_adapter.py 146 0 100.00% python_repositories/adapters/redis_adapter.py 105 0 100.00% python_repositories/config/__init__.py 6 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/file_queue_config.py 21 0 100.00% python_repositories/config/minio_config.py 21 0 100.00% python_repositories/config/postgres_config.py 20 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/examples/user_table_repository.py 10 0 100.00% python_repositories/interfaces/__init__.py 7 0 100.00% python_repositories/interfaces/connection_aware_interface.py 10 0 100.00% python_repositories/interfaces/context_aware_interface.py 9 0 100.00% python_repositories/interfaces/json_repository_interface.py 16 0 100.00% python_repositories/interfaces/object_repository_interface.py 13 0 100.00% python_repositories/interfaces/queue_repository_interface.py 13 0 100.00% python_repositories/interfaces/table_repository_interface.py 14 0 100.00% ----------------------------------------------------------------------------------------------- TOTAL 896 0 100.00% ```
brian added 1 commit 2026-07-16 21:07:40 +02:00
Move queue helper functions to staticmethods on their adapters.
PR Title Check / check-title (pull_request) Successful in 8s
Test Python Package / unit-tests (pull_request) Successful in 20s
Code Quality Pipeline / code-quality (pull_request) Failing after 32s
Test Python Package / integration-tests (pull_request) Successful in 1m33s
Test Python Package / coverage-report (pull_request) Successful in 16s
a78320b434
Co-authored-by: Cursor <[email protected]>
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/file_backed_queue_adapter.py         142      0  100.00%
python_repositories/adapters/memory_queue_adapter.py               87      0  100.00%
python_repositories/adapters/minio_adapter.py                     117      0  100.00%
python_repositories/adapters/postgres_adapter.py                  146      0  100.00%
python_repositories/adapters/redis_adapter.py                     105      0  100.00%
python_repositories/config/__init__.py                              6      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/file_queue_config.py                    21      0  100.00%
python_repositories/config/minio_config.py                         21      0  100.00%
python_repositories/config/postgres_config.py                      20      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/examples/user_table_repository.py              10      0  100.00%
python_repositories/interfaces/__init__.py                          7      0  100.00%
python_repositories/interfaces/connection_aware_interface.py       10      0  100.00%
python_repositories/interfaces/context_aware_interface.py           9      0  100.00%
python_repositories/interfaces/json_repository_interface.py        16      0  100.00%
python_repositories/interfaces/object_repository_interface.py      13      0  100.00%
python_repositories/interfaces/queue_repository_interface.py       13      0  100.00%
python_repositories/interfaces/table_repository_interface.py       14      0  100.00%
-----------------------------------------------------------------------------------------------
TOTAL                                                             898      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/file_backed_queue_adapter.py 142 0 100.00% python_repositories/adapters/memory_queue_adapter.py 87 0 100.00% python_repositories/adapters/minio_adapter.py 117 0 100.00% python_repositories/adapters/postgres_adapter.py 146 0 100.00% python_repositories/adapters/redis_adapter.py 105 0 100.00% python_repositories/config/__init__.py 6 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/file_queue_config.py 21 0 100.00% python_repositories/config/minio_config.py 21 0 100.00% python_repositories/config/postgres_config.py 20 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/examples/user_table_repository.py 10 0 100.00% python_repositories/interfaces/__init__.py 7 0 100.00% python_repositories/interfaces/connection_aware_interface.py 10 0 100.00% python_repositories/interfaces/context_aware_interface.py 9 0 100.00% python_repositories/interfaces/json_repository_interface.py 16 0 100.00% python_repositories/interfaces/object_repository_interface.py 13 0 100.00% python_repositories/interfaces/queue_repository_interface.py 13 0 100.00% python_repositories/interfaces/table_repository_interface.py 14 0 100.00% ----------------------------------------------------------------------------------------------- TOTAL 898 0 100.00% ```
brian added 1 commit 2026-07-16 21:24:12 +02:00
Align changelog section headings with Prettier markdown spacing.
Test Python Package / unit-tests (pull_request) Successful in 13s
Test Python Package / coverage-report (pull_request) Successful in 13s
PR Title Check / check-title (pull_request) Successful in 7s
Code Quality Pipeline / code-quality (pull_request) Failing after 29s
Test Python Package / integration-tests (pull_request) Successful in 1m15s
b8d8176877
Co-authored-by: Cursor <[email protected]>
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/file_backed_queue_adapter.py         142      0  100.00%
python_repositories/adapters/memory_queue_adapter.py               87      0  100.00%
python_repositories/adapters/minio_adapter.py                     117      0  100.00%
python_repositories/adapters/postgres_adapter.py                  146      0  100.00%
python_repositories/adapters/redis_adapter.py                     105      0  100.00%
python_repositories/config/__init__.py                              6      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/file_queue_config.py                    21      0  100.00%
python_repositories/config/minio_config.py                         21      0  100.00%
python_repositories/config/postgres_config.py                      20      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/examples/user_table_repository.py              10      0  100.00%
python_repositories/interfaces/__init__.py                          7      0  100.00%
python_repositories/interfaces/connection_aware_interface.py       10      0  100.00%
python_repositories/interfaces/context_aware_interface.py           9      0  100.00%
python_repositories/interfaces/json_repository_interface.py        16      0  100.00%
python_repositories/interfaces/object_repository_interface.py      13      0  100.00%
python_repositories/interfaces/queue_repository_interface.py       13      0  100.00%
python_repositories/interfaces/table_repository_interface.py       14      0  100.00%
-----------------------------------------------------------------------------------------------
TOTAL                                                             898      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/file_backed_queue_adapter.py 142 0 100.00% python_repositories/adapters/memory_queue_adapter.py 87 0 100.00% python_repositories/adapters/minio_adapter.py 117 0 100.00% python_repositories/adapters/postgres_adapter.py 146 0 100.00% python_repositories/adapters/redis_adapter.py 105 0 100.00% python_repositories/config/__init__.py 6 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/file_queue_config.py 21 0 100.00% python_repositories/config/minio_config.py 21 0 100.00% python_repositories/config/postgres_config.py 20 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/examples/user_table_repository.py 10 0 100.00% python_repositories/interfaces/__init__.py 7 0 100.00% python_repositories/interfaces/connection_aware_interface.py 10 0 100.00% python_repositories/interfaces/context_aware_interface.py 9 0 100.00% python_repositories/interfaces/json_repository_interface.py 16 0 100.00% python_repositories/interfaces/object_repository_interface.py 13 0 100.00% python_repositories/interfaces/queue_repository_interface.py 13 0 100.00% python_repositories/interfaces/table_repository_interface.py 14 0 100.00% ----------------------------------------------------------------------------------------------- TOTAL 898 0 100.00% ```
brian added 1 commit 2026-07-16 21:25:55 +02:00
Apply Prettier formatting to README and CHANGELOG.
PR Title Check / check-title (pull_request) Successful in 8s
Test Python Package / unit-tests (pull_request) Successful in 15s
Test Python Package / integration-tests (pull_request) Successful in 24s
Code Quality Pipeline / code-quality (pull_request) Successful in 31s
Test Python Package / coverage-report (pull_request) Successful in 12s
24d5ea14d6
Co-authored-by: Cursor <[email protected]>
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/file_backed_queue_adapter.py         142      0  100.00%
python_repositories/adapters/memory_queue_adapter.py               87      0  100.00%
python_repositories/adapters/minio_adapter.py                     117      0  100.00%
python_repositories/adapters/postgres_adapter.py                  146      0  100.00%
python_repositories/adapters/redis_adapter.py                     105      0  100.00%
python_repositories/config/__init__.py                              6      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/file_queue_config.py                    21      0  100.00%
python_repositories/config/minio_config.py                         21      0  100.00%
python_repositories/config/postgres_config.py                      20      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/examples/user_table_repository.py              10      0  100.00%
python_repositories/interfaces/__init__.py                          7      0  100.00%
python_repositories/interfaces/connection_aware_interface.py       10      0  100.00%
python_repositories/interfaces/context_aware_interface.py           9      0  100.00%
python_repositories/interfaces/json_repository_interface.py        16      0  100.00%
python_repositories/interfaces/object_repository_interface.py      13      0  100.00%
python_repositories/interfaces/queue_repository_interface.py       13      0  100.00%
python_repositories/interfaces/table_repository_interface.py       14      0  100.00%
-----------------------------------------------------------------------------------------------
TOTAL                                                             898      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/file_backed_queue_adapter.py 142 0 100.00% python_repositories/adapters/memory_queue_adapter.py 87 0 100.00% python_repositories/adapters/minio_adapter.py 117 0 100.00% python_repositories/adapters/postgres_adapter.py 146 0 100.00% python_repositories/adapters/redis_adapter.py 105 0 100.00% python_repositories/config/__init__.py 6 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/file_queue_config.py 21 0 100.00% python_repositories/config/minio_config.py 21 0 100.00% python_repositories/config/postgres_config.py 20 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/examples/user_table_repository.py 10 0 100.00% python_repositories/interfaces/__init__.py 7 0 100.00% python_repositories/interfaces/connection_aware_interface.py 10 0 100.00% python_repositories/interfaces/context_aware_interface.py 9 0 100.00% python_repositories/interfaces/json_repository_interface.py 16 0 100.00% python_repositories/interfaces/object_repository_interface.py 13 0 100.00% python_repositories/interfaces/queue_repository_interface.py 13 0 100.00% python_repositories/interfaces/table_repository_interface.py 14 0 100.00% ----------------------------------------------------------------------------------------------- TOTAL 898 0 100.00% ```
brian merged commit ac82f71347 into main 2026-07-16 21:27:51 +02:00
brian deleted branch cursor/queue-adapters 2026-07-16 21:27:52 +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#62