
    g3fi              
           d Z ddlZddlmZ ddlmZmZmZ ddlm	Z	 ddl
mZ ddlmZmZ ddlmZmZ dd	lmZ  G d
 deeef         Zdeded   dee   fdZdeeef   deeef   ded   deeef   fdZy)zDict prompt template.    N)cached_property)AnyLiteralcast)override)dumpd)DEFAULT_FORMATTER_MAPPINGget_template_variables)RunnableConfigRunnableSerializable)ensure_configc            
       0   e Zd ZU dZeeef   ed<   ed   ed<   e	de
e   fd       Zdedeeef   fdZdedeeef   fd	Ze	 ddeded
z  dedefd       Ze	defd       Zedeeef   fd       Zedefd       Zede
e   fd       ZdddedefdZy
)DictPromptTemplatezTemplate represented by a dict.

    Recognizes variables in f-string or mustache formatted string dict values. Does NOT
    recognize variables in dict keys. Applies recursively.
    templatezf-stringmustachetemplate_formatreturnc                 B    t        | j                  | j                        S )zTemplate input variables.)_get_input_variablesr   r   selfs    Y/var/www/auto_recruiter/arenv/lib/python3.12/site-packages/langchain_core/prompts/dict.pyinput_variablesz"DictPromptTemplate.input_variables   s     $DMM43G3GHH    kwargsc                 D    t        | j                  || j                        S )[Format the prompt with the inputs.

        Returns:
            A formatted dict.
        )_insert_input_variablesr   r   r   r   s     r   formatzDictPromptTemplate.format!   s     't}}fd>R>RSSr   c                 .   K    | j                   di |S w)r    r!   r    s     r   aformatzDictPromptTemplate.aformat)   s      t{{$V$$s   Ninputconfigc                 `       j                    fd|t        |      fd j                  d|S )Nc                 (     j                   di | S )Nr#   r$   )xr   s    r   <lambda>z+DictPromptTemplate.invoke.<locals>.<lambda>6   s    kdkk&A& r   prompt)run_type
serialized)_call_with_configr   _serialized)r   r&   r'   r   s   `   r   invokezDictPromptTemplate.invoke1   sE     &t%%&&!
 ''
 
 	
r   c                      y)Nzdict-promptr#   r   s    r   _prompt_typezDictPromptTemplate._prompt_type>   s    r   c                 ,    t        dt        |             S )Nzdict[str, Any])r   r   r   s    r   r0   zDictPromptTemplate._serializedB   s    
 $eDk22r   c                      y)z,Return `True` as this class is serializable.Tr#   clss    r   is_lc_serializablez%DictPromptTemplate.is_lc_serializableI   s     r   c                 
    g dS )zyGet the namespace of the LangChain object.

        Returns:
            `["langchain_core", "prompts", "dict"]`
        )langchain_corepromptsdictr#   r6   s    r   get_lc_namespacez#DictPromptTemplate.get_lc_namespaceN   s
     54r   F)htmlr>   c                    t         )zHuman-readable representation.

        Args:
            html: Whether to format as HTML.

        Returns:
            Human-readable representation.
        )NotImplementedError)r   r>   s     r   pretty_reprzDictPromptTemplate.pretty_reprW   s
     "!r   N)__name__
__module____qualname____doc__r<   strr   __annotations__r   propertylistr   r!   r%   r   r   r1   r3   r   r0   classmethodboolr8   r=   rA   r#   r   r   r   r      sH    38n344Ic I ITs TtCH~ T%c %d38n % ;?



#1D#8

KN

	

 

 c   3T#s(^ 3 3 4   5c 5 5 +0 	"4 	"C 	"r   r   r   r   r   r   c                    g }| j                         D ]  }t        |t              r|t        ||      z  }#t        |t              r|t        ||      z  }Ct        |t        t        f      sZ|D ]B  }t        |t              r|t        ||      z  }#t        |t              s4|t        ||      z  }D  t        t        |            S rB   )	values
isinstancerG   r
   r<   r   rJ   tupleset)r   r   r   vr*   s        r   r   r   c   s     O__ 
Pa5aIIO4 3AGGOD%=) Pa%#'=a'QQO4(#';A'OOO	P
P O$%%r   inputsc           	      *   i }t         |   }| j                         D ]  \  }}t        |t              r ||fi |||<   #t        |t              r3|dk(  rd|v rd}t        j                  |d       t        |||      ||<   ft        |t        t        f      rtg }|D ]X  }	t        |	t              r|j                   ||	fi |       ,t        |	t              s=|j                  t        |	||             Z  t        |      |      ||<   |||<    |S )N	image_urlpathzSpecifying image inputs via file path in environments with user-input paths is a security vulnerability. Out of an abundance of caution, the utility has been removed to prevent possible misuse.   )
stacklevel)r	   itemsrO   rG   r<   warningswarnr   rJ   rP   appendtype)
r   rS   r   	formatted	formatterkrR   msgformatted_vr*   s
             r   r   r   u   s   
 !#I)/:I  1a$Q1&1IaL4 KFaK  ca021foNIaLD%=)68K a%&&y'=f'=>4(&&/6?K	 #47;/IaLIaL12 r   )rF   rZ   	functoolsr   typingr   r   r   typing_extensionsr   langchain_core.loadr   langchain_core.prompts.stringr	   r
   langchain_core.runnablesr   r   langchain_core.runnables.configr   r<   r   rJ   rG   r   r   r#   r   r   <module>rj      s      % % % & % J 9N"-dDj9 N"b&&%,-C%D&	#Y&$ 38n cN  34  
#s(^	 r   