""" Installation helper utilities for ARF Demo """ import subprocess import sys import logging from typing import Dict, Any, List, Optional logger = logging.getLogger(__name__) class InstallationHelper: """Helper class for ARF package installation""" @staticmethod def install_arf_oss() -> Dict[str, Any]: """Install ARF OSS package""" try: logger.info("Installing ARF OSS v3.3.7...") result = subprocess.run( [sys.executable, "-m", "pip", "install", "agentic-reliability-framework==3.3.7"], capture_output=True, text=True, check=True ) return { "success": True, "message": "✅ ARF OSS v3.3.7 installed successfully", "output": result.stdout } except subprocess.CalledProcessError as e: return { "success": False, "message": "❌ Failed to install ARF OSS", "error": e.stderr } except Exception as e: return { "success": False, "message": f"❌ Installation error: {str(e)}", "error": str(e) } @staticmethod def check_installation() -> Dict[str, Any]: """Check ARF package installation""" try: import agentic_reliability_framework as arf_oss oss_version = getattr(arf_oss, '__version__', 'unknown') oss_installed = True except ImportError: oss_installed = False oss_version = None try: import arf_enterprise enterprise_version = getattr(arf_enterprise, '__version__', 'unknown') enterprise_installed = True except ImportError: enterprise_installed = False enterprise_version = None return { "oss_installed": oss_installed, "oss_version": oss_version, "enterprise_installed": enterprise_installed, "enterprise_version": enterprise_version, "recommendations": InstallationHelper.get_recommendations(oss_installed, enterprise_installed) } @staticmethod def get_recommendations(oss_installed: bool, enterprise_installed: bool) -> List[str]: """Get installation recommendations""" recommendations = [] if not oss_installed: recommendations.append( "Install ARF OSS: `pip install agentic-reliability-framework==3.3.7`" ) if not enterprise_installed: recommendations.append( "Install ARF Enterprise: `pip install agentic-reliability-enterprise` (requires license)" ) return recommendations @staticmethod def get_installation_html() -> str: """Get HTML for installation status display""" status = InstallationHelper.check_installation() if status["oss_installed"]: oss_html = f"""
✅ ARF OSS v{status['oss_version']} installed
""" else: oss_html = """
⚠️ ARF OSS not installed
""" if status["enterprise_installed"]: enterprise_html = f"""
🚀 ARF Enterprise v{status['enterprise_version']} installed
""" else: enterprise_html = """
🔒 ARF Enterprise not installed
""" recommendations_html = "" if status["recommendations"]: rec_list = "\n".join([f"
  • {rec}
  • " for rec in status["recommendations"]]) recommendations_html = f"""
    💡 Recommendations:
    """ return f"""

    📦 ARF Installation Status

    {oss_html} {enterprise_html} {recommendations_html}
    """ # Export singleton installation_helper = InstallationHelper()