From 82b9b98fd2393a5b8b5a265926211152b3618bb7 Mon Sep 17 00:00:00 2001 From: Greyson LaLonde Date: Thu, 19 Mar 2026 21:00:55 -0400 Subject: [PATCH] fix: raise clear ValueError when serializing callables missing __qualname__ --- lib/crewai/src/crewai/types/callback.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/lib/crewai/src/crewai/types/callback.py b/lib/crewai/src/crewai/types/callback.py index 7c3f550bb..5fb9dd906 100644 --- a/lib/crewai/src/crewai/types/callback.py +++ b/lib/crewai/src/crewai/types/callback.py @@ -127,7 +127,14 @@ def callable_to_string(fn: Callable[..., Any]) -> str: Returns: A dotted string of the form ``"module.qualname"``. """ - return f"{fn.__module__}.{fn.__qualname__}" + module = getattr(fn, "__module__", None) + qualname = getattr(fn, "__qualname__", None) + if module is None or qualname is None: + raise ValueError( + f"Cannot serialize {fn!r}: missing __module__ or __qualname__. " + "Use a module-level named function for checkpointable callbacks." + ) + return f"{module}.{qualname}" SerializableCallable = Annotated[