Add runtime-checkable Protocol typing to all public interfaces.
PR Title Check / check-title (pull_request) Successful in 7s
Test Python Package / unit-tests (pull_request) Successful in 9s
Code Quality Pipeline / code-quality (pull_request) Successful in 22s
Test Python Package / integration-tests (pull_request) Successful in 24s
Test Python Package / coverage-report (pull_request) Successful in 8s
PR Title Check / check-title (pull_request) Successful in 7s
Test Python Package / unit-tests (pull_request) Successful in 9s
Code Quality Pipeline / code-quality (pull_request) Successful in 22s
Test Python Package / integration-tests (pull_request) Successful in 24s
Test Python Package / coverage-report (pull_request) Successful in 8s
Enables structural subtyping for consumers while preserving nominal adapter inheritance, instantiation guards, and scan_keys defaults. Co-authored-by: Cursor <[email protected]>
This commit is contained in:
co-authored by
Cursor
parent
0829354cc4
commit
f6ee9a3724
@@ -19,7 +19,7 @@ except ImportError as exc:
|
||||
) from exc
|
||||
|
||||
|
||||
class MinioAdapter(ObjectRepositoryInterface, ConnectionAwareAdapter):
|
||||
class MinioAdapter(ConnectionAwareAdapter, ObjectRepositoryInterface):
|
||||
"""Minio adapter exposing basic CRUD functionality."""
|
||||
|
||||
endpoint_env_var_name: str = "MINIO_ENDPOINT"
|
||||
|
||||
@@ -21,7 +21,7 @@ except ImportError as exc:
|
||||
) from exc
|
||||
|
||||
|
||||
class RedisAdapter(JsonRepositoryInterface, ConnectionAwareAdapter):
|
||||
class RedisAdapter(ConnectionAwareAdapter, JsonRepositoryInterface):
|
||||
"""Redis adapter exposing basic CRUD functionality."""
|
||||
|
||||
uri_env_var_name: str = "REDIS_URI"
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
"""Definition of ConnectionAwareInterface abstract base class."""
|
||||
"""Definition of ConnectionAwareInterface protocol and abstract base class."""
|
||||
|
||||
from abc import ABC, abstractmethod
|
||||
from abc import abstractmethod
|
||||
from typing import Protocol, runtime_checkable
|
||||
|
||||
|
||||
class ConnectionAwareInterface(ABC):
|
||||
@runtime_checkable
|
||||
class ConnectionAwareInterface(Protocol):
|
||||
"""Interface that defines connection-related methods."""
|
||||
|
||||
@abstractmethod
|
||||
|
||||
@@ -1,12 +1,13 @@
|
||||
"""Definition of ContextAwareInterface abstract base class."""
|
||||
"""Definition of ContextAwareInterface protocol and abstract base class."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from abc import ABC, abstractmethod
|
||||
from typing import Self
|
||||
from abc import abstractmethod
|
||||
from typing import Protocol, Self, runtime_checkable
|
||||
|
||||
|
||||
class ContextAwareInterface(ABC):
|
||||
@runtime_checkable
|
||||
class ContextAwareInterface(Protocol):
|
||||
"""Interface that defines context-related methods."""
|
||||
|
||||
@abstractmethod
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
"""Definition of JsonRepositoryInterface abstract base class."""
|
||||
"""Definition of JsonRepositoryInterface protocol and abstract base class."""
|
||||
|
||||
from abc import ABC, abstractmethod
|
||||
from abc import abstractmethod
|
||||
from collections.abc import Iterator
|
||||
from typing import Any
|
||||
from typing import Any, Protocol, runtime_checkable
|
||||
|
||||
|
||||
class JsonRepositoryInterface(ABC):
|
||||
@runtime_checkable
|
||||
class JsonRepositoryInterface(Protocol):
|
||||
"""Interface that defines JSON document CRUD methods."""
|
||||
|
||||
@abstractmethod
|
||||
|
||||
@@ -1,10 +1,12 @@
|
||||
"""Definition of ObjectRepositoryInterface abstract base class."""
|
||||
"""Definition of ObjectRepositoryInterface protocol and abstract base class."""
|
||||
|
||||
from abc import ABC, abstractmethod
|
||||
from abc import abstractmethod
|
||||
from io import BytesIO
|
||||
from typing import Protocol, runtime_checkable
|
||||
|
||||
|
||||
class ObjectRepositoryInterface(ABC):
|
||||
@runtime_checkable
|
||||
class ObjectRepositoryInterface(Protocol):
|
||||
"""Interface that defines binary object CRUD methods."""
|
||||
|
||||
@abstractmethod
|
||||
|
||||
Reference in New Issue
Block a user