§
    šŠtj&  ã                  óv  — d dl mZ d dlZd dlZd dlZd dlZd dlmZmZ d dl	m
Z
 d dlmZ d dlmZmZmZm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mZ d dlmZ d dlm Z  eefZ!d1d„Z"d2d„Z#d3d„Z$d3d„Z%d4d„Z&d5d!„Z'd6d"„Z(d6d#„Z)d7d&„Z*d8d*„Z+ G d+„ d,ej,        ¦  «        Z- G d-„ d.ej,        ¦  «        Z.d9d0„Z/dS ):é    )ÚannotationsN)ÚCallableÚSequence)Úpartial)ÚAny)ÚRunnableÚRunnableLambdaÚRunnableParallelÚRunnableSequence)ÚRunnableBindingBase)Úrun_in_executor)ÚChannelVersions)Úoverride)ÚRunnableCallableÚRunnableSeq)Úsync_timeout_unsupported)ÚPregelProtocolÚprevious_versionsr   Úcurrent_versionsÚreturnc                óâ   ‡ ‡— ‰ rht          t          t          |                     ¦   «         ¦  «        d¦  «        ¦  «        } |¦   «         Šˆˆ fd„|                     ¦   «         D ¦   «         }n|}|S )zEGet subset of current_versions that are newer than previous_versions.Nc                óP   •— i | ]"\  }}|‰                      |‰¦  «        k    ¯||“Œ#S © )Úget)Ú.0ÚkÚvÚnull_versionr   s      €€úU/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/langgraph/pregel/_utils.pyú
<dictcomp>z,get_new_channel_versions.<locals>.<dictcomp>$   sE   ø€ ð 
ð 
ð 
á��1ØÐ$×(Ò(¨¨LÑ9Ô9Ò9Ð9ð ˆqà9Ð9Ð9ó    )ÚtypeÚnextÚiterÚvaluesÚitems)r   r   Úversion_typeÚnew_versionsr   s   `   @r   Úget_new_channel_versionsr)      s�   øø€ ð ð 	(Ý�D¥Ð&6×&=Ò&=Ñ&?Ô&?Ñ!@Ô!@À$ÑGÔGÑHÔHˆØ#�|‘~”~ˆð
ð 
ð 
ð 
ð 
à(×.Ò.Ñ0Ô0ð
ñ 
ô 
ˆˆð (ˆàÐr!   Ú	candidater   úPregelProtocol | Nonec                ó€  — ddl m} | g}|D �]0}t          |t          ¦  «        rt          ||¦  «        r	|j        dur|c S t          |t
          ¦  «        st          |t          ¦  «        r|                     |j        ¦  «         Œzt          |t          ¦  «        r|                     |j
        ¦  «         Œªt          |t          ¦  «        rq|j        �2|                     d„ t          |j        ¦  «        D ¦   «         ¦  «         Œø|j        �1|                     d„ t          |j        ¦  «        D ¦   «         ¦  «         �Œ2d S )Nr   )ÚPregelFc              3  óH   K  — | ]}t          |d ¦  «        r|j        n|V — ŒdS ©Ú__self__N©Úhasattrr0   ©r   Únls     r   ú	<genexpr>z'find_subgraph_pregel.<locals>.<genexpr>A   óK   è è € ð "ð "àõ $+¨2¨zÑ#:Ô#:ÐB�B”K�KÀð"ð "ð "ð "ð "ð "r!   c              3  óH   K  — | ]}t          |d ¦  «        r|j        n|V — ŒdS r/   r1   r3   s     r   r5   z'find_subgraph_pregel.<locals>.<genexpr>F   r6   r!   )Úlanggraph.pregelr-   Ú
isinstancer   Úcheckpointerr   r   ÚextendÚstepsr	   Údepsr   ÚfuncÚget_function_nonlocalsÚafunc)r*   r-   Ú
candidatesÚcs       r   Úfind_subgraph_pregelrC   /   s~  € Ø'Ð'Ð'Ð'Ð'Ð'à"+ €Jàð ñ ˆå�q�.Ñ)Ô)ð	õ    6Ñ*Ô*ð	ð /0¬nÀEÐ.IÐ.IàˆHˆHˆHÝ˜Õ+Ñ,Ô,ð 	µ
¸1½kÑ0JÔ0Jð 	Ø×Ò˜aœgÑ&Ô&Ð&Ð&Ý˜�>Ñ*Ô*ð 	Ø×Ò˜aœfÑ%Ô%Ð%Ð%Ý˜Õ+Ñ,Ô,ð 
	ØŒvÐ!Ø×!Ò!ð "ð "å4°Q´VÑ<Ô<ð"ñ "ô "ñ ô ð ð ð ”Ð$Ø×!Ò!ð "ð "å4°Q´WÑ=Ô=ð"ñ "ô "ñ ô ð ùð
 ˆ4r!   ÚrunnableúSequence[Runnable] | Nonec                ó>   — t          | t          ¦  «        r| j        S d S ©N)r9   Ú_SEQUENCE_TYPESr<   ©rD   s    r   Ú_sequence_stepsrJ   N   s!   € Ý�(�OÑ,Ô,ð ØŒ~ÐØˆ4r!   c                ó|   — t          | t          ¦  «        r&t          | j                             ¦   «         ¦  «        S d S rG   )r9   r
   ÚtupleÚsteps__r%   rI   s    r   Ú_parallel_stepsrN   T   s7   € Ý�(Õ,Ñ-Ô-ð 0Ý�XÔ%×,Ò,Ñ.Ô.Ñ/Ô/Ð/Øˆ4r!   Úmethod_nameÚstrÚboolc                ót   — t          t          | ¦  «        |d ¦  «        }|d uo|t          t          |¦  «        uS rG   )Úgetattrr"   r   )rD   rO   Úmethods      r   Ú_has_method_overriderU   Z   s8   € Ý•T˜(‘^”^ [°$Ñ7Ô7€FØ˜ÐÐN &µ½À+Ñ0NÔ0NÐ"NÐNr!   r@   úCallable[..., Any] | Nonec                óH   — t          | t          ¦  «        o| j        t          u S rG   )r9   r   r>   r   )r@   s    r   Ú_is_executor_backed_afuncrX   _   s   € Ý�e�WÑ%Ô%ÐG¨%¬*½Ð*GÐGr!   c                óî   — t          | t          ¦  «        r| j        d uot          | j        ¦  «         S t          | t          ¦  «        rt          t          | dd¦  «        ¦  «        S t          | d¦  «        S )Nr@   FÚainvoke)r9   r   r@   rX   r	   rQ   rS   rU   rI   s    r   Ú_has_native_asyncr[   c   s~   € Ý�(Õ,Ñ-Ô-ð 
ØŒ~ TÐ)ð 
Õ2KØŒNñ3
ô 3
ð /
ð 	
õ �(�NÑ+Ô+ð 7Ý•G˜H g¨uÑ5Ô5Ñ6Ô6Ð6Ý ¨)Ñ4Ô4Ð4r!   c                óø   — t          | t          ¦  «        r| j        } t          | t          ¦  «        °t          | ¦  «        }|€t	          | ¦  «        }|�t          d„ |D ¦   «         ¦  «        S t          | ¦  «        S )uI  Return whether a runnable can be idle-timed without known sync code.

    For custom runnable subclasses, an `ainvoke` override is treated as the
    async contract. We do not introspect whether that implementation delegates
    to blocking work internally â€” e.g. a subclass whose `ainvoke` calls
    `asyncio.to_thread(self.invoke, ...)` will pass this check but the wrapped
    sync work is still uncancellable. Idle-timeout enforcement on such a
    runnable will fire `NodeTimeoutError` correctly, but the background thread
    will keep running until its sync work returns.
    Nc              3  ó4   K  — | ]}t          |¦  «        V — Œd S rG   )Ú_runnable_has_native_async)r   Ústeps     r   r5   z-_runnable_has_native_async.<locals>.<genexpr>   s+   è è € ÐFÐF¸Õ-¨dÑ3Ô3ÐFÐFÐFÐFÐFÐFr!   )r9   r   ÚboundrJ   rN   Úallr[   )rD   r<   s     r   r^   r^   m   s…   € õ �XÕ2Ñ
3Ô
3ð "Ø”>ˆõ �XÕ2Ñ
3Ô
3ð "å˜HÑ%Ô%€EØ€}Ý Ñ)Ô)ˆØÐÝÐFÐFÀÐFÑFÔFÑFÔFÐFõ
 ˜XÑ&Ô&Ð&r!   ÚnameÚNonec               óB   — t          | ¦  «        st          |¦  «        ‚d S rG   )r^   r   )rD   rb   s     r   Úvalidate_timeout_supportedre   ‡   s*   € Ý% hÑ/Ô/ð -Ý& tÑ,Ô,Ð,ð-ð -r!   r>   r   ú	list[Any]c                óD  — 	 t          j        | ¦  «        }t          j        t	          j        |¦  «        ¦  «        }t          ¦   «         }|                     |¦  «         g }t          | d¦  «        r-t          | j
        ¦  «        rt          j        | j
        ¦  «        nt          j        | ¦  «        }i |j        ¥|j        ¥}|                     ¦   «         D ]£\  }}||j        v r|                     |¦  «         |j        D ]x}	d|	v rr|	                     |¦  «        r]|}
|	                     d¦  «        dd…         D ](}|
€ n8	 t%          |
|¦  «        }
Œ# t&          $ r Y  nw xY w|                     |
¦  «         ŒyŒ¤n%# t(          t*          t,          t.          f$ r g cY S w xY w|S )z¹Get the nonlocal variables accessed by a function.

    Args:
        func: The function to check.

    Returns:
        List[Any]: The nonlocal variables accessed by the function.
    Ú__wrapped__ú.é   N)ÚinspectÚ	getsourceÚastÚparseÚtextwrapÚdedentÚFunctionNonLocalsÚvisitr2   Úcallablerh   ÚgetclosurevarsÚglobalsÚ	nonlocalsr&   ÚappendÚ
startswithÚsplitrS   ÚAttributeErrorÚSyntaxErrorÚ	TypeErrorÚOSErrorÚSystemError)r>   ÚcodeÚtreeÚvisitorr%   ÚclosurerA   r   r   ÚkkÚvvÚparts               r   r?   r?   Œ   sÝ  € ðÝÔ  Ñ&Ô&ˆÝŒy�œ¨Ñ.Ô.Ñ/Ô/ˆÝ#Ñ%Ô%ˆØ�Š�dÑÔÐØˆõ �t˜]Ñ+Ô+ð.Ý08¸Ô9IÑ0JÔ0Jð.�GÔ" 4Ô#3Ñ4Ô4Ð4åÔ'¨Ñ-Ô-ð 	ð
 >˜œÐ=¨7Ô+<Ð=ˆ
Ø×$Ò$Ñ&Ô&ð 	*ð 	*‰DˆAˆqØ�GÔ%Ð%Ð%Ø—’˜aÑ Ô Ð ØÔ'ð *ð *�Ø˜"�9�9 §¢¨qÑ!1Ô!1�9Ø�BØ "§¢¨¡¤¨a¨b¨bÔ 1ð 	*ð 	*˜Ø˜:Ø!˜Eð&Ý%,¨R°Ñ%6Ô%6  øÝ#1ð &ð &ð &Ø %  ð&øøøð Ÿš bÑ)Ô)Ð)øð*ð	*øõ  �¥G­[Ð9ð ð ð Øˆ	ˆ	ˆ	ðøøøð €Ms6   ‚D>E; ÅEÅE; Å
E 	ÅE; ÅE 	Å E; Å;FÆFc                  ób   — e Zd ZdZdd„Zedd„¦   «         Zedd
„¦   «         Zedd„¦   «         ZdS )rq   z2Get the nonlocal variables accessed of a function.r   rc   c                ó,   — t          ¦   «         | _        d S rG   )Úsetrv   ©Úselfs    r   Ú__init__zFunctionNonLocals.__init__º   s   € Ý#&¡5¤5ˆŒˆˆr!   Únodeúast.FunctionDefr   c                óš   — t          ¦   «         }|                     |¦  «         | j                             |j        |j        z
  ¦  «         dS )z•Visit a function definition.

        Args:
            node: The node to visit.

        Returns:
            Any: The result of the visit.
        N©Ú	NonLocalsrr   rv   ÚupdateÚloadsÚstores©rŠ   rŒ   r�   s      r   Úvisit_FunctionDefz#FunctionNonLocals.visit_FunctionDef½   óD   € õ ‘+”+ˆØ�Š�dÑÔÐØŒ×Ò˜gœm¨g¬nÑ<Ñ=Ô=Ð=Ð=Ð=r!   úast.AsyncFunctionDefc                óš   — t          ¦   «         }|                     |¦  «         | j                             |j        |j        z
  ¦  «         dS )zœVisit an async function definition.

        Args:
            node: The node to visit.

        Returns:
            Any: The result of the visit.
        Nr�   r”   s      r   Úvisit_AsyncFunctionDefz(FunctionNonLocals.visit_AsyncFunctionDefË   r–   r!   ú
ast.Lambdac                óš   — t          ¦   «         }|                     |¦  «         | j                             |j        |j        z
  ¦  «         dS )z‘Visit a lambda function.

        Args:
            node: The node to visit.

        Returns:
            Any: The result of the visit.
        Nr�   r”   s      r   Úvisit_LambdazFunctionNonLocals.visit_LambdaÙ   r–   r!   N©r   rc   )rŒ   r�   r   r   )rŒ   r—   r   r   )rŒ   rš   r   r   )	Ú__name__Ú
__module__Ú__qualname__Ú__doc__r‹   r   r•   r™   rœ   r   r!   r   rq   rq   ·   sŽ   € € € € € Ø<Ð<ð)ð )ð )ð )ð ð>ð >ð >ñ „Xð>ð ð>ð >ð >ñ „Xð>ð ð>ð >ð >ñ „Xð>ð >ð >r!   rq   c                  óJ   — e Zd ZdZdd„Zedd„¦   «         Zedd
„¦   «         ZdS )r�   z Get nonlocal variables accessed.r   rc   c                óR   — t          ¦   «         | _        t          ¦   «         | _        d S rG   )rˆ   r’   r“   r‰   s    r   r‹   zNonLocals.__init__ë   s   € Ý"™uœuˆŒ
Ý #¡¤ˆŒˆˆr!   rŒ   úast.Namer   c                ó  — t          |j        t          j        ¦  «        r!| j                             |j        ¦  «         dS t          |j        t          j        ¦  «        r!| j                             |j        ¦  «         dS dS )z‹Visit a name node.

        Args:
            node: The node to visit.

        Returns:
            Any: The result of the visit.
        N)	r9   Úctxrm   ÚLoadr’   ÚaddÚidÚStorer“   )rŠ   rŒ   s     r   Ú
visit_NamezNonLocals.visit_Nameï   sr   € õ �d”h¥¤Ñ)Ô)ð 	%ØŒJ�NŠN˜4œ7Ñ#Ô#Ð#Ð#Ð#Ý˜œ¥#¤)Ñ,Ô,ð 	%ØŒK�OŠO˜DœGÑ$Ô$Ð$Ð$Ð$ð	%ð 	%r!   úast.Attributec                ó°  — t          |j        t          j        ¦  «        �r±|j        }|j        }t          |t          j        ¦  «        r.|j        dz   |z   }|j        }t          |t          j        ¦  «        °.t          |t          j        ¦  «        rF| j         	                    |j
        dz   |z   ¦  «         | j                             |j
        ¦  «         dS t          |t          j        ¦  «        rãt          |j        t          j        ¦  «        r&| j         	                    |j        j
        ¦  «         dS |j        }d}t          |t          j        ¦  «        r8|r|j        dz   |z   }n|j        }|j        }t          |t          j        ¦  «        °8t          |t          j        ¦  «        r+| j         	                    |j
        dz   |z   ¦  «         dS dS dS dS )z‘Visit an attribute node.

        Args:
            node: The node to visit.

        Returns:
            Any: The result of the visit.
        ri   Ú N)r9   r¦   rm   r§   ÚvalueÚattrÚ	AttributeÚNamer’   r¨   r©   ÚdiscardÚCallr>   )rŠ   rŒ   ÚparentÚ	attr_exprs       r   Úvisit_AttributezNonLocals.visit_Attributeþ   sÈ  € õ �d”h¥¤Ñ)Ô)ñ 	DØ”ZˆFØœ	ˆIÝ˜V¥S¤]Ñ3Ô3ð &Ø"œK¨#Ñ-°	Ñ9�	Øœ�õ ˜V¥S¤]Ñ3Ô3ð &õ ˜&¥#¤(Ñ+Ô+ð DØ”
—’˜vœy¨3™°Ñ:Ñ;Ô;Ð;Ø”
×"Ò" 6¤9Ñ-Ô-Ð-Ð-Ð-Ý˜F¥C¤HÑ-Ô-ð DÝ˜fœk­3¬8Ñ4Ô4ð DØ”J—N’N 6¤;¤>Ñ2Ô2Ð2Ð2Ð2à#œ[�FØ "�IÝ$ V­S¬]Ñ;Ô;ð .Ø$ð 4Ø(.¬°cÑ(9¸IÑ(E˜I˜Ià(.¬˜IØ!'¤˜õ % V­S¬]Ñ;Ô;ð .õ " &­#¬(Ñ3Ô3ð DØœ
Ÿš v¤y°3¡¸Ñ'BÑCÔCÐCÐCÐCð-	Dð 	DðDð DðDð Dr!   Nr�   )rŒ   r¤   r   r   )rŒ   r¬   r   r   )rž   rŸ   r    r¡   r‹   r   r«   r·   r   r!   r   r�   r�   è   st   € € € € € Ø*Ð*ð&ð &ð &ð &ð ð%ð %ð %ñ „Xð%ð ðDð Dð Dñ „XðDð Dð Dr!   r�   r¯   c                óF   — t          t          j        d| ¦  «        ¦  «        S )zCCheck if the given string matches the format of xxh3_128_hexdigest.z[0-9a-f]{32})rQ   ÚreÚ	fullmatch)r¯   s    r   Úis_xxh3_128_hexdigestr»   !  s   € å•”˜_¨eÑ4Ô4Ñ5Ô5Ð5r!   )r   r   r   r   r   r   )r*   r   r   r+   )rD   r   r   rE   )rD   r   rO   rP   r   rQ   )r@   rV   r   rQ   )rD   r   r   rQ   )rD   r   rb   rP   r   rc   )r>   r   r   rf   )r¯   rP   r   rQ   )0Ú
__future__r   rm   rk   r¹   ro   Úcollections.abcr   r   Ú	functoolsr   Útypingr   Úlangchain_core.runnablesr   r	   r
   r   Úlangchain_core.runnables.baser   Úlangchain_core.runnables.configr   Úlanggraph.checkpoint.baser   Útyping_extensionsr   Úlanggraph._internal._runnabler   r   Úlanggraph._internal._timeoutr   Úlanggraph.pregel.protocolr   rH   r)   rC   rJ   rN   rU   rX   r[   r^   re   r?   ÚNodeVisitorrq   r�   r»   r   r!   r   ú<module>rÉ      s•  ðØ "Ð "Ð "Ð "Ð "Ð "à 
€
€
€
Ø €€€Ø 	€	€	€	Ø €€€Ø .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ð >Ð =Ð =Ð =Ð =Ð =Ø ;Ð ;Ð ;Ð ;Ð ;Ð ;Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø &Ð &Ð &Ð &Ð &Ð &à GÐ GÐ GÐ GÐ GÐ GÐ GÐ GØ AÐ AÐ AÐ AÐ AÐ AØ 4Ð 4Ð 4Ð 4Ð 4Ð 4àÐ 0Ð1€ðð ð ð ð$ð ð ð ð>ð ð ð ðð ð ð ðOð Oð Oð Oð
Hð Hð Hð Hð5ð 5ð 5ð 5ð'ð 'ð 'ð 'ð4-ð -ð -ð -ð
(ð (ð (ð (ðV.>ð .>ð .>ð .>ð .>˜œñ .>ô .>ð .>ðb6Dð 6Dð 6Dð 6Dð 6D�”ñ 6Dô 6Dð 6Dðr6ð 6ð 6ð 6ð 6ð 6r!   