§
    ™ŠtjÅ+  ã                  óè   — d Z ddlm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
mZmZ ddlmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ  ede¬¦  «        Zdd„Z G d„ de¦  «        Z dd„Z!dd„Z"dS )z7Utilities for batching operations in a background task.é    )ÚannotationsN)ÚCallableÚIterable)ÚAnyÚLiteralÚTypeVar)ÚNOT_PROVIDEDÚ	BaseStoreÚGetOpÚItemÚListNamespacesOpÚMatchConditionÚNamespacePathÚNotProvidedÚOpÚPutOpÚResultÚ
SearchItemÚSearchOpÚ_ensure_refreshÚ_ensure_ttlÚ_validate_namespaceÚF)ÚboundÚfuncÚreturnc                óH   ‡ — t          j        ‰ ¦  «        dˆ fd„¦   «         }|S )	NÚstoreÚAsyncBatchedBaseStoreÚargsr   Úkwargsr   c                óê   •— ‰j         }	 t          j        ¦   «         }|| j        u r2|r	d|› d|› d�nd}t          j        d| j        j         › d|› d�¦  «        ‚n# t          $ r Y nw xY w ‰| g|¢R i |¤ŽS )NzSpecifically, replace `store.z(...)` with `await store.az(...)zBFor example, replace `store.get(...)` with `await store.aget(...)`zSynchronous calls to z– detected in the main event loop. This can lead to deadlocks or performance issues. Please use the asynchronous interface for main thread operations. ú )Ú__name__ÚasyncioÚget_running_loopÚ_loopÚInvalidStateErrorÚ	__class__ÚRuntimeError)r   r    r!   Úmethod_nameÚcurrent_loopÚreplacement_strr   s         €úX/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/langgraph/store/base/batch.pyÚwrapperz_check_loop.<locals>.wrapper"   sß   ø€ àœ=ˆð	Ý"Ô3Ñ5Ô5ˆLØ˜uœ{Ð*Ð*ð #ð^Ðm°KÐmÐmÐ[fÐmÐmÐmÐmà]ð  õ
 Ô/ð*¨E¬OÔ,Dð *ð *ð 'ð*ð *ð *ñô ð ð +øõ ð 	ð 	ð 	ØˆDð	øøøàˆt�EÐ+˜DÐ+Ð+Ð+ FÐ+Ð+Ð+s   ŠAA Á
