Files
aitbc/aitbc/config.py
aitbc b064f922bd
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
Add normalization to gossip transaction processing to preserve type field
2026-04-22 13:48:20 +02:00

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")