fix: address PR review comments — tracing override, executor init order, stdin guard, unused import

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Alex
2026-04-01 08:41:20 -07:00
parent c57536e3d0
commit bdae5c63b1
3 changed files with 22 additions and 8 deletions

View File

@@ -417,11 +417,6 @@ class CrewAIEventsBus:
... await asyncio.wrap_future(future) # In async test
... # or future.result(timeout=5.0) in sync code
"""
# Lazily initialize executor and event loop on first emit
self._ensure_executor_initialized()
# Track that we have pending events for flush optimization
self._has_pending_events = True
event.previous_event_id = get_last_event_id()
event.triggered_by_event_id = get_triggering_event_id()
event.emission_sequence = get_next_emission_sequence()
@@ -457,6 +452,15 @@ class CrewAIEventsBus:
sync_handlers = self._sync_handlers.get(event_type, frozenset())
async_handlers = self._async_handlers.get(event_type, frozenset())
# Skip executor initialization if no handlers exist for this event
if not sync_handlers and not async_handlers:
return None
# Lazily initialize executor and event loop only when handlers exist
self._ensure_executor_initialized()
# Track that we have pending events for flush optimization
self._has_pending_events = True
if has_dependencies:
return self._track_future(
asyncio.run_coroutine_threadsafe(

View File

@@ -17,7 +17,7 @@ from crewai.events.listeners.tracing.first_time_trace_handler import (
from crewai.events.listeners.tracing.trace_batch_manager import TraceBatchManager
from crewai.events.listeners.tracing.types import TraceEvent
from crewai.events.listeners.tracing.utils import (
is_tracing_enabled,
is_tracing_enabled_in_context,
safe_serialize_to_dict,
should_auto_collect_first_time_traces,
should_enable_tracing,
@@ -203,7 +203,8 @@ class TraceCollectionListener(BaseEventListener):
# Skip registration entirely if tracing is disabled and not first-time user
# This avoids overhead of 50+ handler registrations when tracing won't be used
if not should_enable_tracing() and not should_auto_collect_first_time_traces():
# Also check is_tracing_enabled_in_context() so per-run overrides (Crew(tracing=True)) still work
if not should_enable_tracing() and not is_tracing_enabled_in_context() and not should_auto_collect_first_time_traces():
self._listeners_setup = True
return

View File

@@ -489,7 +489,16 @@ def _is_interactive_terminal() -> bool:
"""
import sys
return sys.stdin.isatty()
try:
stdin = getattr(sys, 'stdin', None)
if stdin is None:
return False
isatty = getattr(stdin, 'isatty', None)
if not callable(isatty):
return False
return bool(isatty())
except Exception:
return False
def prompt_user_for_trace_viewing(timeout_seconds: int = 20) -> bool: