Source code for pynenc.cli.monitor_cli

import argparse
import importlib.util
import sys

from pynenc.cli.namespace import PynencCLINamespace


[docs] def add_monitor_subparser(subparsers: argparse._SubParsersAction) -> None: """Add the monitor subparser to the main pynenc CLI.""" monitor_parser = subparsers.add_parser( "monitor", help="Start the web monitoring interface" ) monitor_parser.add_argument( "--host", default="127.0.0.1", help="Host to bind the server (default: 127.0.0.1)", ) monitor_parser.add_argument( "--port", type=int, default=8000, help="Port to bind the server (default: 8000)" ) monitor_parser.set_defaults(func=start_monitor_command)
[docs] def start_monitor_command(args: PynencCLINamespace) -> None: """Execute the monitor command, starting the web interface.""" # Check if the monitor dependencies are installed if not _check_monitor_dependencies(): print( "Monitor dependencies not installed. Please install with: " "poetry install --with monitor" ) sys.exit(1) # Import the app module only when dependencies are confirmed to exist try: from pynmon.app import start_monitor except ImportError: print( "Error: Monitoring features are not available. Please install pynenc with monitoring extras:" ) print("pip install pynenc[monitor]") sys.exit(1) # Start the monitor with the provided app instance if not hasattr(args, "app_instance") or not args.app_instance: print("Error: No Pynenc app instance available.") sys.exit(1) print(f"Starting monitor for app: {args.app}") start_monitor(app_instance=args.app_instance, host=args.host, port=args.port)
[docs] def _check_monitor_dependencies() -> bool: """Check if required monitoring dependencies are installed.""" dependencies = ["fastapi", "jinja2", "uvicorn"] for dep in dependencies: if importlib.util.find_spec(dep) is None: return False return True