A&Á%A&)r   r   r    r   r!   r   r   r   )Ú	functoolsÚwraps)r   r/   s   ` r.   Ú_check_loopr2   !   s=   ø€ Ý„_�TÑÔð,ð ,ð ,ð ,ð ,ñ Ôð,ð( €Nó    c                  óH  ‡ — e Zd ZdZdZd:ˆ fd„Zd:d„Zd:d„Zdd	œd;d„Zddddddœd<d„Z		 d=e
dœd>d&„Zd?d'„Zdddd(dd)œd@d0„ZedAd4„¦   «         Zedd	œd;d5„¦   «         Zeddddddœd<d6„¦   «         Ze	 d=e
dœd>d7„¦   «         Zed?d8„¦   «         Zedddd(dd)œd@d9„¦   «         Zˆ xZS )Br   z2Efficiently batch operations in a background task.)r'   Ú_aqueueÚ_taskr   ÚNonec                óÞ   •— t          ¦   «                              ¦   «          t          j        ¦   «         | _        t          j        ¦   «         | _        d | _        |                      ¦   «          d S ©N)	ÚsuperÚ__init__r%   r&   r'   ÚQueuer5   r6   Ú_ensure_task)Úselfr)   s    €r.   r;   zAsyncBatchedBaseStore.__init__?   sU   ø€ Ý‰Œ×ÒÑÔÐÝÔ-Ñ/Ô/ˆŒ
ÝAHÄÁÄˆŒØ*.ˆŒ
Ø×ÒÑÔÐÐÐr3   c                ón   — 	 | j         r| j                              ¦   «          d S d S # t          $ r Y d S w xY wr9   )r6   Úcancelr*   ©r>   s    r.   Ú__del__zAsyncBatchedBaseStore.__del__F   sW   € ð	ØŒzð $Ø”
×!Ò!Ñ#Ô#Ð#Ð#Ð#ð$ð $øåð 	ð 	ð 	ØˆDˆDð	øøøs   ‚ & ¦
4³4c                óÒ   — | j         �| j                              ¦   «         rF| j                             t	          | j        t          j        | ¦  «        ¦  «        ¦  «        | _         dS dS )z1Ensure the background processing loop is running.N)r6   Údoner'   Úcreate_taskÚ_runr5   ÚweakrefÚrefrA   s    r.   r=   z"AsyncBatchedBaseStore._ensure_taskM   sT   € àŒ:Ð ¤§¢Ñ!2Ô!2ÐØœ×/Ò/µ°T´\Å7Ä;ÈtÑCTÔCTÑ0UÔ0UÑVÔVˆDŒJˆJˆJð Ðr3   N©Úrefresh_ttlÚ	namespaceútuple[str, ...]ÚkeyÚstrrJ   úbool | NoneúItem | Nonec             ƒ  óî   K  — |                       ¦   «          | j                             ¦   «         }| j                             |t          ||t          | j        |¦  «        ¬¦  «        f¦  «         |ƒ d {V —†S ©NrI   )r=   r'   Úcreate_futurer5   Ú
put_nowaitr   r   Ú
ttl_config)r>   rK   rM   rJ   Úfuts        r.   ÚagetzAsyncBatchedBaseStore.agetR   sŠ   è è € ð 	×ÒÑÔÐØŒj×&Ò&Ñ(Ô(ˆØŒ×ÒàÝØØÝ /°´ÀÑ MÔ Mðñ ô ðñ		
ô 		
ð 		
ð ˆyˆyˆyˆyˆyˆyÐr3   é
   r   ©ÚqueryÚfilterÚlimitÚoffsetrJ   Únamespace_prefixrZ   ú
str | Noner[   údict[str, Any] | Noner\   Úintr]   úlist[SearchItem]c            ƒ  óô   K  — |                       ¦   «          | j                             ¦   «         }| j                             |t          |||||t          | j        |¦  «        ¬¦  «        f¦  «         |ƒ d {V —†S rR   )r=   r'   rS   r5   rT   r   r   rU   )r>   r^   rZ   r[   r\   r]   rJ   rV   s           r.   ÚasearchzAsyncBatchedBaseStore.asearchg   s“   è è € ð 	×ÒÑÔÐØŒj×&Ò&Ñ(Ô(ˆØŒ×ÒàÝØ$ØØØØÝ /°´ÀÑ MÔ Mðñ ô ð
ñ	
ô 	
ð 	
ð ˆyˆyˆyˆyˆyˆyÐr3   ©ÚttlÚvalueúdict[str, Any]Úindexú!Literal[False] | list[str] | Nonerf   úfloat | None | NotProvidedc             ƒ  ó  K  — |                       ¦   «          t          |¦  «         | j                             ¦   «         }| j                             |t          ||||t          | j        |¦  «        ¬¦  «        f¦  «         |ƒ d {V —†S )Nre   )	r=   r   r'   rS   r5   rT   r   r   rU   )r>   rK   rM   rg   ri   rf   rV   s          r.   ÚaputzAsyncBatchedBaseStore.aputƒ   s›   è è € ð 	×ÒÑÔÐÝ˜IÑ&Ô&Ð&ØŒj×&Ò&Ñ(Ô(ˆØŒ×ÒàÝØ˜s E¨5µkÀ$Ä/ÐSVÑ6WÔ6Wðñ ô ðñ	
ô 	
ð 	
ð ˆyˆyˆyˆyˆyˆyÐr3   c              ƒ  óÆ   K  — |                       ¦   «          | j                             ¦   «         }| j                             |t          ||d ¦  «        f¦  «         |ƒ d {V —†S r9   )r=   r'   rS   r5   rT   r   )r>   rK   rM   rV   s       r.   ÚadeletezAsyncBatchedBaseStore.adelete™   sf   è è € ð
 	×ÒÑÔÐØŒj×&Ò&Ñ(Ô(ˆØŒ×Ò ¥e¨I°s¸DÑ&AÔ&AÐ BÑCÔCÐCØˆyˆyˆyˆyˆyˆyÐr3   éd   ©ÚprefixÚsuffixÚ	max_depthr\   r]   rr   úNamespacePath | Noners   rt   ú
int | Noneúlist[tuple[str, ...]]c             ƒ  ó„  K  — |                       ¦   «          | j                             ¦   «         }g }|r$|                     t	          d|¬¦  «        ¦  «         |r$|                     t	          d|¬¦  «        ¦  «         t          t          |¦  «        |||¬¦  «        }| j                             ||f¦  «         |ƒ d {V —†S )Nrr   )Ú
match_typeÚpathrs   )Úmatch_conditionsrt   r\   r]   )	r=   r'   rS   Úappendr   r   Útupler5   rT   )	r>   rr   rs   rt   r\   r]   rV   r{   Úops	            r.   Úalist_namespacesz&AsyncBatchedBaseStore.alist_namespaces£   sÞ   è è € ð 	×ÒÑÔÐØŒj×&Ò&Ñ(Ô(ˆØÐØð 	VØ×#Ò#¥N¸hÈVÐ$TÑ$TÔ$TÑUÔUÐUØð 	VØ×#Ò#¥N¸hÈVÐ$TÑ$TÔ$TÑUÔUÐUåÝ"Ð#3Ñ4Ô4ØØØð	
ñ 
ô 
ˆð 	Œ×Ò  b 	Ñ*Ô*Ð*ØˆyˆyˆyˆyˆyˆyÐr3   ÚopsúIterable[Op]úlist[Result]c                ó€   — t          j        |                      |¦  «        | j        ¦  «                             ¦   «         S r9   )r%   Úrun_coroutine_threadsafeÚabatchr'   Úresult)r>   r€   s     r.   ÚbatchzAsyncBatchedBaseStore.batch½   s/   € åÔ/°·²¸CÑ0@Ô0@À$Ä*ÑMÔM×TÒTÑVÔVÐVr3   c               ó†   — t          j        |                      |||¬¦  «        | j        ¦  «                             ¦   «         S )N)rM   rJ   )r%   r„   rW   r'   r†   )r>   rK   rM   rJ   s       r.   ÚgetzAsyncBatchedBaseStore.getÁ   s;   € õ Ô/Ø�IŠI�i S°kˆIÑBÔBÀDÄJñ
ô 
ç
Š&‰(Œ(ð	r3   c         
     óŒ   — t          j        |                      ||||||¬¦  «        | j        ¦  «                             ¦   «         S )NrY   )r%   r„   rd   r'   r†   )r>   r^   rZ   r[   r\   r]   rJ   s          r.   ÚsearchzAsyncBatchedBaseStore.searchÍ   sS   € õ Ô/Ø�LŠLØ ØØØØØ'ð ñ ô ð ŒJñ

ô 

÷ Š&‰(Œ(ð
	r3   c               óÒ   — t          |¦  «         t          j        |                      ||||t	          | j        |¦  «        ¬¦  «        | j        ¦  «                             ¦   «          d S )N)rM   rg   ri   rf   )r   r%   r„   rm   r   rU   r'   r†   )r>   rK   rM   rg   ri   rf   s         r.   ÚputzAsyncBatchedBaseStore.putå   sk   € õ 	˜IÑ&Ô&Ð&ÝÔ(Ø�IŠIØØØØÝ ¤°Ñ5Ô5ð ñ ô ð ŒJñ		
ô 		
÷ Š&‰(Œ(ˆ(ˆ(ˆ(r3   c                óˆ   — t          j        |                      ||¬¦  «        | j        ¦  «                             ¦   «          d S )N)rM   )r%   r„   ro   r'   r†   )r>   rK   rM   s      r.   ÚdeletezAsyncBatchedBaseStore.deleteû   s:   € õ 	Ô(Ø�LŠL˜¨ˆLÑ,Ô,¨d¬jñ	
ô 	
ç
Š&‰(Œ(ˆ(ˆ(ˆ(r3   c          	     óŠ   — t          j        |                      |||||¬¦  «        | j        ¦  «                             ¦   «         S )Nrq   )r%   r„   r   r'   r†   )r>   rr   rs   rt   r\   r]   s         r.   Úlist_namespacesz%AsyncBatchedBaseStore.list_namespaces  sR   € õ Ô/Ø×!Ò!ØØØ#ØØð "ñ ô ð ŒJñ	
ô 	
÷ Š&‰(Œ(ð		r3   )r   r7   )rK   rL   rM   rN   rJ   rO   r   rP   )r^   rL   rZ   r_   r[   r`   r\   ra   r]   ra   rJ   rO   r   rb   r9   )rK   rL   rM   rN   rg   rh   ri   rj   rf   rk   r   r7   )rK   rL   rM   rN   r   r7   )rr   ru   rs   ru   rt   rv   r\   ra   r]   ra   r   rw   )r€   r�   r   r‚   )r$   Ú
__module__Ú__qualname__Ú__doc__Ú	__slots__r;   rB   r=   rW   rd   r	   rm   ro   r   r2   r‡   r‰   r‹   r�   r�   r‘   Ú__classcell__)r)   s   @r.   r   r   :   sY  ø€ € € € € Ø<Ð<à-€Iðð ð ð ð ð ðð ð ð ðWð Wð Wð Wð $(ðð ð ð ð ð ð4 !Ø(,ØØØ#'ðð ð ð ð ð ðB 48ðð +7ðð ð ð ð ð ð,ð ð ð ð (,Ø'+Ø $ØØðð ð ð ð ð ð4 ðWð Wð Wñ „[ðWð ð $(ð	ð 	ð 	ð 	ð 	ñ „[ð	ð ð !Ø(,ØØØ#'ðð ð ð ð ñ „[ðð. ð 48ðð +7ðð ð ð ð ñ „[ðð* ðð ð ñ „[ðð ð (,Ø'+Ø $ØØðð ð ð ð ñ „[ðð ð ð ð r3   r   Úvaluesúlist[Op]ú!tuple[list[int] | None, list[Op]]c                ó*  — t          | ¦  «        dk    rdt          | ¦  «        fS g }g }i }| D �]b}t          |t          t          t
          f¦  «        rq	 |                     |                     |¦  «        ¦  «         ŒO# t          $ r: |                     t          |¦  «        ¦  «         |                     |¦  «         Y Œ’w xY wt          |t          ¦  «        r€|j
        |j        f}||v r#||         }|||<   |                     |¦  «         Œàt          |¦  «        ||<   |                     t          |¦  «        ¦  «         |                     |¦  «         �Œ+|                     t          |¦  «        ¦  «         |                     |¦  «         �Œd||fS )a  Dedupe operations while preserving order for results.

    Args:
        values: List of operations to dedupe

    Returns:
        Tuple of (listen indices, deduped operations)
        where listen indices map deduped operation results back to original positions
    é   N)ÚlenÚlistÚ
