#!/usr/bin/env python3
"""
Script de test pour vérifier l'installation des dépendances.
Lance ce script après avoir installé requirements.txt
"""

import sys
import importlib

print("=" * 60)
print("TEST D'INSTALLATION DES DÉPENDANCES")
print("=" * 60)
print()

# Liste des modules critiques à tester
REQUIRED_MODULES = {
    'flask': 'Flask',
    'flask_sqlalchemy': 'Flask-SQLAlchemy',
    'flask_jwt_extended': 'Flask-JWT-Extended',
    'flask_cors': 'Flask-CORS',
    'sqlalchemy': 'SQLAlchemy',
    'pymysql': 'PyMySQL',
    'pydantic': 'Pydantic',
    'passlib': 'Passlib',
    'bcrypt': 'Bcrypt',
    'openai': 'OpenAI SDK',
    'requests': 'Requests',
    'dotenv': 'python-dotenv',
}

OPTIONAL_MODULES = {
    'flask_migrate': 'Flask-Migrate',
    'flask_limiter': 'Flask-Limiter',
    'flask_mail': 'Flask-Mail',
    'pytest': 'Pytest',
    'gunicorn': 'Gunicorn',
}

def test_module(module_name, display_name):
    """Teste l'import d'un module."""
    try:
        mod = importlib.import_module(module_name)
        version = getattr(mod, '__version__', 'N/A')
        print(f"✅ {display_name:25s} - version {version}")
        return True
    except ImportError as e:
        print(f"❌ {display_name:25s} - ERREUR: {e}")
        return False
    except Exception as e:
        print(f"⚠️  {display_name:25s} - Importé mais erreur: {e}")
        return True

def main():
    print("1️⃣  Test des modules CRITIQUES:")
    print("-" * 60)
    
    critical_ok = 0
    critical_total = len(REQUIRED_MODULES)
    
    for module, name in REQUIRED_MODULES.items():
        if test_module(module, name):
            critical_ok += 1
    
    print()
    print("2️⃣  Test des modules OPTIONNELS:")
    print("-" * 60)
    
    optional_ok = 0
    optional_total = len(OPTIONAL_MODULES)
    
    for module, name in OPTIONAL_MODULES.items():
        if test_module(module, name):
            optional_ok += 1
    
    print()
    print("=" * 60)
    print("RÉSUMÉ")
    print("=" * 60)
    print(f"Modules critiques : {critical_ok}/{critical_total}")
    print(f"Modules optionnels : {optional_ok}/{optional_total}")
    
    print()
    
    if critical_ok == critical_total:
        print("✅ SUCCÈS ! Toutes les dépendances critiques sont installées.")
        print("   Tu peux commencer le développement ! 🚀")
        return 0
    else:
        print(f"❌ ERREUR : {critical_total - critical_ok} dépendance(s) critique(s) manquante(s).")
        print("   Relance l'installation avec :")
        print("   pip install -r requirements.txt")
        return 1
    
    print()
    print("3️⃣  Test de la version Python:")
    print("-" * 60)
    print(f"Python version : {sys.version}")
    print(f"Python executable : {sys.executable}")
    
    major, minor = sys.version_info[:2]
    if major == 3 and minor >= 11:
        print(f"✅ Python {major}.{minor} est compatible")
    else:
        print(f"⚠️  Python {major}.{minor} : version 3.11+ recommandée")

if __name__ == '__main__':
    exit(main())

