| import os |
| import platform |
| from dotenv import load_dotenv |
|
|
| |
| load_dotenv() |
|
|
| def get_system_encoding(): |
| """Get the system's preferred encoding with UTF-8 fallback.""" |
| try: |
| |
| import locale |
| preferred_encoding = locale.getpreferredencoding(False) |
| |
| |
| if preferred_encoding.lower() not in ['utf-8', 'utf8', 'utf_8']: |
| |
| if platform.system() == 'Windows': |
| try: |
| os.environ['PYTHONIOENCODING'] = 'utf-8' |
| preferred_encoding = 'utf-8' |
| except: |
| preferred_encoding = 'utf-8' |
| else: |
| preferred_encoding = 'utf-8' |
| |
| return preferred_encoding |
| except: |
| return 'utf-8' |
|
|
| class Config: |
| """Base configuration class.""" |
| |
| |
| DEFAULT_ENCODING = get_system_encoding() |
| |
| |
| SUPABASE_URL = os.environ.get('SUPABASE_URL') or '' |
| SUPABASE_KEY = os.environ.get('SUPABASE_KEY') or '' |
| |
| |
| CLIENT_ID = os.environ.get('CLIENT_ID') or '' |
| CLIENT_SECRET = os.environ.get('CLIENT_SECRET') or '' |
| REDIRECT_URL = os.environ.get('REDIRECT_URL') or '' |
| |
| |
| HUGGING_KEY = os.environ.get('HUGGING_KEY') or '' |
| |
| |
| JWT_SECRET_KEY = os.environ.get('JWT_SECRET_KEY') or 'your-secret-key-change-in-production' |
| |
| |
| DATABASE_URL = os.environ.get('DATABASE_URL') or '' |
| |
| |
| SECRET_KEY = os.environ.get('SECRET_KEY') or 'your-secret-key-change-in-production' |
| DEBUG = os.environ.get('DEBUG', 'False').lower() == 'true' |
| |
| |
| SCHEDULER_ENABLED = os.environ.get('SCHEDULER_ENABLED', 'True').lower() == 'true' |
| |
| |
| FORCE_UTF8 = os.environ.get('FORCE_UTF8', 'True').lower() == 'true' |
| UNICODE_LOGGING = os.environ.get('UNICODE_LOGGING', 'True').lower() == 'true' |
| |
| |
| ENVIRONMENT = os.environ.get('ENVIRONMENT', 'development').lower() |
| IS_WINDOWS = platform.system() == 'Windows' |
| IS_DOCKER = os.environ.get('DOCKER_CONTAINER', '').lower() == 'true' |
| |
| |
| if FORCE_UTF8: |
| os.environ['PYTHONIOENCODING'] = 'utf-8' |
| os.environ['PYTHONUTF8'] = '1' |
| |
| |
| LOG_LEVEL = os.environ.get('LOG_LEVEL', 'INFO' if ENVIRONMENT == 'production' else 'DEBUG') |
| UNICODE_SAFE_LOGGING = UNICODE_LOGGING and not IS_WINDOWS |