
    g3fi;*                    z   d dl mZ d dlmZ d dlmZmZ d dlmZ d dl	m
Z
mZ d dlmZmZmZm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mZmZmZmZmZ  e  edd            Z!ddZ"	 	 	 	 	 	 ddZ#	 	 	 	 	 	 ddZ$ddZ%dddddd	 	 	 	 	 	 	 	 	 	 	 	 	 ddZ&	 d	 	 	 	 	 d dZ'	 d	 	 	 	 	 d!dZ(d"dZ)ddZ*dZ+d#dZ,y)$    )annotations)ChainMap)MappingSequence)getenv)Anycast)AsyncCallbackManagerBaseCallbackManagerCallbackManager	Callbacks)RunnableConfig)CONFIG_KEYSCOPIABLE_KEYSvar_child_runnable_config)CheckpointMetadata)CONFCONFIG_KEY_CHECKPOINT_IDCONFIG_KEY_CHECKPOINT_MAPCONFIG_KEY_CHECKPOINT_NSNS_ENDNS_SEP!LANGGRAPH_DEFAULT_RECURSION_LIMIT10000c                `    t        j                  d | j                  t               D              S )zRemove task IDs from checkpoint namespace.

    Args:
        ns: The checkpoint namespace with task IDs.

    Returns:
        str: The checkpoint namespace without task IDs.
    c              3  n   K   | ]-  }|j                         r|j                  t              d     / yw)r   N)isdigitsplitr   ).0parts     Y/var/www/auto_recruiter/arenv/lib/python3.12/site-packages/langgraph/_internal/_config.py	<genexpr>z'recast_checkpoint_ns.<locals>.<genexpr>+   s+      "&$,,.

61s   55)r   joinr   )nss    r!   recast_checkpoint_nsr%   "   s+     ;; *,((6*:      c                l    | t         |iS t         | vri | t         |iS i | t         i | t            |iS N)r   )configpatchs     r!   patch_configurabler+   0   sN     ~e}	V	&&&$&&:&:$ 96$< 95 9::r&   c                    | | S |r|j                  d      nd x}r/| t           }t        | t        i ||t           |t
           ii      S | S )Nparents)getr   r+   r   r   r   )r)   metadatar-   confs       r!   patch_checkpoint_mapr1   ;   sq     ~08X\\),d	C	Cd|!) ,,12D9Q4R,
 	
 r&   c                    i }| D ]  }||j                         D ]  \  }}|s
