#!/usr/bin/env python3 """ Validation de la structure finale de l'application """ import os def validate_app_structure(): """Valide que tous les fichiers nécessaires sont présents""" print("🔍 Validation de la structure de l'application") print("=" * 50) required_files = { 'app.py': 'Application Gradio principale', 'requirements.txt': 'Dépendances Python', 'README.md': 'Métadonnées HuggingFace Spaces', 'sample_data.csv': 'Données de fallback (non utilisées)' } optional_files = { 'DEPLOY_HF.md': 'Guide de déploiement', 'PARSING_ERROR_FIX.md': 'Documentation de la correction', 'FINAL_SUMMARY.md': 'Résumé des modifications' } print("📁 Fichiers requis:") all_present = True for filename, description in required_files.items(): if os.path.exists(filename): size = os.path.getsize(filename) print(f" ✅ {filename:<20} ({size:,} bytes) - {description}") else: print(f" ❌ {filename:<20} MANQUANT - {description}") all_present = False print("\n📁 Fichiers optionnels:") for filename, description in optional_files.items(): if os.path.exists(filename): size = os.path.getsize(filename) print(f" ✅ {filename:<25} ({size:,} bytes) - {description}") else: print(f" ⚪ {filename:<25} Absent - {description}") print("\n🔧 Validation du contenu:") # Vérifier app.py if os.path.exists('app.py'): with open('app.py', 'r', encoding='utf-8') as f: content = f.read() checks = [ ('HackathonCRA/2024', 'Dataset ID configuré'), ('load_dataset', 'Import datasets présent'), ('dtype=str', 'Chargement CSV robuste'), ('csv_files =', 'Fallback CSV direct'), ('pandas', 'Import pandas'), ('AgricultureAnalyzer', 'Classe principale') ] for check, description in checks: if check in content: print(f" ✅ {description}") else: print(f" ⚠️ {description} - Non trouvé: '{check}'") # Vérifier requirements.txt if os.path.exists('requirements.txt'): with open('requirements.txt', 'r') as f: requirements = f.read() deps = [ 'gradio', 'datasets', 'huggingface_hub', 'pandas', 'numpy', 'plotly' ] print(f"\n📦 Dépendances:") for dep in deps: if dep in requirements: print(f" ✅ {dep}") else: print(f" ❌ {dep} manquant") print(f"\n🎯 RÉSULTAT:") if all_present: print(" ✅ Tous les fichiers requis sont présents") print(" ✅ Application prête pour HuggingFace Spaces") print(" 🚀 Vous pouvez déployer maintenant !") else: print(" ❌ Des fichiers requis sont manquants") print(" 🔧 Corrigez avant le déploiement") return all_present if __name__ == "__main__": validate_app_structure()