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