File size: 3,289 Bytes
588939d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
#!/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()