praval.storage.base_provider๏ƒ

Base Storage Provider Framework

Defines the core interfaces and base classes for all Praval storage providers. This provides a standardized way to create, register, and use storage backends that agents can access uniformly.

Functions

create_storage_provider(provider_class,ย ...)

Create a storage provider instance.

Classes

BaseStorageProvider(name,ย config)

Abstract base class for all storage providers.

DataReference(provider,ย storage_type,ย ...[,ย ...])

Reference to data stored in a backend

StorageMetadata(name,ย description,ย storage_type)

Metadata describing a storage provider's capabilities

StorageQuery(operation,ย resource[,ย ...])

Query parameters for storage operations

StorageResult(success[,ย data,ย error,ย ...])

Result from storage operation

StorageType(*values)

Types of storage backends

class praval.storage.base_provider.StorageType(*values)[source]๏ƒ

Bases: Enum

Types of storage backends

RELATIONAL = 'relational'๏ƒ
DOCUMENT = 'document'๏ƒ
KEY_VALUE = 'key_value'๏ƒ
OBJECT = 'object'๏ƒ
VECTOR = 'vector'๏ƒ
SEARCH = 'search'๏ƒ
GRAPH = 'graph'๏ƒ
FILE_SYSTEM = 'file_system'๏ƒ
CACHE = 'cache'๏ƒ
QUEUE = 'queue'๏ƒ
class praval.storage.base_provider.DataReference(provider, storage_type, resource_id, metadata=<factory>, created_at=<factory>, expires_at=None)[source]๏ƒ

Bases: object

Reference to data stored in a backend

Parameters:
provider: str๏ƒ
storage_type: StorageType๏ƒ
resource_id: str๏ƒ
metadata: Dict[str, Any]๏ƒ
created_at: datetime๏ƒ
expires_at: Optional[datetime] = None๏ƒ
to_uri()[source]๏ƒ

Convert to URI format for spore communication

Return type:

str

classmethod from_uri(uri)[source]๏ƒ

Create DataReference from URI

Return type:

DataReference

Parameters:

uri (str)

is_expired()[source]๏ƒ

Check if reference has expired

Return type:

bool

__init__(provider, storage_type, resource_id, metadata=<factory>, created_at=<factory>, expires_at=None)๏ƒ
Parameters:
Return type:

None

class praval.storage.base_provider.StorageQuery(operation, resource, parameters=<factory>, filters=<factory>, limit=None, offset=None, timeout=None)[source]๏ƒ

Bases: object

Query parameters for storage operations

Parameters:
operation: str๏ƒ
resource: str๏ƒ
parameters: Dict[str, Any]๏ƒ
filters: Dict[str, Any]๏ƒ
limit: Optional[int] = None๏ƒ
offset: Optional[int] = None๏ƒ
timeout: Optional[float] = None๏ƒ
__init__(operation, resource, parameters=<factory>, filters=<factory>, limit=None, offset=None, timeout=None)๏ƒ
Parameters:
Return type:

None

class praval.storage.base_provider.StorageResult(success, data=None, error=None, execution_time=0.0, metadata=<factory>, data_reference=None, timestamp=<factory>)[source]๏ƒ

Bases: object

Result from storage operation

Parameters:
success: bool๏ƒ
data: Any = None๏ƒ
error: Optional[str] = None๏ƒ
execution_time: float = 0.0๏ƒ
metadata: Dict[str, Any]๏ƒ
data_reference: Optional[DataReference] = None๏ƒ
timestamp: datetime๏ƒ
__init__(success, data=None, error=None, execution_time=0.0, metadata=<factory>, data_reference=None, timestamp=<factory>)๏ƒ
Parameters:
Return type:

None

class praval.storage.base_provider.StorageMetadata(name, description, storage_type, version='1.0.0', supports_async=True, supports_transactions=False, supports_schemas=False, supports_indexing=False, supports_search=False, supports_streaming=False, max_connection_pool=10, default_timeout=30.0, required_config=<factory>, optional_config=<factory>, connection_string_template=None)[source]๏ƒ

Bases: object

Metadata describing a storage providerโ€™s capabilities

Parameters:
  • name (str)

  • description (str)

  • storage_type (StorageType)

  • version (str)

  • supports_async (bool)

  • supports_transactions (bool)

  • supports_schemas (bool)

  • supports_indexing (bool)

  • supports_search (bool)

  • supports_streaming (bool)

  • max_connection_pool (int)

  • default_timeout (float)

  • required_config (List[str])

  • optional_config (List[str])

  • connection_string_template (str | None)

