# utils/metrics.py from prometheus_client import Counter, CollectorRegistry from typing import Optional import streamlit as st # Single global registry _registry: Optional[CollectorRegistry] = None _login_counter: Optional[Counter] = None def get_metrics_registry() -> CollectorRegistry: """Get or create the metrics registry.""" global _registry if _registry is None: _registry = CollectorRegistry() return _registry def get_login_attempts_counter() -> Counter: """Get or create the login attempts counter.""" global _login_counter if _login_counter is None: _login_counter = Counter( 'login_attempts_total', 'Total login attempts', registry=get_metrics_registry() ) return _login_counter def clear_metrics(): """Clear all metrics and registry.""" global _registry, _login_counter if _registry is not None: _registry = None if _login_counter is not None: _login_counter = None