Coverage report: 77%

Files Functions Classes

coverage.py v7.10.6, created at 2025-09-16 08:08 -0700

File function statements missing excluded coverage
excalidraw_mcp/__init__.py (no function) 2 0 0 100%
excalidraw_mcp/__main__.py (no function) 3 1 0 67%
excalidraw_mcp/cli.py get_process_manager 3 3 0 0%
excalidraw_mcp/cli.py get_monitoring_supervisor 3 3 0 0%
excalidraw_mcp/cli.py find_mcp_server_process 8 8 0 0%
excalidraw_mcp/cli.py find_canvas_server_process 8 8 0 0%
excalidraw_mcp/cli.py start_mcp_server_impl 40 40 0 0%
excalidraw_mcp/cli.py _stop_process 15 15 0 0%
excalidraw_mcp/cli.py stop_mcp_server_impl 22 22 0 0%
excalidraw_mcp/cli.py restart_mcp_server_impl 4 4 0 0%
excalidraw_mcp/cli.py status_impl 28 28 0 0%
excalidraw_mcp/cli.py _find_log_file 5 5 0 0%
excalidraw_mcp/cli.py _show_missing_log_message 3 3 0 0%
excalidraw_mcp/cli.py _follow_log_output 7 7 0 0%
excalidraw_mcp/cli.py _show_recent_log_lines 5 5 0 0%
excalidraw_mcp/cli.py logs_impl 12 12 0 0%
excalidraw_mcp/cli.py main 18 18 0 0%
excalidraw_mcp/cli.py (no function) 38 38 0 0%
excalidraw_mcp/config.py SecurityConfig.__post_init__ 1 0 0 100%
excalidraw_mcp/config.py ServerConfig.__post_init__ 10 1 0 90%
excalidraw_mcp/config.py MonitoringConfig.__post_init__ 7 3 0 57%
excalidraw_mcp/config.py LoggingConfig.__post_init__ 1 0 0 100%
excalidraw_mcp/config.py Config.__init__ 9 0 0 100%
excalidraw_mcp/config.py Config._load_from_pyproject 14 1 0 93%
excalidraw_mcp/config.py Config._load_security_config_from_environment 5 0 0 100%
excalidraw_mcp/config.py Config._load_server_config_from_environment 23 9 0 61%
excalidraw_mcp/config.py Config._load_performance_config_from_environment 5 0 0 100%
excalidraw_mcp/config.py Config._load_logging_config_from_environment 5 0 0 100%
excalidraw_mcp/config.py Config._load_monitoring_config_from_environment 17 6 0 65%
excalidraw_mcp/config.py Config._load_from_environment 5 0 0 100%
excalidraw_mcp/config.py Config._validate_security_config 4 0 0 100%
excalidraw_mcp/config.py Config._validate_server_config 12 5 0 58%
excalidraw_mcp/config.py Config._validate_performance_config 4 0 0 100%
excalidraw_mcp/config.py Config._validate_monitoring_config 6 3 0 50%
excalidraw_mcp/config.py Config._validate 7 0 0 100%
excalidraw_mcp/config.py Config.is_development 1 0 0 100%
excalidraw_mcp/config.py Config.is_production 1 0 0 100%
excalidraw_mcp/config.py (no function) 123 2 0 98%
excalidraw_mcp/element_factory.py ElementFactory.__init__ 1 0 0 100%
excalidraw_mcp/element_factory.py ElementFactory.create_element 5 0 0 100%
excalidraw_mcp/element_factory.py ElementFactory.prepare_update_data 11 0 0 100%
excalidraw_mcp/element_factory.py ElementFactory._add_optional_properties 10 0 0 100%
excalidraw_mcp/element_factory.py ElementFactory._add_visual_properties 5 0 0 100%
excalidraw_mcp/element_factory.py ElementFactory._add_shape_properties 4 0 0 100%
excalidraw_mcp/element_factory.py ElementFactory._add_line_properties 5 0 0 100%
excalidraw_mcp/element_factory.py ElementFactory._get_optional_float 8 0 0 100%
excalidraw_mcp/element_factory.py ElementFactory.validate_element_data 11 0 0 100%
excalidraw_mcp/element_factory.py ElementFactory._validate_element_type 3 0 0 100%
excalidraw_mcp/element_factory.py ElementFactory._validate_coordinates 6 0 0 100%
excalidraw_mcp/element_factory.py ElementFactory._validate_dimensions 8 0 0 100%
excalidraw_mcp/element_factory.py ElementFactory._is_valid_color 9 0 0 100%
excalidraw_mcp/element_factory.py ElementFactory._validate_colors 5 0 0 100%
excalidraw_mcp/element_factory.py ElementFactory._validate_stroke_width 7 0 0 100%
excalidraw_mcp/element_factory.py ElementFactory._validate_opacity 7 0 0 100%
excalidraw_mcp/element_factory.py ElementFactory._validate_roughness 7 2 0 71%
excalidraw_mcp/element_factory.py ElementFactory._validate_font_size 7 1 0 86%
excalidraw_mcp/element_factory.py ElementFactory._validate_numeric_ranges 4 0 0 100%
excalidraw_mcp/element_factory.py (no function) 25 0 0 100%
excalidraw_mcp/http_client.py CanvasHTTPClient.__init__ 4 0 0 100%
excalidraw_mcp/http_client.py CanvasHTTPClient.__aenter__ 2 0 0 100%
excalidraw_mcp/http_client.py CanvasHTTPClient.__aexit__ 1 0 0 100%
excalidraw_mcp/http_client.py CanvasHTTPClient._ensure_client 3 0 0 100%
excalidraw_mcp/http_client.py CanvasHTTPClient.close 3 0 0 100%
excalidraw_mcp/http_client.py CanvasHTTPClient._perform_health_check_request 11 1 0 91%
excalidraw_mcp/http_client.py CanvasHTTPClient.check_health 22 1 0 95%
excalidraw_mcp/http_client.py CanvasHTTPClient.check_health._health_check_request 1 0 0 100%
excalidraw_mcp/http_client.py CanvasHTTPClient.post_json 10 0 0 100%
excalidraw_mcp/http_client.py CanvasHTTPClient.post_json._post_request 27 1 0 96%
excalidraw_mcp/http_client.py CanvasHTTPClient.put_json 25 1 0 96%
excalidraw_mcp/http_client.py CanvasHTTPClient.delete 21 1 0 95%
excalidraw_mcp/http_client.py CanvasHTTPClient.get_json 23 1 0 96%
excalidraw_mcp/http_client.py CanvasHTTPClient.health_failure_count 1 0 0 100%
excalidraw_mcp/http_client.py CanvasHTTPClient._generate_correlation_id 1 0 0 100%
excalidraw_mcp/http_client.py CanvasHTTPClient._get_tracing_headers 3 1 0 67%
excalidraw_mcp/http_client.py CanvasHTTPClient._update_request_metrics 7 0 0 100%
excalidraw_mcp/http_client.py CanvasHTTPClient.get_request_metrics 2 2 0 0%
excalidraw_mcp/http_client.py CanvasHTTPClient.reset_request_metrics 1 1 0 0%
excalidraw_mcp/http_client.py CanvasHTTPClient.is_healthy 1 0 0 100%
excalidraw_mcp/http_client.py (no function) 37 0 0 100%
excalidraw_mcp/mcp_tools.py MCPToolsManager.__init__ 3 0 0 100%
excalidraw_mcp/mcp_tools.py MCPToolsManager._register_tools 12 0 0 100%
excalidraw_mcp/mcp_tools.py MCPToolsManager._ensure_canvas_available 3 0 0 100%
excalidraw_mcp/mcp_tools.py MCPToolsManager._sync_to_canvas 16 0 0 100%
excalidraw_mcp/mcp_tools.py MCPToolsManager.create_element 9 0 0 100%
excalidraw_mcp/mcp_tools.py MCPToolsManager.update_element 13 1 0 92%
excalidraw_mcp/mcp_tools.py MCPToolsManager.delete_element 8 0 0 100%
excalidraw_mcp/mcp_tools.py MCPToolsManager.query_elements 9 0 0 100%
excalidraw_mcp/mcp_tools.py MCPToolsManager.batch_create_elements 20 0 0 100%
excalidraw_mcp/mcp_tools.py MCPToolsManager.group_elements 11 0 0 100%
excalidraw_mcp/mcp_tools.py MCPToolsManager.ungroup_elements 8 0 0 100%
excalidraw_mcp/mcp_tools.py MCPToolsManager.align_elements 14 0 0 100%
excalidraw_mcp/mcp_tools.py MCPToolsManager.distribute_elements 14 0 0 100%
excalidraw_mcp/mcp_tools.py MCPToolsManager.lock_elements 9 0 0 100%
excalidraw_mcp/mcp_tools.py MCPToolsManager.unlock_elements 9 0 0 100%
excalidraw_mcp/mcp_tools.py MCPToolsManager.get_resource 11 0 0 100%
excalidraw_mcp/mcp_tools.py (no function) 25 0 0 100%
excalidraw_mcp/monitoring/__init__.py (no function) 6 0 0 100%
excalidraw_mcp/monitoring/alerts.py AlertManager.__init__ 6 0 0 100%
excalidraw_mcp/monitoring/alerts.py AlertManager._initialize_alert_rules 6 0 0 100%
excalidraw_mcp/monitoring/alerts.py AlertManager.check_conditions 12 5 0 58%
excalidraw_mcp/monitoring/alerts.py AlertManager._eval_expression 1 0 0 100%
excalidraw_mcp/monitoring/alerts.py AlertManager._eval_compare 9 8 0 11%
excalidraw_mcp/monitoring/alerts.py AlertManager._eval_bool_op 7 7 0 0%
excalidraw_mcp/monitoring/alerts.py AlertManager._eval_unary_op 3 3 0 0%
excalidraw_mcp/monitoring/alerts.py AlertManager._eval_constant 1 1 0 0%
excalidraw_mcp/monitoring/alerts.py AlertManager._eval_name 3 3 0 0%
excalidraw_mcp/monitoring/alerts.py AlertManager._eval_node 19 7 0 63%
excalidraw_mcp/monitoring/alerts.py AlertManager._safe_eval_condition 8 1 0 88%
excalidraw_mcp/monitoring/alerts.py AlertManager._trigger_alert 12 12 0 0%
excalidraw_mcp/monitoring/alerts.py AlertManager._resolve_alert 7 5 0 29%
excalidraw_mcp/monitoring/alerts.py AlertManager._should_throttle_alert 7 7 0 0%
excalidraw_mcp/monitoring/alerts.py AlertManager._format_alert_message 6 6 0 0%
excalidraw_mcp/monitoring/alerts.py AlertManager._send_alert 8 8 0 0%
excalidraw_mcp/monitoring/alerts.py AlertManager._send_log_alert 2 2 0 0%
excalidraw_mcp/monitoring/alerts.py AlertManager._send_webhook_alert 6 6 0 0%
excalidraw_mcp/monitoring/alerts.py AlertManager.force_alert 5 5 0 0%
excalidraw_mcp/monitoring/alerts.py AlertManager.get_active_alerts 1 1 0 0%
excalidraw_mcp/monitoring/alerts.py AlertManager.get_alert_history 4 0 0 100%
excalidraw_mcp/monitoring/alerts.py AlertManager.get_alert_statistics 1 0 0 100%
excalidraw_mcp/monitoring/alerts.py AlertManager.enable_rule 6 6 0 0%
excalidraw_mcp/monitoring/alerts.py AlertManager.disable_rule 6 6 0 0%
excalidraw_mcp/monitoring/alerts.py AlertManager.clear_alert_history 3 3 0 0%
excalidraw_mcp/monitoring/alerts.py AlertManager.get_alert_rules 1 1 0 0%
excalidraw_mcp/monitoring/alerts.py (no function) 68 0 0 100%
excalidraw_mcp/monitoring/circuit_breaker.py CircuitBreaker.__init__ 7 0 0 100%
excalidraw_mcp/monitoring/circuit_breaker.py CircuitBreaker.call 17 0 0 100%
excalidraw_mcp/monitoring/circuit_breaker.py CircuitBreaker._should_allow_call 10 1 0 90%
excalidraw_mcp/monitoring/circuit_breaker.py CircuitBreaker._should_attempt_recovery 3 0 0 100%
excalidraw_mcp/monitoring/circuit_breaker.py CircuitBreaker._on_success 7 0 0 100%
excalidraw_mcp/monitoring/circuit_breaker.py CircuitBreaker._on_failure 9 0 0 100%
excalidraw_mcp/monitoring/circuit_breaker.py CircuitBreaker._transition_to_open 5 0 0 100%
excalidraw_mcp/monitoring/circuit_breaker.py CircuitBreaker._transition_to_half_open 5 0 0 100%
excalidraw_mcp/monitoring/circuit_breaker.py CircuitBreaker._transition_to_closed 6 0 0 100%
excalidraw_mcp/monitoring/circuit_breaker.py CircuitBreaker.force_open 3 0 0 100%
excalidraw_mcp/monitoring/circuit_breaker.py CircuitBreaker.force_close 3 0 0 100%
excalidraw_mcp/monitoring/circuit_breaker.py CircuitBreaker.reset 5 0 0 100%
excalidraw_mcp/monitoring/circuit_breaker.py CircuitBreaker.state 1 0 0 100%
excalidraw_mcp/monitoring/circuit_breaker.py CircuitBreaker.is_open 1 0 0 100%
excalidraw_mcp/monitoring/circuit_breaker.py CircuitBreaker.is_closed 1 0 0 100%
excalidraw_mcp/monitoring/circuit_breaker.py CircuitBreaker.is_half_open 1 1 0 0%
excalidraw_mcp/monitoring/circuit_breaker.py CircuitBreaker.get_stats 2 0 0 100%
excalidraw_mcp/monitoring/circuit_breaker.py CircuitBreaker.is_healthy 1 0 0 100%
excalidraw_mcp/monitoring/circuit_breaker.py CircuitBreaker.get_time_until_recovery 5 1 0 80%
excalidraw_mcp/monitoring/circuit_breaker.py (no function) 48 0 0 100%
excalidraw_mcp/monitoring/health_checker.py HealthChecker.__init__ 5 0 0 100%
excalidraw_mcp/monitoring/health_checker.py HealthChecker.check_health 15 4 0 73%
excalidraw_mcp/monitoring/health_checker.py HealthChecker._check_primary_health 8 0 0 100%
excalidraw_mcp/monitoring/health_checker.py HealthChecker._check_api_health 12 2 0 83%
excalidraw_mcp/monitoring/health_checker.py HealthChecker._combine_health_results 5 0 0 100%
excalidraw_mcp/monitoring/health_checker.py HealthChecker._check_resource_usage 19 5 0 74%
excalidraw_mcp/monitoring/health_checker.py HealthChecker._update_health_state 7 0 0 100%
excalidraw_mcp/monitoring/health_checker.py HealthChecker.is_failing 1 0 0 100%
excalidraw_mcp/monitoring/health_checker.py HealthChecker.get_failure_count 1 0 0 100%
excalidraw_mcp/monitoring/health_checker.py HealthChecker.get_average_response_time 3 0 0 100%
excalidraw_mcp/monitoring/health_checker.py HealthChecker.get_last_healthy_time 1 0 0 100%
excalidraw_mcp/monitoring/health_checker.py HealthChecker.reset_failure_count 1 0 0 100%
excalidraw_mcp/monitoring/health_checker.py HealthChecker.get_health_summary 1 0 0 100%
excalidraw_mcp/monitoring/health_checker.py (no function) 36 0 0 100%
excalidraw_mcp/monitoring/metrics.py Counter.inc 1 0 0 100%
excalidraw_mcp/monitoring/metrics.py Counter.reset 1 1 0 0%
excalidraw_mcp/monitoring/metrics.py Gauge.set 1 0 0 100%
excalidraw_mcp/monitoring/metrics.py Gauge.inc 1 1 0 0%
excalidraw_mcp/monitoring/metrics.py Gauge.dec 1 1 0 0%
excalidraw_mcp/monitoring/metrics.py Histogram.__post_init__ 3 0 0 100%
excalidraw_mcp/monitoring/metrics.py Histogram.observe 6 2 0 67%
excalidraw_mcp/monitoring/metrics.py Histogram.reset 4 4 0 0%
excalidraw_mcp/monitoring/metrics.py Histogram.average 1 0 0 100%
excalidraw_mcp/monitoring/metrics.py MetricsCollector.__init__ 9 0 0 100%
excalidraw_mcp/monitoring/metrics.py MetricsCollector.__init__._create_deque 1 0 0 100%
excalidraw_mcp/monitoring/metrics.py MetricsCollector._initialize_standard_metrics 18 0 0 100%
excalidraw_mcp/monitoring/metrics.py MetricsCollector.register_counter 3 0 0 100%
excalidraw_mcp/monitoring/metrics.py MetricsCollector.register_gauge 3 0 0 100%
excalidraw_mcp/monitoring/metrics.py MetricsCollector.register_histogram 3 0 0 100%
excalidraw_mcp/monitoring/metrics.py MetricsCollector.get_counter 1 1 0 0%
excalidraw_mcp/monitoring/metrics.py MetricsCollector.get_gauge 1 1 0 0%
excalidraw_mcp/monitoring/metrics.py MetricsCollector.get_histogram 1 1 0 0%
excalidraw_mcp/monitoring/metrics.py MetricsCollector.increment_counter 5 1 0 80%
excalidraw_mcp/monitoring/metrics.py MetricsCollector.set_gauge 5 1 0 80%
excalidraw_mcp/monitoring/metrics.py MetricsCollector.observe_histogram 5 1 0 80%
excalidraw_mcp/monitoring/metrics.py MetricsCollector.collect_system_metrics 19 2 0 89%
excalidraw_mcp/monitoring/metrics.py MetricsCollector.collect_canvas_metrics 9 2 0 78%
excalidraw_mcp/monitoring/metrics.py MetricsCollector.start_collection 5 1 0 80%
excalidraw_mcp/monitoring/metrics.py MetricsCollector.stop_collection 10 1 0 90%
excalidraw_mcp/monitoring/metrics.py MetricsCollector._collection_loop 15 0 0 100%
excalidraw_mcp/monitoring/metrics.py MetricsCollector.get_all_metrics 1 0 0 100%
excalidraw_mcp/monitoring/metrics.py MetricsCollector.get_prometheus_format 19 19 0 0%
excalidraw_mcp/monitoring/metrics.py MetricsCollector.reset_all_metrics 8 8 0 0%
excalidraw_mcp/monitoring/metrics.py MetricsCollector.get_metric_history 4 4 0 0%
excalidraw_mcp/monitoring/metrics.py (no function) 66 0 0 100%
excalidraw_mcp/monitoring/supervisor.py MonitoringSupervisor.__init__ 10 0 0 100%
excalidraw_mcp/monitoring/supervisor.py MonitoringSupervisor.start 12 2 0 83%
excalidraw_mcp/monitoring/supervisor.py MonitoringSupervisor.stop 12 1 0 92%
excalidraw_mcp/monitoring/supervisor.py MonitoringSupervisor._monitoring_loop 12 3 0 75%
excalidraw_mcp/monitoring/supervisor.py MonitoringSupervisor._monitoring_loop._monitoring_cycle 7 0 0 100%
excalidraw_mcp/monitoring/supervisor.py MonitoringSupervisor._monitoring_loop._on_retry 1 0 0 100%
excalidraw_mcp/monitoring/supervisor.py MonitoringSupervisor._perform_monitored_health_check 18 0 0 100%
excalidraw_mcp/monitoring/supervisor.py MonitoringSupervisor._handle_health_status 9 2 0 78%
excalidraw_mcp/monitoring/supervisor.py MonitoringSupervisor._handle_health_failure 4 0 0 100%
excalidraw_mcp/monitoring/supervisor.py MonitoringSupervisor._attempt_restart 27 6 0 78%
excalidraw_mcp/monitoring/supervisor.py MonitoringSupervisor._attempt_restart._perform_restart 4 0 0 100%
excalidraw_mcp/monitoring/supervisor.py MonitoringSupervisor._collect_monitoring_metrics 19 4 0 79%
excalidraw_mcp/monitoring/supervisor.py MonitoringSupervisor.add_health_change_callback 1 0 0 100%
excalidraw_mcp/monitoring/supervisor.py MonitoringSupervisor.add_restart_callback 1 0 0 100%
excalidraw_mcp/monitoring/supervisor.py MonitoringSupervisor.get_monitoring_status 1 0 0 100%
excalidraw_mcp/monitoring/supervisor.py MonitoringSupervisor.force_health_check 2 0 0 100%
excalidraw_mcp/monitoring/supervisor.py MonitoringSupervisor.trigger_restart 4 0 0 100%
excalidraw_mcp/monitoring/supervisor.py MonitoringSupervisor.reset_circuit_breaker 2 1 0 50%
excalidraw_mcp/monitoring/supervisor.py MonitoringSupervisor.get_metrics_summary 1 0 0 100%
excalidraw_mcp/monitoring/supervisor.py MonitoringSupervisor.get_recent_alerts 1 0 0 100%
excalidraw_mcp/monitoring/supervisor.py MonitoringSupervisor.is_running 1 0 0 100%
excalidraw_mcp/monitoring/supervisor.py (no function) 32 0 0 100%
excalidraw_mcp/process_manager.py CanvasProcessManager.__init__ 12 0 0 100%
excalidraw_mcp/process_manager.py CanvasProcessManager._check_process_health 1 0 0 100%
excalidraw_mcp/process_manager.py CanvasProcessManager._handle_disabled_auto_start 2 0 0 100%
excalidraw_mcp/process_manager.py CanvasProcessManager._attempt_process_start 4 0 0 100%
excalidraw_mcp/process_manager.py CanvasProcessManager._ensure_process_healthy 7 0 0 100%
excalidraw_mcp/process_manager.py CanvasProcessManager.ensure_running 2 0 0 100%
excalidraw_mcp/process_manager.py CanvasProcessManager._is_process_healthy 3 0 0 100%
excalidraw_mcp/process_manager.py CanvasProcessManager._is_process_running 16 0 0 100%
excalidraw_mcp/process_manager.py CanvasProcessManager._start_process 15 0 0 100%
excalidraw_mcp/process_manager.py CanvasProcessManager._check_health_with_process_check 5 1 0 80%
excalidraw_mcp/process_manager.py CanvasProcessManager._wait_for_health 10 0 0 100%
excalidraw_mcp/process_manager.py CanvasProcessManager._send_termination_signal 6 1 0 83%
excalidraw_mcp/process_manager.py CanvasProcessManager._terminate_existing_process 12 1 0 92%
excalidraw_mcp/process_manager.py CanvasProcessManager._terminate_current_process 1 1 0 0%
excalidraw_mcp/process_manager.py CanvasProcessManager._reset_process_info 9 0 0 100%
excalidraw_mcp/process_manager.py CanvasProcessManager._get_project_root 2 0 0 100%
excalidraw_mcp/process_manager.py CanvasProcessManager._signal_handler 2 0 0 100%
excalidraw_mcp/process_manager.py CanvasProcessManager.cleanup 2 0 0 100%
excalidraw_mcp/process_manager.py CanvasProcessManager.restart 8 0 0 100%
excalidraw_mcp/process_manager.py CanvasProcessManager.stop 2 0 0 100%
excalidraw_mcp/process_manager.py CanvasProcessManager.get_status 3 0 0 100%
excalidraw_mcp/process_manager.py CanvasProcessManager.add_start_callback 1 1 0 0%
excalidraw_mcp/process_manager.py CanvasProcessManager.add_stop_callback 1 1 0 0%
excalidraw_mcp/process_manager.py CanvasProcessManager.add_restart_callback 1 1 0 0%
excalidraw_mcp/process_manager.py CanvasProcessManager.add_health_change_callback 1 1 0 0%
excalidraw_mcp/process_manager.py CanvasProcessManager._trigger_callbacks 7 6 0 14%
excalidraw_mcp/process_manager.py CanvasProcessManager.get_restart_count 1 1 0 0%
excalidraw_mcp/process_manager.py CanvasProcessManager.get_uptime 3 3 0 0%
excalidraw_mcp/process_manager.py (no function) 45 0 0 100%
excalidraw_mcp/retry_utils.py RetryConfig.__init__ 6 0 0 100%
excalidraw_mcp/retry_utils.py calculate_delay 7 0 0 100%
excalidraw_mcp/retry_utils.py retry_async 24 6 0 75%
excalidraw_mcp/retry_utils.py retry_sync 24 6 0 75%
excalidraw_mcp/retry_utils.py retry_decorator 3 0 0 100%
excalidraw_mcp/retry_utils.py retry_decorator.decorator 6 0 0 100%
excalidraw_mcp/retry_utils.py retry_decorator.decorator.wrapper 2 0 0 100%
excalidraw_mcp/retry_utils.py retry_decorator.decorator.wrapper.sync_func 1 0 0 100%
excalidraw_mcp/retry_utils.py retry_decorator.decorator.async_wrapper 2 0 0 100%
excalidraw_mcp/retry_utils.py retry_decorator.decorator.async_wrapper.async_func 5 1 0 80%
excalidraw_mcp/retry_utils.py (no function) 16 0 0 100%
excalidraw_mcp/server.py get_process_manager 5 5 0 0%
excalidraw_mcp/server.py get_monitoring_supervisor 4 4 0 0%
excalidraw_mcp/server.py cleanup_monitoring 4 4 0 0%
excalidraw_mcp/server.py startup_initialization 6 6 0 0%
excalidraw_mcp/server.py main 11 0 0 100%
excalidraw_mcp/server.py main.shutdown 6 6 0 0%
excalidraw_mcp/server.py (no function) 20 1 0 95%
Total   2258 509 0 77%

No items found using the specified filter.