File size: 2,258 Bytes
b5cb5bb
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
92bfe31
 
 
 
 
 
 
 
 
 
b5cb5bb
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
#!/usr/bin/env python3
"""
Pre-deployment validation script for MathPulse AI backend.

This script runs BEFORE deployment to catch issues early and prevent
restart loops on HF Spaces.

Usage:
    python backend/pre_deploy_check.py

Exit codes:
    0: All checks passed, safe to deploy
    1: Critical issue found, deployment should be blocked
"""

import sys
import os

# Add repo root to path (for services/ delegation) AND backend to path
_repo_root = os.path.dirname(os.path.abspath(__file__))
_parent = os.path.dirname(_repo_root)
_backend = _repo_root

# Add in order: parent first (so services/ can delegate), then backend (for when services/__init__.py tries to import)
if _parent not in sys.path:
    sys.path.insert(0, _parent)
if _backend not in sys.path:
    sys.path.insert(0, _backend)

def main() -> int:
    """Run pre-deployment checks."""
    print("=" * 70)
    print("🔍 PRE-DEPLOYMENT VALIDATION - Backend will run these checks")
    print("=" * 70)
    print()
    
    try:
        # Import the validation module
        from backend.startup_validation import (
            validate_imports,
            validate_environment,
            validate_config_files,
            validate_file_structure,
            validate_inference_client_config,
        )
        
        print("Running pre-deployment checks...\n")
        
        validate_file_structure()
        print()
        
        validate_imports()
        print()
        
        validate_environment()
        print()
        
        validate_config_files()
        print()
        
        validate_inference_client_config()
        print()
        
        print("=" * 70)
        print("✅ PRE-DEPLOYMENT VALIDATION PASSED")
        print("=" * 70)
        print()
        print("Backend is ready for deployment to HF Spaces.")
        print()
        
        return 0
        
    except Exception as e:
        print()
        print("=" * 70)
        print("❌ PRE-DEPLOYMENT VALIDATION FAILED")
        print("=" * 70)
        print()
        print(f"Error: {e}")
        print()
        print("🛑 BLOCK DEPLOYMENT - Fix errors above before pushing to main branch")
        print()
        
        return 1


if __name__ == "__main__":
    sys.exit(main())