Add ResultReport hook

This commit is contained in:
2025-04-17 22:34:52 -04:00
parent 7b74b98168
commit ebcd4b43c6
4 changed files with 25 additions and 8 deletions

View File

@ -3,9 +3,29 @@ import time
from falyx.context import ExecutionContext
from falyx.exceptions import CircuitBreakerOpen
from falyx.themes.colors import OneColors
from falyx.utils import logger
class ResultReporter:
def __init__(self, formatter: callable = None):
"""
Optional result formatter. If not provided, uses repr(result).
"""
self.formatter = formatter or (lambda r: repr(r))
@property
def __name__(self):
return "ResultReporter"
async def report(self, context: ExecutionContext):
if context.result is not None:
result_text = self.formatter(context.result)
duration = f"{context.duration:.3f}s" if context.duration is not None else "n/a"
context.console.print(f"[{OneColors.GREEN}]✅ '{context.name}' "
f"completed:[/] {result_text} in {duration}.")
class CircuitBreaker:
def __init__(self, max_failures=3, reset_timeout=10):
self.max_failures = max_failures
@ -41,4 +61,3 @@ class CircuitBreaker:
self.failures = 0
self.open_until = None
logger.info("🔄 Circuit reset.")