enhanced-rag-demo / scripts /validate_deployment.py
Arthur Passuello
initial commit
5e1a30c
#!/usr/bin/env python3
"""
HuggingFace Spaces Deployment Validation Script
Epic 2 Enhanced RAG System
This script validates that all necessary files and dependencies
are properly configured for HuggingFace Spaces deployment.
"""
import os
import sys
from pathlib import Path
def check_file_exists(file_path, description):
"""Check if a file exists and report status."""
if Path(file_path).exists():
print(f"βœ… {description}: {file_path}")
return True
else:
print(f"❌ {description}: {file_path} - NOT FOUND")
return False
def check_directory_exists(dir_path, description):
"""Check if a directory exists and report status."""
if Path(dir_path).is_dir():
print(f"βœ… {description}: {dir_path}")
return True
else:
print(f"❌ {description}: {dir_path} - NOT FOUND")
return False
def validate_deployment():
"""Run complete deployment validation."""
print("πŸš€ Epic 2 Enhanced RAG - HuggingFace Spaces Deployment Validation")
print("=" * 70)
validation_passed = True
# Check essential application files
print("\nπŸ“± Application Files:")
validation_passed &= check_file_exists("app.py", "Main entry point")
validation_passed &= check_file_exists("streamlit_epic2_demo.py", "Epic 2 demo app")
validation_passed &= check_file_exists("requirements.txt", "Dependencies")
validation_passed &= check_file_exists("README.md", "Documentation")
# Check core system architecture
print("\nπŸ—οΈ System Architecture:")
validation_passed &= check_directory_exists("src", "Core system")
validation_passed &= check_directory_exists("src/core", "Platform orchestrator")
validation_passed &= check_directory_exists("src/components", "Components")
validation_passed &= check_file_exists("src/core/platform_orchestrator.py", "Platform orchestrator")
validation_passed &= check_file_exists("src/core/component_factory.py", "Component factory")
# Check configuration files
print("\nβš™οΈ Configuration:")
validation_passed &= check_directory_exists("config", "Configuration directory")
validation_passed &= check_file_exists("config/default.yaml", "Basic configuration")
validation_passed &= check_file_exists("config/epic2_graph_calibrated.yaml", "Epic 2 configuration")
# Check sample data
print("\nπŸ“„ Sample Data:")
validation_passed &= check_directory_exists("data", "Data directory")
validation_passed &= check_directory_exists("data/test", "Test documents")
# Check validation evidence
print("\nπŸ“Š Validation Evidence:")
validation_passed &= check_file_exists("SCORE_COMPRESSION_FIX_COMPLETE_VALIDATION.md", "Performance validation")
validation_passed &= check_file_exists("DEPLOYMENT_GUIDE.md", "Deployment guide")
# Summary
print("\n" + "=" * 70)
if validation_passed:
print("πŸŽ‰ VALIDATION PASSED: All files ready for HuggingFace Spaces deployment!")
print("\nπŸ“‹ Next Steps:")
print("1. Create new Streamlit Space on HuggingFace")
print("2. Upload all files to your space")
print("3. Set HF_TOKEN environment variable (optional)")
print("4. Monitor build logs and deploy")
print("\nπŸš€ Expected Results:")
print("- Epic 2 capabilities with 48.7% MRR improvement")
print("- Automatic environment detection and configuration")
print("- Professional demo showcasing Swiss engineering standards")
return True
else:
print("❌ VALIDATION FAILED: Missing required files or directories")
print("\nπŸ”§ Please ensure all Epic 2 system files are properly copied")
return False
def check_requirements_compatibility():
"""Check if requirements.txt is HF Spaces compatible."""
try:
with open("requirements.txt", "r") as f:
content = f.read()
print("\nπŸ“¦ Requirements Analysis:")
lines = [line.strip() for line in content.split('\n') if line.strip() and not line.startswith('#')]
print(f"βœ… Dependencies count: {len(lines)}")
# Check for HF Spaces optimizations
if "streamlit" in content:
print("βœ… Streamlit framework included")
if "transformers" in content:
print("βœ… Transformers library included")
if "huggingface-hub" in content:
print("βœ… HuggingFace Hub integration included")
print("βœ… Requirements file appears HF Spaces compatible")
except FileNotFoundError:
print("❌ requirements.txt not found")
return False
return True
if __name__ == "__main__":
success = validate_deployment()
success &= check_requirements_compatibility()
sys.exit(0 if success else 1)