|dk(  r#|j                  |      x}r
i ||||<   ,|||<   2|dk(  r#|j                  |      x}r
g ||||<   T|||<   Z|t        k(  r#|j                  |      x}r
i ||||<   |||<   |dk(  r|j                  d      }t        |t              r`||j                         |d<   t        |t              r	||z   |d<   |j                         }|D ]  }|j                  |d        ||d<   t        |t              rn||j                         |d<   4t        |t              r1|j                         }|D ]  }|j                  |d        ||d<   u|j                  |      |d<   t        |dk(  r|d   t        k7  s|d   |d<   ||   ||<     t        |vr	i |t        <   |S )zMerge multiple configs into one.

    Args:
        *configs: The configs to merge.

    Returns:
        RunnableConfig: The merged config.
    r/   tags	callbacksT)inheritrecursion_limit)itemsr.   r   
isinstancelistcopyadd_handlerr   mergeNotImplementedErrorDEFAULT_RECURSION_LIMIT)	configsbaser)   keyvalue
base_valuebase_callbacksmngrcallbacks	            r!   merge_configsrG   O   sD    D  6(> ,,. 3	(JCj !%#.:. 7: 7 7DI %DI!%#.:. 5* 5u 5DI %DI!%#.:. 7: 7 7DI %DI#!%+!6 eT*%-,1JJL[)#ND9,:U,B[)  .224(- EH ,,Xt,DE,0[)':;%-,1JJL[)#ND9$zz|(6 EH ,,Xt,DE,0[) -;,@,@,G[)--))+,0GG.45F.GD*+"3KS	g3	(6(n 4T
Kr&   N)r4   r6   max_concurrencyrun_nameconfigurablec                   | | j                         ni } ||| d<   d| v r| d= d| v r| d= ||| d<   ||| d<   ||| d<   |!i | j                  t        i       || t        <   | S )a  Patch a config with new values.

    Args:
        config: The config to patch.
        callbacks: The callbacks to set.
        recursion_limit: The recursion limit to set.
        max_concurrency: The max number of concurrent steps to run, which also applies to parallelized steps.
        run_name: The run name to set.
        configurable: The configurable to set.

    Returns:
        RunnableConfig: The patched config.
    r4   rI   run_idr6   rH   )r:   r.   r   )r)   r4   r6   rH   rI   rJ   s         r!   patch_configrM      s    , %0V[[]bF ({z"vx "$3 !"$3 !%z?&**T2.?,?tMr&   c                v   ddl m} | j                  d      }|	|g ||}n|t        |      }| j                  d      x}rEt	        ||      r9|r|j                  |       | j                  d      x}r|j                  |       |S  |j                  | j                  d      || j                  d            S )zGet a callback manager for a config.

    Args:
        config: The config.

    Returns:
        CallbackManager: The callback manager.
    r   )r   r3   r4   r/   inheritable_callbacksinheritable_tagsinheritable_metadata) langchain_core.callbacks.managerr   r.   r9   r8   add_tagsadd_metadata	configure)r)   r3   r   all_tagsr4   r/   s         r!   get_callback_manager_for_configrX      s     A zz&!H 0%X%%		:ZZ,,	,*?3 x(zz*--8-""8, )(("(**["9%!'J!7
 	
r&   c                v   ddl m} | j                  d      }|	|g ||}n|t        |      }| j                  d      x}rEt	        ||      r9|r|j                  |       | j                  d      x}r|j                  |       |S  |j                  | j                  d      || j                  d            S )zGet an async callback manager for a config.

    Args:
        config: The config.

    Returns:
        AsyncCallbackManager: The async callback manager.
    r   )r
   r3   r4   r/   rO   )rS   r
   r.   r9   r8   rT   rU   rV   )r)   r3   r
   rW   r4   r/   s         r!   %get_async_callback_manager_for_configrZ      s     F zz&!H 0%X%%		:ZZ,,	,*'3 x(zz*--8-""8, .#--"(**["9%!'J!7
 	
r&   c                \    t        | t        t        t        f      rt	        |       dkD  S | d uS )Nr   )r8   r9   tupledictlen)rB   s    r!   _is_not_emptyr_     s,    %$t,-5zA~D  r&   c            	        t        g t               dt        i       }t        j                         x}rV|j                  |j                         D ci c]+  \  }}t        |      r||t        v r|j                         n|- c}}       | D ]  }||j                         D ]J  \  }}t        |      s|t        v s|t        k(  r"t        t        |      j                         ||<   F|||<   L |j                         D ]&  \  }}t        |      s|t        vs||t           |<   (  |d   }|t           j                         D ]  \  }}t        |||      r|||<    |S c c}}w )zReturn a config with all keys, merging any provided configs.

    Args:
        *configs: Configs to merge before ensuring defaults.

    Returns:
        RunnableConfig: The merged and ensured config.
    N)r3   r/   r4   r6   rJ   r/   )r   r   r>   r   r.   updater7   r_   r   r:   r   r   r	   r]   _exclude_as_metadata)	r?   empty
var_configkvr)   _empty_metadatarA   rB   s	            r!   ensure_configrh     ss    /E /2244z4 ',,.Aq # qM11668q8	
  #>LLN 	!DAqQA$49#D!}113E!H E!H	! LLN 	#DAqQA[$8!"dA	## J'ODk'') %
UUO<$% L/s   0E"
)rA   tokensecretpasswordauthc                    | j                         | j                  d      xsA t        |t        t        t
        t        f       xs | |v xs t        fdt        D              S )N__c              3  &   K   | ]  }|v  
 y wr(    )r   substr	key_lowers     r!   r"   z'_exclude_as_metadata.<locals>.<genexpr>H  s     7vv"7s   )	casefold
startswithr8   strintfloatboolany_OMIT)rA   rB   r/   rr   s      @r!   rb   rb   B  s[    It 	8%#sE4!899	8(?	8 777	r&   )r$   ru   returnru   )r)   RunnableConfig | Noner*   zdict[str, Any]r{   r   )r)   r|   r/   zCheckpointMetadata | Noner{   r   )r?   r|   r{   r   )r)   r|   r4   r   r6   
int | NonerH   r}   rI   z
str | NonerJ   zdict[str, Any] | Noner{   r   r(   )r)   r   r3   Sequence[str] | Noner{   r   )r)   r   r3   r~   r{   r
   )rB   r   r{   rx   )rA   ru   rB   r   r/   zMapping[str, Any]r{   rx   )-
__future__r   collectionsr   collections.abcr   r   osr   typingr   r	   langchain_core.callbacksr
   r   r   r   langchain_core.runnablesr   langchain_core.runnables.configr   r   r   langgraph.checkpoint.baser   langgraph._internal._constantsr   r   r   r   r   r   rv   r>   r%   r+   r1   rG   rM   rX   rZ   r_   rh   rz   rb   rp   r&   r!   <module>r      sQ   "   -    4 
 9  f%H'RS ;!;*8;;!-F(EV  "&"&*.'!' '  	'
  ' ' (' 'V :>"
"
"6"
"
N "&#
#

#
 #
L!)X 	7r&   