ó
    ýÞ jÅ+  ã                  óæ   • S r SSKJr  SSKrSSKrSSKrSSKJrJr  SSK	J
r
JrJr  SSKJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJr  \" S\S9rSS	 jr " S
 S\5      r SS jr!      SS jr"g)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)Úboundc                óJ   ^ • [         R                  " T 5      SU 4S jj5       nU$ )Nc                ó$  >• TR                   n [        R                  " 5       nX@R                  L aC  U(       a	  SU SU S3OSn[        R                  " SU R
                  R                    SU S35      e T" U /UQ70 UD6$ ! [         a     Nf = f)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)ÚstoreÚargsÚkwargsÚmethod_nameÚcurrent_loopÚreplacement_strÚfuncs         €ÚT/var/www/html/gaurav/venv/lib/python3.13/site-packages/langgraph/store/base/batch.pyÚwrapperÚ_check_loop.<locals>.wrapper"   s»   ø€ àŸ=™=ˆð	Ü"×3Ò3Ó5ˆLØŸ{™{Ò*ö #ð 4°K°=Ð@ZÐ[fÐZgÐglÑmà]ð  ô
 ×/Ò/Ø+¨E¯O©O×,DÑ,DÐ+Eð FYð 'Ð' qð*óð ð +ñ �EÐ+˜DÒ+ FÑ+Ð+øô ó 	Ùð	ús   �A&B Â
BÂB)r%   ÚAsyncBatchedBaseStorer&   r   r'   r   Úreturnr   )Ú	functoolsÚwraps)r+   r-   s   ` r,   Ú_check_loopr3   !   s%   ø€ Ü‡_‚_�TÓö,ó ð,ð( €Nó    c                  ó  ^ • \ rS rSrSrSrSU 4S jjrSS jrSS jrSS.       SS	 jjr	SSS
SSS.             SS jjr
 S\S.           SS jjjr      S S jrSSSSSS.           S!S jjr\S"S j5       r\SS.       SS jj5       r\SSS
SSS.             SS jj5       r\ S\S.           SS jjj5       r\      S S j5       r\SSSSSS.           S!S jj5       rSrU =r$ )#r/   é:   z2Efficiently batch operations in a background task.)r!   Ú_aqueueÚ_taskc                ó¸   >• [         TU ]  5         [        R                  " 5       U l        [        R
                  " 5       U l        S U l        U R                  5         g ©N)	ÚsuperÚ__init__r   r    r!   ÚQueuer7   r8   Ú_ensure_task)Úselfr#   s    €r,   r<   ÚAsyncBatchedBaseStore.__init__?   s>   ø€ Ü‰ÑÔÜ×-Ò-Ó/ˆŒ
