ó
    ±"³j¤  ã                  óŒ   • S r SSKJr  SSKJrJrJr  SSKJrJ	r	  SSK
JrJr  SSKJr  SSKJr  S/r " S	 S\\   5      rSS
 jrg)z1Template string support for dynamic instructions.é    )Úannotations)ÚAnyÚGenericÚcast)ÚGetCoreSchemaHandlerÚTypeAdapter)Ú
CoreSchemaÚcore_schema)Ú
RunContext)Ú
AgentDepsTÚTemplateStrc                  óŠ   • \ rS rSrSrSrSSS.       SS jjrSSS jjrSS jr\	      SS	 j5       r
SS
 jrSS jrSrg)r   é   ab  A Handlebars template string that renders against `RunContext.deps`.

When used in type hints, strings containing `{{` are automatically
compiled as Handlebars templates during Pydantic validation.

Uses [pydantic-handlebars](https://github.com/pydantic/pydantic-handlebars)
for template compilation, schema validation, and rendering.

When used with an `Agent`, `deps_type` is inferred automatically from
the agent's validation context, so you only need to pass it when constructing
a `TemplateStr` outside of an agent (e.g. for standalone rendering).

Example:
    ```python {test="skip"}
    from dataclasses import dataclass

    from pydantic_ai import Agent, TemplateStr


    @dataclass
    class MyDeps:
        name: str

    agent = Agent(
        'openai:gpt-5',
        deps_type=MyDeps,
        instructions=TemplateStr('Hello {{name}}'),
    )
    ```
)Ú_sourceÚ
_deps_typeÚ_deps_schemaÚ_compiled_typedÚ_compiled_untypedN©Ú	deps_typeÚdeps_schemac               óÞ   • Xl         X l        X0l        [        5       nUb  UR	                  X5      U l        S U l        g Ub  UR                  XSS9  S U l        UR	                  U5      U l        g )NT)Úraise_on_error)r   r   r   Ú_import_pydantic_handlebarsÚcompiler   r   Úcheck_template_compatibility)ÚselfÚsourcer   r   Úhbss        ÚQ/home/mande/repo/quber/.venv/lib/python3.13/site-packages/pydantic_ai/template.pyÚ__init__ÚTemplateStr.__init__2   sn   € ð ŒØ#ŒØ'Ôä)Ó+ˆàÑ Ø#&§;¡;¨vÓ#AˆDÔ Ø%)ˆDÕ"àÑ&Ø×0Ñ0°ÐUYÐ0ÑZØ#'ˆDÔ Ø%(§[¡[°Ó%8ˆDÕ"ó    c                óR  • U R                   b  U R                   R                  U5      $ U R                  c   eUbT  [        [	        U5      5      nUR                  USS9n[        U[        5      (       a  U R                  R                  U5      $ U R                  R                  5       $ )z2Render the template against the given deps object.Úpython)Úmode)r   Úrenderr   r   ÚtypeÚdump_pythonÚ
isinstanceÚdict)r   ÚdepsÚtaÚ	deps_datas       r    r'   ÚTemplateStr.renderH   s–   € à×ÑÑ+Ø×'Ñ'×.Ñ.¨tÓ4Ð4à×%Ñ%Ñ1Ð1Ð1ØÑÜœT $›ZÓ(ˆBØŸ™ t°(˜Ð;ˆIÜ˜)¤T×*Ñ*Ø×-Ñ-×4Ñ4°YÓ?Ð?Ø×%Ñ%×,Ñ,Ó.Ð.r#   c                ó8   • U R                  UR                  5      $ )z'Render the template against `ctx.deps`.)r'   r,   )r   Úctxs     r    Ú__call__ÚTemplateStr.__call__U   s   € à�{‰{˜3Ÿ8™8Ó$Ð$r#   c                ó^   • SS jn[         R                  " U[         R                  " S SS9S9$ )Nc                ój  • [        U [        5      (       a  [        [        [           U 5      $ [        U [        5      (       d!  [        S[        U 5      R                   35      eSU ;  a  [        S5      eUR                  =(       d    0 nUR                  S5      nUR                  S5      n[        XUS9$ )NzExpected string, got z{{z#Not a template string (no {{ found)r   r   r   )
r*   r   r   r   ÚstrÚ
ValueErrorr(   Ú__name__ÚcontextÚget)ÚvalueÚinfor9   r   r   s        r    ÚvalidateÚ:TemplateStr.__get_pydantic_core_schema__.<locals>.validate_   s—   € Ü˜%¤×-Ñ-ÜœK¬Ñ,¨eÓ4Ð4Ü˜e¤S×)Ñ)Ü Ð#8¼¸e»×9MÑ9MÐ8NÐ!OÓPÐPØ˜5Ó ä Ð!FÓGÐGà&*§l¡l×&8°bˆGØ*1¯+©+°kÓ*BˆIØ18·±¸]Ó1KˆKä˜uÀ{ÑSÐSr#   c                óH   • [        U [        5      (       a  U R                  $ U $ ©N)r*   r   r   )Úvs    r    Ú<lambda>Ú:TemplateStr.__get_pydantic_core_schema__.<locals>.<lambda>q   s   € ¤z°!´[×'AÑ'A˜!Ÿ)™)ÐHÀqÐHr#   F)Úinfo_arg)Úserialization)r;   r   r<   zcore_schema.ValidationInfoÚreturnzTemplateStr[Any])r
   Ú"with_info_plain_validator_functionÚ$plain_serializer_function_ser_schema)ÚclsÚsource_typeÚhandlerr=   s       r    Ú__get_pydantic_core_schema__Ú(TemplateStr.__get_pydantic_core_schema__Y   s4   € ô	Tô ×=Ò=ØÜ%×JÒJÙHØññ
