Some checks failed
Blockchain Synchronization Verification / sync-verification (push) Successful in 2s
Integration Tests / test-service-integration (push) Failing after 10s
Multi-Node Blockchain Health Monitoring / health-check (push) Successful in 2s
P2P Network Verification / p2p-verification (push) Successful in 2s
Python Tests / test-python (push) Successful in 11s
Security Scanning / security-scan (push) Has been cancelled
81 lines
3.2 KiB
Python
81 lines
3.2 KiB
Python
"""
|
|
AITBC Configuration Classes
|
|
Base configuration classes for AITBC applications
|
|
"""
|
|
|
|
from pathlib import Path
|
|
from typing import Optional
|
|
from pydantic_settings import BaseSettings, SettingsConfigDict
|
|
from pydantic import Field
|
|
|
|
from .constants import DATA_DIR, CONFIG_DIR, LOG_DIR, ENV_FILE
|
|
|
|
|
|
class BaseAITBCConfig(BaseSettings):
|
|
"""
|
|
Base configuration class for all AITBC applications.
|
|
Provides common AITBC-specific settings and environment file loading.
|
|
"""
|
|
|
|
model_config = SettingsConfigDict(
|
|
env_file=str(ENV_FILE),
|
|
env_file_encoding="utf-8",
|
|
case_sensitive=False,
|
|
extra="ignore"
|
|
)
|
|
|
|
# AITBC system directories
|
|
data_dir: Path = Field(default=DATA_DIR, description="AITBC data directory")
|
|
config_dir: Path = Field(default=CONFIG_DIR, description="AITBC configuration directory")
|
|
log_dir: Path = Field(default=LOG_DIR, description="AITBC log directory")
|
|
|
|
# Application settings
|
|
app_name: str = Field(default="AITBC Application", description="Application name")
|
|
app_version: str = Field(default="1.0.0", description="Application version")
|
|
environment: str = Field(default="development", description="Environment (development/staging/production)")
|
|
debug: bool = Field(default=False, description="Debug mode")
|
|
|
|
# Logging settings
|
|
log_level: str = Field(default="INFO", description="Log level (DEBUG/INFO/WARNING/ERROR/CRITICAL)")
|
|
log_format: str = Field(
|
|
default="%(asctime)s - %(name)s - %(levelname)s - %(message)s",
|
|
description="Log format string"
|
|
)
|
|
|
|
class Config:
|
|
"""Pydantic configuration"""
|
|
env_file = str(ENV_FILE)
|
|
env_file_encoding = "utf-8"
|
|
case_sensitive = False
|
|
|
|
|
|
class AITBCConfig(BaseAITBCConfig):
|
|
"""
|
|
Standard AITBC configuration with common settings.
|
|
Inherits from BaseAITBCConfig and adds AITBC-specific fields.
|
|
"""
|
|
|
|
# Server settings
|
|
host: str = Field(default="0.0.0.0", description="Server host address")
|
|
port: int = Field(default=8000, description="Server port")
|
|
workers: int = Field(default=1, description="Number of worker processes")
|
|
|
|
# Database settings
|
|
database_url: Optional[str] = Field(default=None, description="Database connection URL")
|
|
database_pool_size: int = Field(default=10, description="Database connection pool size")
|
|
|
|
# Redis settings (if applicable)
|
|
redis_url: Optional[str] = Field(default=None, description="Redis connection URL")
|
|
redis_max_connections: int = Field(default=10, description="Redis max connections")
|
|
redis_timeout: int = Field(default=5, description="Redis timeout in seconds")
|
|
|
|
# Security settings
|
|
secret_key: Optional[str] = Field(default=None, description="Application secret key")
|
|
jwt_secret: Optional[str] = Field(default=None, description="JWT secret key")
|
|
jwt_algorithm: str = Field(default="HS256", description="JWT algorithm")
|
|
jwt_expiration_hours: int = Field(default=24, description="JWT token expiration in hours")
|
|
|
|
# Performance settings
|
|
request_timeout: int = Field(default=30, description="Request timeout in seconds")
|
|
max_request_size: int = Field(default=10 * 1024 * 1024, description="Max request size in bytes")
|