Spaces:
Running
Running
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())
|