ó
    ýÞ jä  ã                  óÎ   • S SK Jr  S SKJr  S SKJrJr  S SKJr  S SK	J
r
  S SKJrJr  S SKJrJrJrJr  Sr " S	 S
\\   \\\\4   5      r " S S\\   \\\\\\4   4   5      rg)é    )Úannotations)ÚSequence)ÚAnyÚGeneric)ÚSelf)ÚMISSING)ÚBaseChannelÚValue)ÚEmptyChannelErrorÚ	ErrorCodeÚInvalidUpdateErrorÚcreate_error_message)Ú	LastValueÚLastValueAfterFinishc                  ó²   ^ • \ rS rSr% SrSrS\S'   SSU 4S jjjrSS jr\	SS j5       r
\	SS	 j5       rSS
 jrSS jrSS jrSS jrSS jrSS jrSrU =r$ )r   é   zGStores the last value received, can receive at most one value per step.©ÚvalueúValue | Anyr   c                ó:   >• [         TU ]  X5        [        U l        g ©N)ÚsuperÚ__init__r   r   ©ÚselfÚtypÚkeyÚ	__class__s      €ÚW/var/www/html/gaurav/venv/lib/python3.13/site-packages/langgraph/channels/last_value.pyr   ÚLastValue.__init__   s   ø€ Ü‰Ñ˜Ô"Üˆ�
ó    c                ó"   • [        U[        5      $ r   )Ú
isinstancer   ©r   r   s     r   Ú__eq__ÚLastValue.__eq__   s   € Ü˜%¤Ó+Ð+r!   c                ó   • U R                   $ ©z,The type of the value stored in the channel.©r   ©r   s    r   Ú	ValueTypeÚLastValue.ValueType"   ó   € ð �x‰xˆr!   c                ó   • U R                   $ ©z/The type of the update received by the channel.r)   r*   s    r   Ú
UpdateTypeÚLastValue.UpdateType'   r-   r!   c                ót   • U R                  U R                  U R                  5      nU R                  Ul        U$ )zReturn a copy of the channel.)r   r   r   r   )r   Úemptys     r   ÚcopyÚLastValue.copy,   s*   € à—‘˜tŸx™x¨¯©Ó2ˆØ—j‘jˆŒØˆr!   c                óp   • U R                  U R                  U R                  5      nU[        La  Xl        U$ r   )r   r   r   r   r   ©r   Ú
checkpointr3   s      r   Úfrom_checkpointÚLastValue.from_checkpoint2   s,   € Ø—‘˜tŸx™x¨¯©Ó2ˆØœWÒ$Ø$ŒKØˆr!   c                ó¸   • [        U5      S:X  a  g[        U5      S:w  a1  [        SU R                   S3[        R                  S9n[        U5      eUS   U l        g)	Nr   Fé   zAt key 'zW': Can receive only one value per step. Use an Annotated key to handle multiple values.)ÚmessageÚ
error_codeéÿÿÿÿT)Úlenr   r   r   ÚINVALID_CONCURRENT_GRAPH_UPDATEr   r   )r   ÚvaluesÚmsgs      r   ÚupdateÚLastValue.update8   sb   € Üˆv‹;˜!ÓØÜˆv‹;˜!ÓÜ&Ø" 4§8¡8 *ð  -Dð  EÜ$×DÑDñˆCô % SÓ)Ð)à˜B‘ZˆŒ
Ør!   c                óT   • U R                   [        L a
  [        5       eU R                   $ r   )r   r   r   r*   s    r   ÚgetÚLastValue.getE   s!   € Ø�:‰:œÒ Ü#Ó%Ð%Ø�z‰zÐr!   c                ó&   • U R                   [        L$ r   )r   r   r*   s    r   Úis_availableÚLastValue.is_availableJ   s   € Ø�z‰z¤Ð(Ð(r!   c                ó   • U R                   $ r   r   r*   s    r   r8   ÚLastValue.checkpointM   s   € Ø�z‰zÐr!   ©Ú ©r   r   r   ÚstrÚreturnÚNone©r   ÚobjectrR   Úbool©rR   ztype[Value])rR   r   )r8   r
   rR   r   )rB   zSequence[Value]rR   rV   ©rR   r
   ©rR   rV   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú	__slots__Ú__annotations__r   r%   Úpropertyr+   r0   r4   r9   rD   rG   rJ   r8   Ú__static_attributes__Ú__classcell__©r   s   @r   r   r      sk   ø‡ ÙQà€IàÓ÷ñ ô,ð óó ðð óó ðôôôôô
)÷ò r!   r   c                  óÆ   ^ • \ rS rSr% SrSrS\S'   S\S'   SSU 4S jjjrSS	 jr\	SS
 j5       r