name: str๏ƒ
description: str๏ƒ
storage_type: StorageType๏ƒ
version: str = '1.0.0'๏ƒ
supports_async: bool = True๏ƒ
supports_transactions: bool = False๏ƒ
supports_schemas: bool = False๏ƒ
supports_indexing: bool = False๏ƒ
supports_streaming: bool = False๏ƒ
max_connection_pool: int = 10๏ƒ
default_timeout: float = 30.0๏ƒ
required_config: List[str]๏ƒ
optional_config: List[str]๏ƒ
connection_string_template: Optional[str] = None๏ƒ
__init__(name, description, storage_type, version='1.0.0', supports_async=True, supports_transactions=False, supports_schemas=False, supports_indexing=False, supports_search=False, supports_streaming=False, max_connection_pool=10, default_timeout=30.0, required_config=<factory>, optional_config=<factory>, connection_string_template=None)๏ƒ
Parameters:
  • name (str)

  • description (str)

  • storage_type (StorageType)

  • version (str)

  • supports_async (bool)

  • supports_transactions (bool)

  • supports_schemas (bool)

  • supports_indexing (bool)

  • supports_search (bool)

  • supports_streaming (bool)

  • max_connection_pool (int)

  • default_timeout (float)

  • required_config (List[str])

  • optional_config (List[str])

  • connection_string_template (str | None)

Return type:

None

class praval.storage.base_provider.BaseStorageProvider(name, config)[source]๏ƒ

Bases: ABC

Abstract base class for all storage providers.

All storage backends must inherit from this class and implement the required methods. This ensures a consistent interface across all storage types while allowing for provider-specific optimizations.

Parameters:
__init__(name, config)[source]๏ƒ

Initialize the storage provider.

Parameters:
  • name (str) โ€“ Unique name for this provider instance

  • config (Dict[str, Any]) โ€“ Provider-specific configuration

abstractmethod async connect()[source]๏ƒ

Establish connection to the storage backend.

Return type:

bool

Returns:

True if connection successful, False otherwise

abstractmethod async disconnect()[source]๏ƒ

Close connection to the storage backend.

abstractmethod async store(resource, data, **kwargs)[source]๏ƒ

Store data in the backend.

Parameters:
  • resource (str) โ€“ Resource identifier (table, bucket, key, etc.)

  • data (Any) โ€“ Data to store

  • **kwargs โ€“ Provider-specific parameters

Return type:

StorageResult

Returns:

StorageResult with operation outcome

abstractmethod async retrieve(resource, **kwargs)[source]๏ƒ

Retrieve data from the backend.

Parameters:
  • resource (str) โ€“ Resource identifier

  • **kwargs โ€“ Provider-specific parameters

Return type:

StorageResult

Returns:

StorageResult with retrieved data

abstractmethod async query(resource, query, **kwargs)[source]๏ƒ

Execute a query against the backend.

Parameters:
  • resource (str) โ€“ Resource to query

  • query (Union[str, Dict]) โ€“ Query string or structured query

  • **kwargs โ€“ Provider-specific parameters

Return type:

StorageResult

Returns:

StorageResult with query results

abstractmethod async delete(resource, **kwargs)[source]๏ƒ

Delete data from the backend.

Parameters:
  • resource (str) โ€“ Resource to delete

  • **kwargs โ€“ Provider-specific parameters

Return type:

StorageResult

Returns:

StorageResult with operation outcome

async exists(resource, **kwargs)[source]๏ƒ

Check if a resource exists.

Parameters:
  • resource (str) โ€“ Resource to check

  • **kwargs โ€“ Provider-specific parameters

Return type:

bool

Returns:

True if resource exists, False otherwise

async list_resources(prefix='', **kwargs)[source]๏ƒ

List available resources.

Parameters:
  • prefix (str) โ€“ Resource prefix to filter by

  • **kwargs โ€“ Provider-specific parameters

Return type:

StorageResult

Returns:

StorageResult with list of resources

async safe_execute(operation, *args, **kwargs)[source]๏ƒ

Execute operation with error handling and timing.

Parameters:
  • operation (str) โ€“ Operation name

  • *args โ€“ Operation parameters

  • **kwargs โ€“

    Operation parameters

Return type:

StorageResult

Returns:

StorageResult with operation outcome

get_schema()[source]๏ƒ

Get provider schema/capabilities.

Return type:

Dict[str, Any]

async health_check()[source]๏ƒ

Perform health check on the storage backend.

Return type:

Dict[str, Any]

praval.storage.base_provider.create_storage_provider(provider_class, name, config)[source]๏ƒ

Create a storage provider instance.

Parameters:
Return type:

BaseStorageProvider

Returns:

Configured provider instance