ð 	
r#   c                ó$   • SU R                   < S3$ )NzTemplateStr(Ú)©r   ©r   s    r    Ú__repr__ÚTemplateStr.__repr__v   s   € Ø˜dŸl™lÑ-¨QÐ/Ð/r#   c                ó   • U R                   $ r@   rP   rQ   s    r    Ú__str__ÚTemplateStr.__str__y   s   € Ø�|‰|Ðr#   )r   r   r   r   r   )r   r6   r   ztype[Any] | Noner   zdict[str, Any] | NonerF   ÚNoner@   )r,   zAgentDepsT | NonerF   r6   )r1   zRunContext[AgentDepsT]rF   r6   )rJ   z	type[Any]rK   r   rF   r	   )rF   r6   )r8   Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú	__slots__r!   r'   r2   ÚclassmethodrL   rR   rU   Ú__static_attributes__© r#   r    r   r      s†   † ñð> b€Ið '+Ø-1ñ9àð9ð $ð	9ð
 +ð9ð 
õ9ö,/ô%ð ð
àð
ð &ð
ð 
ó	
ó ð
ô80÷r#   c                 óL   •  SSK n U $ ! [         a  n[        S5      UeSnAff = f)z?Lazily import pydantic-handlebars with a helpful error message.r   Nznpydantic-handlebars is required for TemplateStr support. Install it with: pip install "pydantic-ai-slim[spec]")Úpydantic_handlebarsÚImportError)ra   Úes     r    r   r   }   s8   € ð	Û"à"Ð"øÜó äðDó
ð ð	ûðús   ‚ ˆ
#’ž#N)rF   r   )r[   Ú
__future__r   Útypingr   r   r   Úpydanticr   r   Úpydantic_corer	   r
   Úpydantic_ai._run_contextr   Úpydantic_ai.toolsr   Ú__all__r   r   r_   r#   r    Ú<module>rk      s=   ðÙ 7å "ç %Ñ %ç 6ß 1å /Ý (àˆ/€ôj�'˜*Ñ%ô jõZr#   