ÜAHÇÂÃˆŒØ*.ˆŒ
Ø×ÑÕr4   c                ó~   •  U R                   (       a  U R                   R                  5         g g ! [         a     g f = fr:   )r8   Úcancelr$   ©r?   s    r,   Ú__del__ÚAsyncBatchedBaseStore.__del__F   s5   € ð	Ø�z�zØ—
‘
×!Ñ!Õ#ð øäó 	Ùð	ús   ‚+/ ¯
<»<c                óî   • U R                   b  U R                   R                  5       (       aI  U R                  R                  [	        U R
                  [        R                  " U 5      5      5      U l         gg)z1Ensure the background processing loop is running.N)r8   Údoner!   Úcreate_taskÚ_runr7   ÚweakrefÚrefrC   s    r,   r>   Ú"AsyncBatchedBaseStore._ensure_taskM   sK   € à�:‰:Ñ §¡§¡×!2Ñ!2ØŸ™×/Ñ/´°T·\±\Ä7Ç;Â;ÈtÓCTÓ0UÓVˆD�Jð "3r4   N©Úrefresh_ttlc             ƒ  óê   #   • U R                  5         U R                  R                  5       nU R                  R	                  U[        UU[        U R                  U5      S945        UI S h  v•N $  N7f©NrM   )r>   r!   Úcreate_futurer7   Ú
put_nowaitr   r   Ú
ttl_config)r?   Ú	namespaceÚkeyrN   Úfuts        r,   ÚagetÚAsyncBatchedBaseStore.agetR   sg   é € ð 	×ÑÔØ�j‰j×&Ñ&Ó(ˆØ�‰×ÑàÜØØÜ /°·±ÀÓ Mñðô		
ð �yÐ‰yùs   ‚A*A3Á,A1Á-A3é
   r   ©ÚqueryÚfilterÚlimitÚoffsetrN   c            ƒ  óð   #   • U R                  5         U R                  R                  5       nU R                  R	                  U[        UUUUU[        U R                  U5      S945        UI S h  v•N $  N7frP   )r>   r!   rQ   r7   rR   r   r   rS   )r?   Únamespace_prefixr[   r\   r]   r^   rN   rV   s           r,   ÚasearchÚAsyncBatchedBaseStore.asearchg   sp   é € ð 	×ÑÔØ�j‰j×&Ñ&Ó(ˆØ�‰×ÑàÜØ$ØØØØÜ /°·±ÀÓ Mñð
ô	
ð �yÐ‰yùs   ‚A-A6Á/A4Á0A6©Úttlc             ƒ  ó   #   • U R                  5         [        U5        U R                  R                  5       nU R                  R                  U[        XX4[        U R                  U5      S945        UI S h  v•N $  N7f)Nrc   )	r>   r   r!   rQ   r7   rR   r   r   rS   )r?   rT   rU   ÚvalueÚindexrd   rV   s          r,   ÚaputÚAsyncBatchedBaseStore.aputƒ   sn   é € ð 	×ÑÔÜ˜IÔ&Ø�j‰j×&Ñ&Ó(ˆØ�‰×ÑàÜØ E´kÀ$Ç/Á/ÐSVÓ6Wñðô	
ð �yÐ‰yùs   ‚A5A>Á7A<Á8A>c              ƒ  óÄ   #   • U R                  5         U R                  R                  5       nU R                  R	                  U[        XS 5      45        UI S h  v•N $  N7fr:   )r>   r!   rQ   r7   rR   r   )r?   rT   rU   rV   s       r,   ÚadeleteÚAsyncBatchedBaseStore.adelete™   sM   é € ð
 	×ÑÔØ�j‰j×&Ñ&Ó(ˆØ�‰×Ñ ¤e¨I¸DÓ&AÐ BÔCØ�yÐ‰yùs   ‚AA ÁAÁA éd   ©ÚprefixÚsuffixÚ	max_depthr]   r^   c             ƒ  ó\  #   • U R                  5         U R                  R                  5       n/ nU(       a  UR                  [	        SUS95        U(       a  UR                  [	        SUS95        [        [        U5      UUUS9nU R                  R                  Xh45        UI S h  v•N $  N7f)Nro   )Ú
match_typeÚpathrp   )Úmatch_conditionsrq   r]   r^   )	r>   r!   rQ   Úappendr   r   Útupler7   rR   )	r?   ro   rp   rq   r]   r^   rV   ru   Úops	            r,   Úalist_namespacesÚ&AsyncBatchedBaseStore.alist_namespaces£   s—   é € ð 	×ÑÔØ�j‰j×&Ñ&Ó(ˆØÐÞØ×#Ñ#¤N¸hÈVÑ$TÔUÞØ×#Ñ#¤N¸hÈVÑ$TÔUäÜ"Ð#3Ó4ØØØñ	
ˆð 	�‰×Ñ  	Ô*Ø�yÐ‰yùs   ‚B#B,Â%B*Â&B,c                ó~   • [         R                  " U R                  U5      U R                  5      R	                  5       $ r:   )r   Úrun_coroutine_threadsafeÚabatchr!   Úresult)r?   Úopss     r,   ÚbatchÚAsyncBatchedBaseStore.batch½   s+   € ä×/Ò/°·±¸CÓ0@À$Ç*Á*ÓM×TÑTÓVÐVr4   c               ó|   • [         R                  " U R                  XUS9U R                  5      R	                  5       $ )N)rU   rN   )r   r|   rW   r!   r~   )r?   rT   rU   rN   s       r,   ÚgetÚAsyncBatchedBaseStore.getÁ   s4   € ô ×/Ò/Ø�I‰I�i°kˆIÐBÀDÇJÁJó
ç
‰&‹(ð	r4   c              ó„   • [         R                  " U R                  UUUUUUS9U R                  5      R	                  5       $ )NrZ   )r   r|   ra   r!   r~   )r?   r`   r[   r\   r]   r^   rN   s          r,   ÚsearchÚAsyncBatchedBaseStore.searchÍ   sL   € ô ×/Ò/Ø�L‰LØ ØØØØØ'ð ð ð �J‰Jó

÷ ‰&‹(ð
	r4   c               óÂ   • [        U5        [        R                  " U R                  UUUU[	        U R
                  U5      S9U R                  5      R                  5         g )N)rU   rf   rg   rd   )r   r   r|   rh   r   rS   r!   r~   )r?   rT   rU   rf   rg   rd   s         r,   ÚputÚAsyncBatchedBaseStore.putå   sW   € ô 	˜IÔ&Ü×(Ò(Ø�I‰IØØØØÜ §¡°Ó5ð ð ð �J‰Jó		
÷ ‰&�(r4   c                ó|   • [         R                  " U R                  XS9U R                  5      R	                  5         g )N)rU   )r   r|   rk   r!   r~   )r?   rT   rU   s      r,   ÚdeleteÚAsyncBatchedBaseStore.deleteû   s-   € ô 	×(Ò(Ø�L‰L˜ˆLÐ,¨d¯j©jó	
ç
‰&�(r4   c          
     ó‚   • [         R                  " U R                  UUUUUS9U R                  5      R	                  5       $ )Nrn   )r   r|   ry   r!   r~   )r?   ro   rp   rq   r]   r^   s         r,   Úlist_namespacesÚ%AsyncBatchedBaseStore.list_namespaces  sK   € ô ×/Ò/Ø×!Ñ!ØØØ#ØØð "ð ð �J‰Jó	
÷ ‰&‹(ð		r4   )r7   r!   r8   )r0   ÚNone)rT   útuple[str, ...]rU   ÚstrrN   úbool | Noner0   zItem | None)r`   r’   r[   z
str | Noner\   zdict[str, Any] | Noner]   Úintr^   r•   rN   r”   r0   zlist[SearchItem]r:   )rT   r’   rU   r“   rf   zdict[str, Any]rg   z!Literal[False] | list[str] | Nonerd   zfloat | None | NotProvidedr0   r‘   )rT   r’   rU   r“   r0   r‘   )ro   úNamespacePath | Nonerp   r–   rq   z
int | Noner]   r•   r^   r•   r0   zlist[tuple[str, ...]])r   zIterable[Op]r0   zlist[Result])r   Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú	__slots__r<   rD   r>   rW   ra   r	   rh   rk   ry   r3   r€   rƒ   r†   r‰   rŒ   r�   Ú__static_attributes__Ú__classcell__)r#   s   @r,   r/   r/   :   s  ø† Ù<à-€I÷ôôWð $(ñà"ðð ðð
 !ðð 
õð4 !Ø(,ØØØ#'ñà)ðð
 ðð &ðð ðð ðð !ðð 
õðB 48ðð +7ñà"ðð ðð ð	ð
 1ðð (ðð 
öð,à"ðð ðð 
ô	ð (,Ø'+Ø $ØØñð %ðð %ð	ð
 ðð ðð ðð 
õð4 óWó ðWð ð $(ñ	à"ð	ð ð	ð
 !ð	ð 
ô	ó ð	ð ð !Ø(,ØØØ#'ñà)ðð
 ðð &ðð ðð ðð !ðð 
ôó ðð. ð 48ðð +7ñà"ðð ðð ð	ð
 1ðð (ðð 
õó ðð* ðà"ðð ðð 
ó	ó ðð ð (,Ø'+Ø $ØØñð %ðð %ð	ð
 ðð ðð ðð 
ôó ör4   r/   c                óÂ  • [        U 5      S::  a  S[        U 5      4$ / n/ n0 nU  Hø  n[        U[        [        [
        45      (       a#   UR                  UR                  U5      5        MF  [        U[        5      (       ar  UR                  UR                  4nXS;   a  X5   nXAU'   UR                  U5        M“  [        U5      X5'   UR                  [        U5      5        UR                  U5        MÍ  UR                  [        U5      5        UR                  U5        Mú     X!4$ ! [         a0    UR                  [        U5      5        UR                  U5         GM8  f = f)zô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   rv   rg   Ú
ValueErrorr   rT   rU   )ÚvaluesÚdeduppedÚlistenÚputsrx   ÚputkeyÚixs          r,   Ú_dedupe_opsrª     s'  € ô ˆ6ƒ{�aÓØ”T˜&“\Ð!Ð!à€HØ€FØ35€DãˆÜ�bœ5¤(Ô,<Ð=×>Ñ>ð$Ø—‘˜hŸn™n¨RÓ0Ö1ô ˜œE×"Ñ"Ø—l‘l B§F¡FÐ+ˆFØ‹~à‘\�Ø!˜‘Ø—‘˜bÖ!ä" 8›}�‘Ø—‘œc (›mÔ,Ø—‘ Ö#ð �M‰Mœ#˜h›-Ô(Ø�O‰O˜BÖñ+ ð. ÐÐøô' ó $Ø—‘œc (›mÔ,Ø—‘ ×#Ð#ð$ús   Á	 D$Ä$5EÅEc              ƒ  óâ  #   • U R                  5       I S h  v•N =n(       GaM  US   R                  5       (       a  M:  U" 5       =n(       Ga    U/n U R                  5       =n(       aD  US   R                  5       (       a  M1  UR                  U5        U R                  5       =n(       a  MD  U Vs/ sH  o"S   PM	     nnU Vs/ sH  o"S   PM	     nn [        U5      u  pxUR                  U5      I S h  v•N n	Ub  U V
s/ sH  o©U
   PM	     n	n
[        XYSS9 H-  u  p¼UR                  5       (       a  M  UR                  U5        M/     AOg U R                  5       I S h  v•N =n(       a  GML  g g  GN[! [        R
                   a     NÞf = fs  snf s  snf  N£s  sn
f ! [         a;  nU H+  nUR                  5       (       a  M  UR                  U5        M-      S nAN•S nAff = f! Af = f NŒ7f)Nr   rŸ   F)Ústrict)rƒ   rG   Ú
get_nowaitrv   r   Ú
QueueEmptyrª   r}   ÚzipÚ
set_resultÚ	ExceptionÚset_exception)Úaqueuer%   ÚitemÚsÚitemsÚfutsr¤   r¦   r¥   Úresultsr©   rV   r~   Úes                 r,   rI   rI   F  sº  é € ð Ÿ
™
›×$Ð
$ˆ$Ö
$à�‰7�<‰<�>‰>Ùá“ˆ<ˆ1Ž<ð!à˜�ðØ"(×"3Ñ"3Ó"5Ð5˜$Õ5à ™7Ÿ<™<Ÿ>™>Ù$ØŸ™ TÔ*ð	 #)×"3Ñ"3Ó"5Ð5˜$×5ñ -2Ó2©E D˜Qœ©E�Ð2Ù.3Ó4©e d˜qœ'©e�Ð4ð1Ü'2°6Ó':Ñ$�FØ$%§H¡H¨XÓ$6×6�GØÑ)Ù9?Ó"@¹°2¨2¤;¹˜Ð"@ô (+¨4ÀÔ'G™˜à"Ÿx™xŸz›zØŸN™N¨6Ö2ñ (Hñ àðS Ÿ
™
›×$Ð
$ˆ$×
$Ò
$Ò$øô ×)Ñ)ó Ùðüò 3ùÚ4ñ 7ùâ"@øô !ó 1Û#˜à"Ÿx™xŸz›zØ×-Ñ-¨aÖ0ö  $ûð1ûñ úñO %ùsÊ   ‚G/–E1—5G/ÁG' ÁAE4 Â,G' Â0FÂ=G' ÃFÃG' Ã!F Ã4FÃ5F Ä FÄ$F Ä5F Å
G/Å G-Å!G/Å/G/Å4FÆG' Æ
FÆG' ÆF ÆF Æ
G$Æ)GÇGÇG' ÇG$Ç$G' Ç'G*Ç*G/)r+   r   r0   r   )r¤   zlist[Op]r0   z!tuple[list[int] | None, list[Op]])r³   z(asyncio.Queue[tuple[asyncio.Future, Op]]r%   z weakref.ReferenceType[BaseStore]r0   r‘   )#rš   Ú
__future__r   r   r1   rJ   Ú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   r3   r/   rª   rI   © r4   r,   Ú<module>r¿      s}   ðÙ =å "ã Û Û ß .ß (Ñ (÷÷ ÷ ÷ ó ñ& ˆC�xÑ €ôô2^˜Iô ^ôB(ðV-Ø4ð-à+ð-ð 
õ-r4   