@@ -344,6 +344,7 @@ def __init__(
344
344
345
345
self ._event_stream_handler = event_stream_handler
346
346
347
+ self ._override_name : ContextVar [_utils .Option [str ]] = ContextVar ('_override_name' , default = None )
347
348
self ._override_deps : ContextVar [_utils .Option [AgentDepsT ]] = ContextVar ('_override_deps' , default = None )
348
349
self ._override_model : ContextVar [_utils .Option [models .Model ]] = ContextVar ('_override_model' , default = None )
349
350
self ._override_toolsets : ContextVar [_utils .Option [Sequence [AbstractToolset [AgentDepsT ]]]] = ContextVar (
@@ -384,7 +385,8 @@ def name(self) -> str | None:
384
385
385
386
If `None`, we try to infer the agent name from the call frame when the agent is first run.
386
387
"""
387
- return self ._name
388
+ name_ = self ._override_name .get ()
389
+ return name_ .value if name_ else self ._name
388
390
389
391
@name .setter
390
392
def name (self , value : str | None ) -> None :
@@ -712,24 +714,31 @@ def _run_span_end_attributes(
712
714
def override (
713
715
self ,
714
716
* ,
717
+ name : str | _utils .Unset = _utils .UNSET ,
715
718
deps : AgentDepsT | _utils .Unset = _utils .UNSET ,
716
719
model : models .Model | models .KnownModelName | str | _utils .Unset = _utils .UNSET ,
717
720
toolsets : Sequence [AbstractToolset [AgentDepsT ]] | _utils .Unset = _utils .UNSET ,
718
721
tools : Sequence [Tool [AgentDepsT ] | ToolFuncEither [AgentDepsT , ...]] | _utils .Unset = _utils .UNSET ,
719
722
instructions : Instructions [AgentDepsT ] | _utils .Unset = _utils .UNSET ,
720
723
) -> Iterator [None ]:
721
- """Context manager to temporarily override agent dependencies, model, toolsets, tools, or instructions.
724
+ """Context manager to temporarily override agent name, dependencies, model, toolsets, tools, or instructions.
722
725
723
726
This is particularly useful when testing.
724
727
You can find an example of this [here](../testing.md#overriding-model-via-pytest-fixtures).
725
728
726
729
Args:
730
+ name: The name to use instead of the name passed to the agent constructor and agent run.
727
731
deps: The dependencies to use instead of the dependencies passed to the agent run.
728
732
model: The model to use instead of the model passed to the agent run.
729
733
toolsets: The toolsets to use instead of the toolsets passed to the agent constructor and agent run.
730
734
tools: The tools to use instead of the tools registered with the agent.
731
735
instructions: The instructions to use instead of the instructions registered with the agent.
732
736
"""
737
+ if _utils .is_set (name ):
738
+ name_token = self ._override_name .set (_utils .Some (name ))
739
+ else :
740
+ name_token = None
741
+
733
742
if _utils .is_set (deps ):
734
743
deps_token = self ._override_deps .set (_utils .Some (deps ))
735
744
else :
@@ -759,6 +768,8 @@ def override(
759
768
try :
760
769
yield
761
770
finally :
771
+ if name_token is not None :
772
+ self ._override_name .reset (name_token )
762
773
if deps_token is not None :
763
774
self ._override_deps .reset (deps_token )
764
775
if model_token is not None :
0 commit comments