Source code for pyspark_pipeline_framework.core.config.presets

"""Pre-built configuration policies matching Scala equivalents.

This module provides common retry and circuit breaker configurations
as class-level constants. These match the pre-built policies from
the Scala version of this framework.

Note: These presets are instances, not factories. If you need to
modify a preset, create a new instance instead of mutating these.
"""

from pyspark_pipeline_framework.core.config.retry import CircuitBreakerConfig, ResiliencePolicy, RetryConfig


[docs] class RetryPolicies: """Pre-built retry policies for common use cases. Example: >>> from pyspark_pipeline_framework.core.config import RetryPolicies >>> config = RetryPolicies.AGGRESSIVE >>> print(config.max_attempts) # 5 """ # Single attempt, no retries. # Note: Scala equivalent is max_retries=0; our API uses max_attempts=1 # which has the same behavior (one try, zero retries). NO_RETRY: RetryConfig = RetryConfig(max_attempts=1) # Default retry policy: 3 attempts, 1s initial delay, 2x backoff. DEFAULT: RetryConfig = RetryConfig() # Aggressive retry: more attempts, faster initial retry. AGGRESSIVE: RetryConfig = RetryConfig( max_attempts=5, initial_delay_seconds=0.5, backoff_multiplier=1.5, ) # Conservative retry: fewer attempts, longer delays. CONSERVATIVE: RetryConfig = RetryConfig( max_attempts=2, initial_delay_seconds=5.0, max_delay_seconds=30.0, )
[docs] class CircuitBreakerConfigs: """Pre-built circuit breaker configurations for common use cases. Example: >>> from pyspark_pipeline_framework.core.config import CircuitBreakerConfigs >>> config = CircuitBreakerConfigs.SENSITIVE >>> print(config.failure_threshold) # 3 """ # Default circuit breaker: 5 failures, 60s timeout. DEFAULT: CircuitBreakerConfig = CircuitBreakerConfig() # Sensitive: trips faster, longer recovery time. SENSITIVE: CircuitBreakerConfig = CircuitBreakerConfig( failure_threshold=3, timeout_seconds=120.0, ) # Resilient: tolerates more failures, recovers faster. RESILIENT: CircuitBreakerConfig = CircuitBreakerConfig( failure_threshold=10, timeout_seconds=30.0, )
[docs] class ResiliencePolicies: """Pre-built resilience policies bundling retry and circuit breaker. Example: >>> from pyspark_pipeline_framework.core.config import ResiliencePolicies >>> policy = ResiliencePolicies.DEFAULT >>> print(policy.retry.max_attempts) # 3 """ # No resilience — no retry, no circuit breaker. NONE: ResiliencePolicy = ResiliencePolicy() # Default: standard retry + standard circuit breaker. DEFAULT: ResiliencePolicy = ResiliencePolicy( retry=RetryPolicies.DEFAULT, circuit_breaker=CircuitBreakerConfigs.DEFAULT, ) # Aggressive retry with sensitive circuit breaker. AGGRESSIVE: ResiliencePolicy = ResiliencePolicy( retry=RetryPolicies.AGGRESSIVE, circuit_breaker=CircuitBreakerConfigs.SENSITIVE, ) # Conservative retry with resilient circuit breaker. CONSERVATIVE: ResiliencePolicy = ResiliencePolicy( retry=RetryPolicies.CONSERVATIVE, circuit_breaker=CircuitBreakerConfigs.RESILIENT, ) # Retry only — no circuit breaker. RETRY_ONLY: ResiliencePolicy = ResiliencePolicy( retry=RetryPolicies.DEFAULT, ) # Circuit breaker only — no retry. CIRCUIT_BREAKER_ONLY: ResiliencePolicy = ResiliencePolicy( circuit_breaker=CircuitBreakerConfigs.DEFAULT, )