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
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
Co-authored-by: Cursor <[email protected]>
This commit is contained in:
co-authored by
Cursor
parent
1822d886b1
commit
a78320b434
@@ -11,22 +11,13 @@ from typing import Any, Self, TextIO
|
||||
|
||||
import structlog
|
||||
|
||||
from python_repositories.adapters.memory_queue_adapter import (
|
||||
MemoryQueueAdapter,
|
||||
_parse_age,
|
||||
)
|
||||
from python_repositories.adapters.memory_queue_adapter import MemoryQueueAdapter
|
||||
from python_repositories.config.file_queue_config import FileQueueConfig
|
||||
from python_repositories.interfaces.queue_repository_interface import (
|
||||
QueueRepositoryInterface,
|
||||
)
|
||||
|
||||
|
||||
def _json_default(value: object) -> str:
|
||||
if isinstance(value, datetime):
|
||||
return value.isoformat()
|
||||
raise TypeError(f"Object of type {type(value)!r} is not JSON serializable")
|
||||
|
||||
|
||||
class FileBackedQueueAdapter(QueueRepositoryInterface):
|
||||
"""Queue that mirrors an in-memory buffer to an append-friendly JSONL file.
|
||||
|
||||
@@ -54,6 +45,12 @@ class FileBackedQueueAdapter(QueueRepositoryInterface):
|
||||
self._append_handle: TextIO | None = None
|
||||
self.logger = structlog.get_logger(self.__class__.__name__)
|
||||
|
||||
@staticmethod
|
||||
def _json_default(value: object) -> str:
|
||||
if isinstance(value, datetime):
|
||||
return value.isoformat()
|
||||
raise TypeError(f"Object of type {type(value)!r} is not JSON serializable")
|
||||
|
||||
def __enter__(self) -> Self:
|
||||
self.connect()
|
||||
return self
|
||||
@@ -170,7 +167,7 @@ class FileBackedQueueAdapter(QueueRepositoryInterface):
|
||||
)
|
||||
continue
|
||||
try:
|
||||
if _parse_age(age_value) < cutoff:
|
||||
if MemoryQueueAdapter._parse_age(age_value) < cutoff:
|
||||
continue
|
||||
except ValueError:
|
||||
self.logger.warning(
|
||||
@@ -194,7 +191,7 @@ class FileBackedQueueAdapter(QueueRepositoryInterface):
|
||||
raise RuntimeError("append handle is not open")
|
||||
for item in items:
|
||||
self._append_handle.write(
|
||||
json.dumps(item, default=_json_default, separators=(",", ":"))
|
||||
json.dumps(item, default=self._json_default, separators=(",", ":"))
|
||||
)
|
||||
self._append_handle.write("\n")
|
||||
self._append_handle.flush()
|
||||
@@ -210,7 +207,7 @@ class FileBackedQueueAdapter(QueueRepositoryInterface):
|
||||
with tmp_path.open("w", encoding="utf-8") as handle:
|
||||
for item in self._memory.snapshot():
|
||||
handle.write(
|
||||
json.dumps(item, default=_json_default, separators=(",", ":"))
|
||||
json.dumps(item, default=self._json_default, separators=(",", ":"))
|
||||
)
|
||||
handle.write("\n")
|
||||
handle.flush()
|
||||
|
||||
Reference in New Issue
Block a user