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