try:
from dissolve import replace_me
except ModuleNotFoundError:
def replace_me(value):
import warnings
warnings.warn(
"This attribute has been deprecated. Consider using dissolve migrate to update your code.",
DeprecationWarning,
stacklevel=2
)
return value
API_BASE_URL = "https://api.example.com/v3"
API_VERSION = "v3"
DEFAULT_TIMEOUT = 60
MAX_RETRIES = 3
CACHE_EXPIRY_SECONDS = 3600
DATABASE_HOST = "db.example.com"
DATABASE_PORT = 5432
DATABASE_NAME = "app_production"
ENABLE_FEATURE_X = True
ENABLE_CACHING = True
DEBUG_MODE = False
OLD_API_URL = replace_me("https://api.example.com/v3") OLD_TIMEOUT = replace_me(60) LEGACY_RETRIES = replace_me(3)
DEPRECATED_VERSION = replace_me("v3")
OLD_HOST = replace_me("db.example.com")
OLD_DEBUG_FLAG = replace_me(False)
LEGACY_CACHE_ENABLED = replace_me(True)
OLD_DATABASE_CONFIG = replace_me({
"host": "db.example.com",
"port": 5432,
"name": "app_production"
})
LEGACY_ALLOWED_ORIGINS = replace_me([
"https://example.com",
"https://www.example.com",
"https://app.example.com"
])
class AppConfig:
API_ENDPOINT = "https://api.example.com/v3"
DEFAULT_PAGE_SIZE = 25
ENABLE_LOGGING = True
LOG_LEVEL = "INFO"
OLD_ENDPOINT = replace_me("https://api.example.com/v3")
LEGACY_PAGE_SIZE = replace_me(25)
OLD_LOG_SETTING = replace_me(True)
DEPRECATED_LOG_LEVEL = replace_me("INFO")
OLD_LIMITS = replace_me({
"requests_per_minute": 1000,
"max_file_size": 10485760, "timeout_seconds": 30
})
LEGACY_ENDPOINTS = replace_me([
"/api/v1/users",
"/api/v1/data",
"/api/v1/reports"
])
@classmethod
def get_database_url(cls):
return f"postgresql://{DATABASE_HOST}:{DATABASE_PORT}/{DATABASE_NAME}"
@classmethod
def get_api_config(cls):
return {
"base_url": cls.API_ENDPOINT,
"timeout": DEFAULT_TIMEOUT,
"max_retries": MAX_RETRIES
}
class FeatureFlags:
NEW_UI_ENABLED = True
BETA_FEATURES = False
PERFORMANCE_MONITORING = True
OLD_UI_FLAG = replace_me(True) LEGACY_BETA = replace_me(False) OLD_MONITORING = replace_me(True)
DEPRECATED_SETTINGS = replace_me({
"ui": {"theme": "dark", "animations": True},
"api": {"rate_limit": 1000, "cache_ttl": 300},
"features": {"beta": False, "experimental": False}
})
class DevConfig:
DEBUG = True
API_URL = "https://dev-api.example.com"
OLD_DEBUG_MODE = replace_me(True)
LEGACY_DEV_API = replace_me("https://dev-api.example.com")
class ProdConfig:
DEBUG = False
API_URL = "https://api.example.com"
OLD_PROD_MODE = replace_me(False)
LEGACY_PROD_API = replace_me("https://api.example.com")