vipr.plugins.api.fastapi.router_generator package

Submodules

vipr.plugins.api.fastapi.router_generator.constants module

Constants for FastAPI router generation.

Centralized configuration values to improve maintainability.

vipr.plugins.api.fastapi.router_generator.core module

Core utilities for FastAPI router generation.

Contains model resolution, serialization, configuration handling, parameter processing, CLI execution, and other essential utilities.

vipr.plugins.api.fastapi.router_generator.core.create_temp_yaml(config_data: dict) str

Create temporary YAML file from configuration data.

Parameters:

config_data – Configuration dictionary

Returns:

Path to temporary YAML file

vipr.plugins.api.fastapi.router_generator.core.create_typed_parameter(param_name: str, param_config: dict) Parameter

Create properly typed FastAPI parameter with security validation.

Parameters:
  • param_name – Name of the parameter

  • param_config – Parameter configuration from @ex decorator

Returns:

FastAPI Parameter with correct typing and validation

vipr.plugins.api.fastapi.router_generator.core.execute_cli_command(controller_label: str, cli_command: str, config_path: str | None = None, post_args: list[str] | None = None) Any

Execute CLI command and handle common processing.

vipr.plugins.api.fastapi.router_generator.core.extract_query_params_from_ex(method) dict[str, dict[str, Any]]

Extrahiere Query-Parameter aus @ex decorator arguments.

vipr.plugins.api.fastapi.router_generator.core.get_current_timestamp() str

Get current timestamp in ISO format.

vipr.plugins.api.fastapi.router_generator.core.handle_uuid_validation(config_data: dict) str

Handle UUID validation and generation for POST endpoints.

Parameters:

config_data – Configuration data dictionary

Returns:

Valid UUID string

Return type:

str

Raises:

HTTPException – If provided UUID is invalid

vipr.plugins.api.fastapi.router_generator.core.process_result(result: Any, transform_fn: Any | None = None) Any

Apply transformation and serialization to result.

vipr.plugins.api.fastapi.router_generator.core.python_method_to_cli_command(method_name: str) str

Convert Python method name to CLI command name.

Cement CLI uses hyphens while Python uses underscores. Example: ‘generate_standard_config’ -> ‘generate-standard-config’

Parameters:

method_name – Python method name with underscores

Returns:

CLI command name with hyphens

vipr.plugins.api.fastapi.router_generator.core.resolve_model_type(model_ref: Any) Any | None

Resolve model type from BaseModel class references and generic types.

Parameters:

model_ref – Model reference (BaseModel class, generic type, or None/dict)

Returns:

Resolved model class or None

vipr.plugins.api.fastapi.router_generator.core.serialize_numpy_data(data: Any) Any

Recursively serialize numpy arrays and other non-JSON-serializable data. This matches the behavior from the original FastAPI endpoint.

vipr.plugins.api.fastapi.router_generator.core.validate_cli_argument(cli_arg: str) bool

Validate CLI argument format for security.

Parameters:

cli_arg – CLI argument string

Returns:

True if valid, False otherwise

vipr.plugins.api.fastapi.router_generator.endpoints module

Endpoint factory functions for FastAPI router generation.

Creates different types of endpoints (POST, GET with params, simple GET) with proper security validation and plugin-safe execution.

vipr.plugins.api.fastapi.router_generator.endpoints.create_get_endpoint_with_params(controller_label: str, cli_command: str, query_params: dict[str, dict[str, Any]], transform_fn: Any | None) Any

Create SECURE GET endpoint with query parameters.

vipr.plugins.api.fastapi.router_generator.endpoints.create_plugin_safe_endpoint(controller_label: str, method_name: str, request_model: type[BaseModel] | None, response_model: Any | None, query_params: dict[str, dict[str, Any]], transform_fn: Any | None)

Create FastAPI endpoint that executes via runner.run_controller() for plugin safety.

Delegates to specialized functions based on endpoint type.

vipr.plugins.api.fastapi.router_generator.endpoints.create_post_endpoint(controller_label: str, cli_command: str, request_model: type[BaseModel], transform_fn: Any | None) Any

Create POST endpoint that generates UUID and passes it to controller.

vipr.plugins.api.fastapi.router_generator.endpoints.create_simple_get_endpoint(controller_label: str, cli_command: str, transform_fn: Any | None) Any

Create simple GET endpoint without parameters.

vipr.plugins.api.fastapi.router_generator.router_generator module

Plugin Introspection Engine

Automatically generates FastAPI routers from plugin metadata. This eliminates the need for manual HTTP ↔ CLI mapping.

vipr.plugins.api.fastapi.router_generator.router_generator.build_router() APIRouter

Build FastAPI router by scanning controller methods for @api decorators.

This function introspects all loaded Cement controllers for methods decorated with @api and automatically generates corresponding FastAPI endpoints. All methods are executed via runner.run_controller() to ensure proper plugin initialization.

Returns:

APIRouter with auto-generated endpoints

vipr.plugins.api.fastapi.router_generator.router_generator.discover_plugin_apis() list[dict[str, Any]]

Discover all plugin APIs for debugging and documentation.

Scans all controllers for @api decorator-based endpoints.

Returns:

List of API endpoint mappings

vipr.plugins.api.fastapi.router_generator.security module

Security validation for FastAPI router generation.

Provides parameter validation and sanitization to prevent injection attacks.

class vipr.plugins.api.fastapi.router_generator.security.ParamValidator

Bases: object

classmethod validate_and_sanitize(value: Any, param_type: str = 'str') str

Validate and sanitize parameter value.

Module contents

Router Generator Package

Automatically generates FastAPI routers from plugin metadata.

vipr.plugins.api.fastapi.router_generator.build_router() APIRouter

Build FastAPI router by scanning controller methods for @api decorators.

This function introspects all loaded Cement controllers for methods decorated with @api and automatically generates corresponding FastAPI endpoints. All methods are executed via runner.run_controller() to ensure proper plugin initialization.

Returns:

APIRouter with auto-generated endpoints

vipr.plugins.api.fastapi.router_generator.discover_plugin_apis() list[dict[str, Any]]

Discover all plugin APIs for debugging and documentation.

Scans all controllers for @api decorator-based endpoints.

Returns:

List of API endpoint mappings