isinstancer   r   r   r|   ri   Ú
ValueErrorr   rK   rM   )r—   ÚdeduppedÚlistenÚputsr~   ÚputkeyÚixs          r.   Ú_dedupe_opsr¥     s—  € õ ˆ6�{„{�aÒÐØ•T˜&‘\”\Ð!Ð!à€HØ€FØ35€Dàð  ñ  ˆÝ�b�5¥(Õ,<Ð=Ñ>Ô>ð 	 ð$Ø—’˜hŸnšn¨RÑ0Ô0Ñ1Ô1Ð1Ð1øÝð $ð $ð $Ø—’�c (™mœmÑ,Ô,Ð,Ø—’ Ñ#Ô#Ð#Ð#Ð#ð$øøøõ ˜�EÑ"Ô"ð 	 Ø”l B¤FÐ+ˆFØ˜ˆ~ˆ~à˜&”\�Ø!�˜‘Ø—’˜bÑ!Ô!Ð!Ð!å" 8™}œ}��V‘Ø—’�c (™mœmÑ,Ô,Ð,Ø—’ Ñ#Ô#Ð#Ñ#ð �MŠM�#˜h™-œ-Ñ(Ô(Ð(Ø�OŠO˜BÑÔÐÑà�8ÐÐs   Á(A<Á<AC Â?C Úaqueueú(asyncio.Queue[tuple[asyncio.Future, Op]]r   ú weakref.ReferenceType[BaseStore]r7   c              ƒ  ó�  ‡K  — |                       ¦   «         ƒ d {V —†x}�r¥|d                              ¦   «         rŒ8 |¦   «         x}�r\	 |g}	 |                      ¦   «         x}rF|d                              ¦   «         rŒ1|                     |¦  «         |                      ¦   «         x}°Fn# t          j        $ r Y nw xY wd„ |D ¦   «         }d„ |D ¦   «         }	 t          |¦  «        \  }}|                     |¦  «        ƒ d {V —†Š|�ˆfd„|D ¦   «         Št          |‰d¬¦  «        D ].\  }	}
|	                     ¦   «         s|	 	                    |
¦  «         Œ/nE# t          $ r8}|D ]+}	|	                     ¦   «         s|	                     |¦  «         Œ,Y d }~nd }~ww xY w~n# ~w xY wd S |                       ¦   «         ƒ d {V —†x}�°£d S d S )Nr   c                ó   — g | ]
}|d          ‘ŒS )r   © ©Ú.0Úitems     r.   ú
<listcomp>z_run.<locals>.<listcomp>\  s   € Ð2Ð2Ð2 D˜˜QœÐ2Ð2Ð2r3   c                ó   — g | ]
}|d          ‘ŒS )r›   r«   r¬   s     r.   r¯   z_run.<locals>.<listcomp>]  s   € Ð4Ð4Ð4 d˜$˜qœ'Ð4Ð4Ð4r3   c                ó    •— g | ]
}‰|         ‘ŒS r«   r«   )r­   r¤   Úresultss     €r.   r¯   z_run.<locals>.<listcomp>c  s   ø€ Ð"@Ð"@Ð"@°2 7¨2¤;Ð"@Ð"@Ð"@r3   F)Ústrict)r‰   rD   Ú
get_nowaitr|   r%   Ú
QueueEmptyr¥   r…   ÚzipÚ
set_resultÚ	ExceptionÚset_exception)r¦   r   r®   ÚsÚitemsÚfutsr—   r¡   r    rV   r†   Úer²   s               @r.   rF   rF   F  s}  øè è € ð Ÿ
š
™œÐ$Ð$Ð$Ð$Ð$Ð$Ð
$ˆ$ñ )à�Œ7�<Š<‰>Œ>ð 	Øà�‘”ˆ<ˆ1ñ $	ð!à˜�ðØ"(×"3Ò"3Ñ"5Ô"5Ð5˜$ð +à œ7Ÿ<š<™>œ>ð %Ø$ØŸš TÑ*Ô*Ð*ð	 #)×"3Ò"3Ñ"5Ô"5Ð5˜$ð +øøõ
 Ô)ð ð ð Ø�Dðøøøð 3Ð2¨EÐ2Ñ2Ô2�Ø4Ð4¨eÐ4Ñ4Ô4�ð1Ý'2°6Ñ':Ô':Ñ$�F˜HØ$%§H¢H¨XÑ$6Ô$6Ð6Ð6Ð6Ð6Ð6Ð6�GØÐ)Ø"@Ð"@Ð"@Ð"@¸Ð"@Ñ"@Ô"@˜õ (+¨4°ÀÐ'GÑ'GÔ'Gð 3ð 3™˜˜Và"Ÿxšx™zœzð 3ØŸNšN¨6Ñ2Ô2Ð2øð3øõ !ð 1ð 1ð 1Ø#ð 1ð 1˜à"Ÿxšx™zœzð 1Ø×-Ò-¨aÑ0Ô0Ð0øð1ð 1ð 1ð 1ð 1øøøøð1øøøð �Aø�A����àˆEðS Ÿ
š
™œÐ$Ð$Ð$Ð$Ð$Ð$Ð
$ˆ$ñ )ð )ð )ð )ð )s\   Á
F ÁAB+ Â*F Â+B=Â:F Â<B=Â=F ÃA>E ÅF Å
FÅ".FÆF ÆFÆF ÆF")r   r   r   r   )r—   r˜   r   r™   )r¦   r§   r   r¨   r   r7   )#r”   Ú
__future__r   r%   r0   rG   Úcollections.abcr   r   Útypingr   r   r   Úlanggraph.store.baser	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r2   r   r¥   rF   r«   r3   r.   ú<module>rÂ      sµ  ðØ =Ð =à "Ð "Ð "Ð "Ð "Ð "à €€€Ø Ð Ð Ð Ø €€€Ø .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ø (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ð (ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð& €GˆC�xÐ Ñ Ô €ðð ð ð ð2^ð ^ð ^ð ^ð ^˜Iñ ^ô ^ð ^ðB(ð (ð (ð (ðV-ð -ð -ð -ð -ð -r3   