File size: 2,791 Bytes
25f22bf |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
import os
import platform
from dotenv import load_dotenv
# Load environment variables from .env file
load_dotenv()
def get_system_encoding():
"""Get the system's preferred encoding with UTF-8 fallback."""
try:
# Try to get the preferred encoding
import locale
preferred_encoding = locale.getpreferredencoding(False)
# Ensure it's UTF-8 or a compatible encoding
if preferred_encoding.lower() not in ['utf-8', 'utf8', 'utf_8']:
# On Windows, try to set 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."""
# Set default encoding
DEFAULT_ENCODING = get_system_encoding()
# Supabase configuration
SUPABASE_URL = os.environ.get('SUPABASE_URL') or ''
SUPABASE_KEY = os.environ.get('SUPABASE_KEY') or ''
# LinkedIn OAuth configuration
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 Face configuration
HUGGING_KEY = os.environ.get('HUGGING_KEY') or ''
# JWT configuration
JWT_SECRET_KEY = os.environ.get('JWT_SECRET_KEY') or 'your-secret-key-change-in-production'
# Database configuration
DATABASE_URL = os.environ.get('DATABASE_URL') or ''
# Application configuration
SECRET_KEY = os.environ.get('SECRET_KEY') or 'your-secret-key-change-in-production'
DEBUG = os.environ.get('DEBUG', 'False').lower() == 'true'
# Scheduler configuration
SCHEDULER_ENABLED = os.environ.get('SCHEDULER_ENABLED', 'True').lower() == 'true'
# Unicode/Encoding configuration
FORCE_UTF8 = os.environ.get('FORCE_UTF8', 'True').lower() == 'true'
UNICODE_LOGGING = os.environ.get('UNICODE_LOGGING', 'True').lower() == 'true'
# Environment detection
ENVIRONMENT = os.environ.get('ENVIRONMENT', 'development').lower()
IS_WINDOWS = platform.system() == 'Windows'
IS_DOCKER = os.environ.get('DOCKER_CONTAINER', '').lower() == 'true'
# Set environment-specific encoding settings
if FORCE_UTF8:
os.environ['PYTHONIOENCODING'] = 'utf-8'
os.environ['PYTHONUTF8'] = '1'
# Debug and logging settings
LOG_LEVEL = os.environ.get('LOG_LEVEL', 'INFO' if ENVIRONMENT == 'production' else 'DEBUG')
UNICODE_SAFE_LOGGING = UNICODE_LOGGING and not IS_WINDOWS |