praval.storage.decorators

Storage decorators for Praval agents

Provides decorator-based integration between agents and storage providers, following the same patterns as the agent and tool decorators.

Functions

requires_storage(*provider_names[, permissions])

Decorator to require specific storage providers for a function.

storage_enabled([providers, auto_register, ...])

Decorator to enable storage access for agent functions.

praval.storage.decorators.storage_enabled(providers=None, auto_register=True, permissions=None, **default_configs)[source]

Decorator to enable storage access for agent functions.

Parameters:
  • providers (Union[str, List[str], Dict[str, Dict[str, Any]], None]) – Storage providers to enable. Can be: - String: Single provider name - List: Multiple provider names - Dict: Provider name -> configuration mapping

  • auto_register (bool) – Whether to auto-register providers from environment

  • permissions (Optional[List[str]]) – Default permissions for storage access

  • **default_configs – Default configurations for providers

Examples

@storage_enabled(“postgres”) @agent(“data_analyst”) def analyze_data(spore):

data = storage.query(“postgres”, “SELECT * FROM customers”)

@storage_enabled([“postgres”, “s3”, “redis”]) @agent(“business_intelligence”) def generate_report(spore):

# Access multiple storage backends pass

@storage_enabled({

“postgres”: {“host”: “localhost”, “database”: “business”}, “s3”: {“bucket_name”: “reports”}

}) @agent(“report_generator”) def create_analysis(spore):

pass

praval.storage.decorators.requires_storage(*provider_names, permissions=None)[source]

Decorator to require specific storage providers for a function.

Parameters:
  • *provider_names (str) – Names of required storage providers

  • permissions (Optional[List[str]]) – Required permissions for storage access

Example

@requires_storage(“postgres”, “s3”) @agent(“data_processor”) def process_customer_data(spore):

# Function requires both postgres and s3 to be available pass