
    {h                    z    d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	 d
dZ
	 	 	 	 	 	 	 	 ddZ	 d	 	 	 	 	 	 	 dd	Zy)    )annotations)Any)dedent)Mode)SandboxedEnvironmentc                f    t         t               j                  |       j                  di |      S )z(Apply Jinja2 template to the given text. )r   r   from_stringrender)textcontexts     V/var/www/html/hubwallet-dev/venv/lib/python3.12/site-packages/instructor/templating.pyapply_templater   	   s-    A&(44T:AALGLMM    c                n   |t         j                  t         j                  hv rwddlm} |j                  | j                  | j                  D cg c]@  }t        |d      r0|j                  j                  t        |j                  |            n|B c}      S t        | d      rt        | j                  t              rt        | j                        dkD  rt        | j                  d   t               svddlm} |j                  | j                  | j                  D cg c]?  }t        |d      r/|j                  j                  t        |j                  |            n|A c}      S t        | j'                  d      t               rt        | d   |      | d<   | S t        | j'                  d      t              rd| d   D ]Z  }t        |t(              s|j'                  d	      dk(  s)t        |j'                  d      t               sIt        |d   |      |d<   \ | S t        | j'                  d      t              r4| d   D cg c]   }t        |t               rt        ||      n|" c}| d<   | S t        | j'                  d
      t               rt        | d
   |      | d
<   | S yc c}w c c}w c c}w )z<Process a single message, applying templates to its content.r   )typesr   )r   )rolepartsr   Ncontenttypemessage)r   GENAI_TOOLSGENAI_STRUCTURED_OUTPUTSgoogle.genair   Contentr   r   hasattrPart	from_textr   r   
isinstancelistlenstrvertexai.generative_modelsgenerative_modelsgetdict)r   r   moder   partgms         r   process_messager*      st      $"?"?@@&}}
 $MM	  4( 

$$.G*L$M  
 	
 	!w}}d+"7==+S1/zz $MM  tV, GG%%nTYY&HI  

 
	
 '++i(#.+GI,>H	 '++i($/I& 	ED4&HHV$.txx/5-d6lGDV	E  '++g&-  (
 .8c-BN4)L
  '++i(#.+GI,>H	 /m&8
s   AJ(
AJ-
%J2Nc                   |s| S | j                         }d|v r5t        |d   |      |d<   |d   D cg c]  }t        |||       c}|d<   |S t        |t              r|}|s5yt        |t
              r$|j                  d      xs |j                  d      }syd|v r |D cg c]  }t        |||       c}|d<   |S d|v r!|d   D cg c]  }t        |||       c}|d<   |S c c}w c c}w c c}w )a  
    Handle templating for messages using the provided context.

    This function processes messages, applying Jinja2 templating to their content
    using the provided context. It supports various message formats including
    OpenAI, Anthropic, Cohere, VertexAI, and Gemini.

    Args:
        kwargs (Dict[str, Any]): Keyword arguments being passed to the create method.
        context (Dict[str, Any] | None, optional): Variables to use in templating. Defaults to None.

    Returns:
        Dict[str, Any]: The processed kwargs with templated content.

    Raises:
        ValueError: If no recognized message format is found in kwargs.
    r   chat_historyNmessagescontents)copyr   r*   r   r    r&   r%   )kwargsr'   r   
new_kwargsr   r-   r   s          r   handle_templatingr2   R   s.   ( J J .z)/Dg N
9 &n5&
 GWd3&

>"
 *d#	J	%>>*-K
1KZCK"
8?OGWd3"

:  
z	! &j1"
 GWd3"

:
 9&
$"

"
s   C%"C*	C/)r   r"   r   dict[str, Any]returnr"   )r   r3   r   r3   r'   r   r4   r3   )N)r0   r3   r'   r   r   zdict[str, Any] | Noner4   r3   )
__future__r   typingr   textwrapr   instructor.moder   jinja2.sandboxr   r   r*   r2   r	   r   r   <module>r:      sq    "     /N
AA&4A<@AAJ JN88"&81F88r   