diff options
Diffstat (limited to 'venv/lib/python3.11/site-packages/polyfactory/persistence.py')
-rw-r--r-- | venv/lib/python3.11/site-packages/polyfactory/persistence.py | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/venv/lib/python3.11/site-packages/polyfactory/persistence.py b/venv/lib/python3.11/site-packages/polyfactory/persistence.py new file mode 100644 index 0000000..7aa510b --- /dev/null +++ b/venv/lib/python3.11/site-packages/polyfactory/persistence.py @@ -0,0 +1,53 @@ +from __future__ import annotations + +from typing import Protocol, TypeVar, runtime_checkable + +T = TypeVar("T") + + +@runtime_checkable +class SyncPersistenceProtocol(Protocol[T]): + """Protocol for sync persistence""" + + def save(self, data: T) -> T: + """Persist a single instance synchronously. + + :param data: A single instance to persist. + + :returns: The persisted result. + + """ + ... + + def save_many(self, data: list[T]) -> list[T]: + """Persist multiple instances synchronously. + + :param data: A list of instances to persist. + + :returns: The persisted result + + """ + ... + + +@runtime_checkable +class AsyncPersistenceProtocol(Protocol[T]): + """Protocol for async persistence""" + + async def save(self, data: T) -> T: + """Persist a single instance asynchronously. + + :param data: A single instance to persist. + + :returns: The persisted result. + """ + ... + + async def save_many(self, data: list[T]) -> list[T]: + """Persist multiple instances asynchronously. + + :param data: A list of instances to persist. + + :returns: The persisted result + """ + ... |