ó
    ±"³j  ã                  óä   • % S SK Jr  S SKrS SKJrJrJr  S SKJrJ	r	  S SK
Jr  SSKJrJr  SSKJr  SS	KJr  S
SKJrJr  \\\   /\\   S-  \\\   S-     -  4   rS\S'     " S S\\   5      rg)é    )ÚannotationsN)Ú	AwaitableÚCallableÚSequence)ÚAnyÚ	TypeAlias)ÚSelfé   )Ú
AgentDepsTÚ
RunContext)ÚInstructionPart)ÚToolDefinitioné   )ÚAbstractToolsetÚToolsetToolr   ÚToolsetFuncc                  ó  ^ • \ rS rSrSrSSS.     SS jjr\SS j5       rSS jrSS	 jr	SS
 jr
SS jrSS jrSS jrSS jrSS jr    SS jr      S S jr          S!S jrS"U 4S jjr    S#U 4S jjrSrU =r$ )$ÚDynamicToolseté   zXA toolset that dynamically builds a toolset using a function that takes the run context.TN©Úper_run_stepÚidc               ó6   • Xl         X l        X0l        SU l        g)a-  Build a new dynamic toolset.

Args:
    toolset_func: A function that takes the run context and returns a toolset or None.
    per_run_step: Whether to re-evaluate the toolset for each run step.
    id: An optional unique ID for the toolset. Required for durable execution environments like Temporal.
N)Útoolset_funcr   Ú_idÚ_toolset)Úselfr   r   r   s       ÚZ/home/mande/repo/quber/.venv/lib/python3.13/site-packages/pydantic_ai/toolsets/_dynamic.pyÚ__init__ÚDynamicToolset.__init__   s   € ð )ÔØ(ÔØŒØ<@ˆ�ó    c                ó   • U R                   $ ©N)r   ©r   s    r   r   ÚDynamicToolset.id+   s   € à�x‰xˆr!   c                óà   • [        U[        5      =(       aX    U R                  UR                  L =(       a9    U R                  UR                  :H  =(       a    U R                  UR                  :H  $ r#   )Ú
isinstancer   r   r   r   )r   Úothers     r   Ú__eq__ÚDynamicToolset.__eq__/   sZ   € ä�uœnÓ-÷ &Ø×!Ñ! U×%7Ñ%7Ð7÷&à×!Ñ! U×%7Ñ%7Ñ7÷&ð —‘˜EŸI™IÑ%ð		
r!   c              ƒ  ó~   #   • U R                  U5      n[        R                  " U5      (       a
  UI Sh  v•N nU$  N7f)z&Evaluate the toolset factory function.N)r   ÚinspectÚisawaitable)r   ÚctxÚtoolsets      r   Ú_evaluate_factoryÚ DynamicToolset._evaluate_factory7   s7   é € à×#Ñ# CÓ(ˆÜ×Ò˜w×'Ñ'Ø#—mˆGØˆñ $ùs   ‚2=´;µ=c              ƒ  óÂ   #   • [        U R                  U R                  U R                  S9nU R                  (       d  UR	                  U5      I Sh  v•N Ul        U$  N7f)z¼Create a per-run copy with the factory evaluated.

For `per_run_step=False`, evaluates the factory now (only chance).
For `per_run_step=True`, defers factory evaluation to `for_run_step`.
r   N)r   r   r   r   r0   r   )r   r.   Únews      r   Úfor_runÚDynamicToolset.for_run>   sT   é € ô Ø×ÑØ×*Ñ*Ø�x‰xñ
ˆð
 × × Ø!$×!6Ñ!6°sÓ!;×;ˆCŒLØˆ
ñ <ùs   ‚AAÁAÁAc              ƒ  ó&  #   • U R                   (       d  U $ U R                  U5      I Sh  v•N nX R                  L a  U $ U R                  nSU l        Ub  UR                  SSS5      I Sh  v•N   U R	                  U5      I Sh  v•N   U $  N` N! N
7f)z™If per_run_step, re-evaluate factory and manage transitions in-place.

Handles the inner toolset lifecycle (exiting old, entering new) and returns self.
N)r   r0   r   Ú	__aexit__Ú_enter_inner_toolset)r   r.   Únew_toolsetÚold_toolsets       r   Úfor_run_stepÚDynamicToolset.for_run_stepM   s�   é € ð
 × × ØˆKà ×2Ñ2°3Ó7×7ˆØŸ-™-Ò'ØˆKð
 —m‘mˆØˆŒØÑ"Ø×'Ñ'¨¨d°DÓ9×9Ð9Ø×'Ñ'¨Ó4×4Ð4Øˆñ 8ñ :Ù4ùs4   ‚(BªB«A BÁ+BÁ,BÂBÂBÂBÂBc              ƒ  óX   #   • U R                  U R                  5      I S h  v•N   U $  N7fr#   )r8   r   r$   s    r   Ú
