Add ResultReport hook
This commit is contained in:
@ -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.")
|
||||
|
||||
|
Reference in New Issue
Block a user