\	SS j5       rSS jrSS jrSS jrSS jrSS jrSS jrSS jrSrU =r$ )r   éQ   znStores the last value received, but only made available after finish().
Once made available, clears the value.)r   Úfinishedr   r   rV   rg   c                óH   >• [         TU ]  X5        [        U l        SU l        g )NF)r   r   r   r   rg   r   s      €r   r   ÚLastValueAfterFinish.__init__\   s   ø€ Ü‰Ñ˜Ô"ÜˆŒ
Øˆ�r!   c                ó"   • [        U[        5      $ r   )r#   r   r$   s     r   r%   ÚLastValueAfterFinish.__eq__a   s   € Ü˜%Ô!5Ó6Ð6r!   c                ó   • U R                   $ r(   r)   r*   s    r   r+   ÚLastValueAfterFinish.ValueTyped   r-   r!   c                ó   • U R                   $ r/   r)   r*   s    r   r0   ÚLastValueAfterFinish.UpdateTypei   r-   r!   c                ód   • U R                   [        L a  [        $ U R                   U R                  4$ r   ©r   r   rg   r*   s    r   r8   ÚLastValueAfterFinish.checkpointn   s&   € Ø�:‰:œÒ ÜˆNØ—
‘
˜DŸM™MÐ*Ð*r!   c                óŽ   • U R                  U R                  5      nU R                  Ul        U[        La  Uu  Ul        Ul        U$ r   )r   r   r   r   r   rg   r7   s      r   r9   Ú$LastValueAfterFinish.from_checkpoints   s:   € Ø—‘˜tŸx™xÓ(ˆØ—H‘HˆŒ	ØœWÒ$Ø*4Ñ'ˆEŒK˜œØˆr!   c                óF   • [        U5      S:X  a  gSU l        US   U l        g)Nr   Fr?   T)r@   rg   r   )r   rB   s     r   rD   ÚLastValueAfterFinish.updatez   s&   € Üˆv‹;˜!ÓØàˆŒØ˜B‘ZˆŒ
Ør!   c                óL   • U R                   (       a  SU l         [        U l        gg)NFT)rg   r   r   r*   s    r   ÚconsumeÚLastValueAfterFinish.consume‚   s   € Ø�=�=Ø!ˆDŒMÜ ˆDŒJØàr!   c                ó\   • U R                   (       d  U R                  [        La  SU l         gg)NTF)rg   r   r   r*   s    r   ÚfinishÚLastValueAfterFinish.finishŠ   s!   € Ø�}�} §¡´7Ò!:Ø ˆDŒMØàr!   c                óv   • U R                   [        L d  U R                  (       d
  [        5       eU R                   $ r   )r   r   rg   r   r*   s    r   rG   ÚLastValueAfterFinish.get‘   s'   € Ø�:‰:œÒ ¨¯¯Ü#Ó%Ð%Ø�z‰zÐr!   c                óL   • U R                   [        L=(       a    U R                  $ r   rq   r*   s    r   rJ   Ú!LastValueAfterFinish.is_available–   s   € Ø�z‰z¤Ð(×:¨T¯]©]Ð:r!   )rg   r   rN   rP   rT   rW   )rR   útuple[Value | Any, bool] | Any)r8   r�   rR   r   )rB   zSequence[Value | Any]rR   rV   rY   rX   )rZ   r[   r\   r]   r^   r_   r`   r   r%   ra   r+   r0   r8   r9   rD   rx   r{   rG   rJ   rb   rc   rd   s   @r   r   r   Q   sy   ø‡ ñ.ð &€IàÓØƒN÷ñ ô
7ð óó ðð óó ðô+ô
ôôôô÷
;ò ;r!   r   N)Ú
__future__r   Úcollections.abcr   Útypingr   r   Útyping_extensionsr   Úlanggraph._internal._typingr   Úlanggraph.channels.baser	   r
   Úlanggraph.errorsr   r   r   r   Ú__all__r   ÚtuplerV   r   © r!   r   Ú<module>rŒ      sq   ðÝ "å $ß å "å /ß 6÷ó ð 0€ô:�˜‘ ¨E°5¸%Ð,?Ñ @ô :ôzF;ØˆE�N�K  u¨e°E¸4°KÑ.@Ð @ÑAõF;r!   