__aenter__ÚDynamicToolset.__aenter__c   s'   é € Ø×'Ñ'¨¯©Ó6×6Ð6Øˆñ 	7ùs   ‚*¡(¢*c              ƒ  ób   #   • S U l         Uc  g UR                  5       I S h  v•N   Xl         g  N7fr#   )r   r>   )r   r/   s     r   r8   Ú#DynamicToolset._enter_inner_toolsetg   s2   é € ð ˆŒØ‰?ØØ× Ñ Ó"×"Ð"Ø�ñ 	#ùs   ‚/¡-¢/c              ‡  óš   #   •  S nU R                   b!  U R                   R                  " U6 I S h  v•N nUS U l         $  N! S U l         f = f7fr#   )r   r7   )r   ÚargsÚresults      r   r7   ÚDynamicToolset.__aexit__q   sI   é € ð	!ØˆFØ�}‰}Ñ(Ø#Ÿ}™}×6Ò6¸Ð=×=�Øà ˆD�Mñ >øð !ˆD�Müs%   ‚A„+? ¯=°? µA½? ¿	AÁAc              ƒ  ór   #   • U R                   c  0 $ U R                   R                  U5      I S h  v•N $  N7fr#   )r   Ú	get_tools©r   r.   s     r   rG   ÚDynamicToolset.get_toolsz   s/   é € Ø�=‰=Ñ ØˆIØ—]‘]×,Ñ,¨SÓ1×1Ð1Ñ1ùs   ‚.7°5±7c              ƒ  óp   #   • U R                   c  g U R                   R                  U5      I S h  v•N $  N7fr#   )r   Úget_instructionsrH   s     r   rK   ÚDynamicToolset.get_instructions   s/   é € ð �=‰=Ñ ØØ—]‘]×3Ñ3°CÓ8×8Ð8Ñ8ùs   ‚-6¯4°6c              ƒ  ó˜   #   • U R                   c  [        UR                  5      eU R                   R                  X5      I S h  v•N $  N7fr#   )r   ÚKeyErrorÚnameÚget_tool_for_tool_def)r   Útool_defr.   s      r   rP   Ú$DynamicToolset.get_tool_for_tool_def†   s;   é € ð �=‰=Ñ Ü˜8Ÿ=™=Ó)Ð)Ø—]‘]×8Ñ8¸ÓG×GÐGÑGùs   ‚AA
ÁAÁA
c              ƒ  ót   #   • U R                   c   eU R                   R                  XX45      I S h  v•N $  N7fr#   )r   Ú	call_tool)r   rO   Ú	tool_argsr.   Útools        r   rT   ÚDynamicToolset.call_tool�   s4   é € ð �}‰}Ñ(Ð(Ð(Ø—]‘]×,Ñ,¨T¸cÓH×HÐHÑHùs   ‚/8±6²8c                óv   >• U R                   c  [        TU ]	  U5        g U R                   R                  U5        g r#   )r   ÚsuperÚapply)r   ÚvisitorÚ	__class__s     €r   rZ   ÚDynamicToolset.apply“   s+   ø€ Ø�=‰=Ñ Ü‰G‰M˜'Õ"à�M‰M×Ñ Õ(r!   c                óÒ   >• U R                   c  [        TU ]	  U5      $ [        U R                  U R
                  U R                  S9nU R                   R                  U5      Ul         U$ )Nr   )r   rY   Úvisit_and_replacer   r   r   r   )r   r[   r3   r\   s      €r   r_   Ú DynamicToolset.visit_and_replace™   s_   ø€ ð �=‰=Ñ Ü‘7Ñ,¨WÓ5Ð5ä Ø×!Ñ!Ø!×.Ñ.Ø—8‘8ñˆCð
  Ÿ=™=×:Ñ:¸7ÓCˆCŒLØˆJr!   )r   r   r   r   )r   zToolsetFunc[AgentDepsT]r   Úboolr   ú
str | None)Úreturnrb   )r(   Úobjectrc   ra   )r.   úRunContext[AgentDepsT]rc   ú"AbstractToolset[AgentDepsT] | None)r.   re   rc   úAbstractToolset[AgentDepsT])rc   r	   )r/   rf   rc   ÚNone)rC   r   rc   zbool | None)r.   re   rc   z"dict[str, ToolsetTool[AgentDepsT]])r.   re   rc   z>str | InstructionPart | Sequence[str | InstructionPart] | None)rQ   r   r.   re   rc   úToolsetTool[AgentDepsT])
rO   ÚstrrU   zdict[str, Any]r.   re   rV   ri   rc   r   )r[   z-Callable[[AbstractToolset[AgentDepsT]], None]rc   rh   )r[   zDCallable[[AbstractToolset[AgentDepsT]], AbstractToolset[AgentDepsT]]rc   rg   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   Úpropertyr   r)   r0   r4   r;   r>   r8   r7   rG   rK   rP   rT   rZ   r_   Ú__static_attributes__Ú__classcell__)r\   s   @r   r   r      s÷   ø† Ùbð "ØñAà-ðAð ð	Að
 õAð& óó ðô
ôôôô,ô ô!ô2ð
9Ø)ð9à	Gô9ðHØ&ðHØ-CðHà	 ôHðIØðIØ$2ðIØ9OðIØWnðIà	ôI÷)ðØ[ðà	$÷õ r!   r   )Ú
__future__r   r,   Úcollections.abcr   r   r   Útypingr   r   Útyping_extensionsr	   Ú_run_contextr   r   Úmessagesr   Útoolsr   Úabstractr   r   r   Ú__annotations__r   © r!   r   Ú<module>r}      s€   ðÞ "ã ß 9Ñ 9ß !å "ç 1Ý &Ý "ß 2à!Ø�
ÑÐØ�JÑ $Ñ&¨°?À:Ñ3NÐQUÑ3UÑ)VÑVðXñ€ˆYó ð MôP�_ ZÑ0õ Pr!   