Ë
    Ü_Ëiôq  ã                  ó¨  — d Z ddlmZ ddlZddlZddlZddlmZ ddlm	Z	 ddl
mZmZmZmZmZmZmZ ddl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mZ ddlm Z 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/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6 ddl7m8Z8 ddl9m:Z:m;Z; ddl<m=Z= ddl>m?Z? erddl@mAZA ddlBmCZC ddlDmEZE ddlFmGZGmHZHmIZI dZJ G d„ d«      ZKy)z<The bulk write operations interface.

.. versionadded:: 2.7
é    )ÚannotationsN)ÚMutableMapping)Úislice)ÚTYPE_CHECKINGÚAnyÚIteratorÚMappingÚOptionalÚTypeÚUnion)ÚObjectId)ÚRawBSONDocument)Ú_csotÚcommon)Ú	_COMMANDSÚ_DELETE_ALLÚ_merge_commandÚ_raise_bulk_write_errorÚ_Run)Úvalidate_is_document_typeÚvalidate_ok_for_replaceÚvalidate_ok_for_update)ÚConfigurationErrorÚInvalidOperationÚNotPrimaryErrorÚOperationFailure)Ú_RETRYABLE_ERROR_CODES)Ú_COMMAND_LOGGERÚ_CommandStatusMessageÚ
_debug_log)Ú_DELETEÚ_INSERTÚ_UPDATEÚ_BulkWriteContextÚ_convert_exceptionÚ_convert_write_resultÚ_EncryptedBulkWriteContextÚ_randint)ÚReadPreference)ÚClientSessionÚ_validate_session_write_concern)Ú_handle_reauth)ÚWriteConcern)Ú
Collection)ÚMongoClient)Ú
Connection)Ú_DocumentOutÚ_DocumentTypeÚ	_PipelineTc                  ó  — e Zd ZdZ	 	 d	 	 	 	 	 	 	 	 	 	 	 dd„Zedd„«       Zdd„Z	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Z	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Z		 	 d	 	 	 	 	 	 	 	 	 dd„Z
dd	„Zdd
„Ze	 	 	 	 	 	 	 	 	 	 	 	 	 	 d d„«       Z	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d!d„Z	 	 	 	 	 	 	 	 	 	 d"d„Z	 	 	 	 	 	 	 	 	 	 d#d„Z	 d$	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d%d„Z	 	 	 	 	 	 	 	 	 	 d&d„Zd'd„Z	 	 	 	 	 	 	 	 d(d„Z	 	 	 	 	 	 	 	 d(d„Z	 	 	 	 	 	 	 	 d)d„Zy)*Ú_Bulkz'The private guts of the bulk write API.Nc                ó¶  — |j                  |j                  j                  dt        ¬«      ¬«      | _        || _        | j
                  � t        j                  d| j
                  «       || _        || _	        g | _
        d| _        || _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        y)zInitialize a _Bulk instance.Úreplace)Úunicode_decode_error_handlerÚdocument_class)Úcodec_optionsNÚletFT)Úwith_optionsr:   Ú_replaceÚdictÚ
collectionr;   r   r   ÚcommentÚorderedÚopsÚexecutedÚbypass_doc_valÚuses_collationÚuses_array_filtersÚuses_hint_updateÚuses_hint_deleteÚ	uses_sortÚis_retryableÚretryingÚstarted_retryable_writeÚcurrent_runÚnext_runÚis_encrypted)Úselfr?   rA   Úbypass_document_validationr@   r;   s         ú[/var/www/pod-logistic/pod-api/venv/lib/python3.12/site-packages/pymongo/synchronous/bulk.pyÚ__init__z_Bulk.__init__V   sÙ   € ð %×1Ñ1Ø$×2Ñ2×;Ñ;Ø-6Ätð <ó ð 2ó 
ˆŒð
 ˆŒØ�8‰8ÐÜ×,Ñ,¨U°D·H±HÔ=Ø&-ˆŒØˆŒØ8:ˆŒØˆŒØ8ˆÔØ#ˆÔØ"'ˆÔØ %ˆÔØ %ˆÔØˆŒØ ˆÔØˆŒØ',ˆÔ$àˆÔØˆŒØ!ˆÕó    c                ó¦   — | j                   j                  j                  j                  }|r|j                  sd| _        t        S d| _        t        S )NTF)r?   ÚdatabaseÚclientÚ
_encrypterÚ_bypass_auto_encryptionrO   r'   r$   )rP   Ú	encrypters     rR   Úbulk_ctx_classz_Bulk.bulk_ctx_classy   sD   € à—O‘O×,Ñ,×3Ñ3×>Ñ>ˆ	Ù˜Y×>Ò>Ø $ˆDÔÜ-Ð-à %ˆDÔÜ$Ð$rT   c                ó    — t        d|«       t        |t        «      sd|v st        «       |d<   | j                  j                  t        |f«       y)z*Add an insert document to the list of ops.ÚdocumentÚ_idN)r   Ú
isinstancer   r   rB   Úappendr"   )rP   r]   s     rR   Ú
add_insertz_Bulk.add_insertƒ   s=   € ä! *¨hÔ7ä˜8¤_Ô5¸À(Ñ9JÜ&›jˆH�U‰OØ�‰�‰œ (Ð+Õ,rT   c	                óø   — t        |«       |||dœ}	|�||	d<   |�d| _        ||	d<   |�d| _        ||	d<   |�d| _        ||	d<   |�d| _        ||	d<   |rd	| _        | j                  j                  t        |	f«       y)
z8Create an update document and add it to the list of ops.)ÚqÚuÚmultiNÚupsertTÚ	collationÚarrayFiltersÚhintÚsortF)	r   rE   rF   rG   rI   rJ   rB   r`   r#   )
rP   ÚselectorÚupdatere   rf   rg   Úarray_filtersri   rj   Úcmds
             rR   Ú
add_updatez_Bulk.add_update‹   s£   € ô 	˜vÔ&Ø$,°6ÀEÑJˆØÐØ"ˆC�‰MØÐ Ø"&ˆDÔØ(ˆC�ÑØÐ$Ø&*ˆDÔ#Ø"/ˆC�ÑØÐØ$(ˆDÔ!ØˆC�‰KØÐØ!ˆDŒNØˆC�‰KÙà %ˆDÔØ�‰�‰œ #˜Õ'rT   c                óÈ   — t        |«       ||dœ}|�||d<   |�d| _        ||d<   |�d| _        ||d<   |�d| _        ||d<   | j                  j                  t        |f«       y)z8Create a replace document and add it to the list of ops.)rc   rd   Nrf   Trg   ri   rj   )r   rE   rG   rI   rB   r`   r#   )rP   rk   Úreplacementrf   rg   ri   rj   rn   s           rR   Úadd_replacez_Bulk.add_replace¬   s~   € ô 	  Ô,Ø$,°;Ñ?ˆØÐØ"ˆC�‰MØÐ Ø"&ˆDÔØ(ˆC�ÑØÐØ$(ˆDÔ!ØˆC�‰KØÐØ!ˆDŒNØˆC�‰KØ�‰�‰œ #˜Õ'rT   c                ó¨   — ||dœ}|�d| _         ||d<   |�d| _        ||d<   |t        k(  rd| _        | j                  j                  t        |f«       y)z7Create a delete document and add it to the list of ops.)rc   ÚlimitNTrg   ri   F)rE   rH   r   rJ   rB   r`   r!   )rP   rk   rt   rg   ri   rn   s         rR   Ú
add_deletez_Bulk.add_deleteÅ   sa   € ð %-°uÑ=ˆØÐ Ø"&ˆDÔØ(ˆC�ÑØÐØ$(ˆDÔ!ØˆC�‰KØ”KÒà %ˆDÔØ�‰�‰œ #˜Õ'rT   c              #  óÔ   K  — d}t        | j                  «      D ]F  \  }\  }}|€t        |«      }n|j                  |k7  r|–— t        |«      }|j	                  ||«       ŒH |–— y­w)ziGenerate batches of operations, batched by type of
        operation, in the order **provided**.
        N)Ú	enumeraterB   r   Úop_typeÚadd)rP   ÚrunÚidxrx   Ú	operations        rR   Úgen_orderedz_Bulk.gen_orderedÙ   sl   è ø€ ð ˆÜ)2°4·8±8Ó)<ò 	$Ñ%ˆCÑ%�'˜9Øˆ{Ü˜7“m‘Ø—‘ Ò'Ø’	Ü˜7“m�Ø�G‰G�C˜Õ#ð	$ð ‹	ùs   ‚A&A(c              #  óþ   K  — t        t        «      t        t        «      t        t        «      g}t	        | j
                  «      D ]  \  }\  }}||   j                  ||«       Œ |D ]  }|j
                  sŒ|–— Œ y­w)zbGenerate batches of operations, batched by type of
        operation, in arbitrary order.
        N)r   r"   r#   r!   rw   rB   ry   )rP   Ú
operationsr{   rx   r|   rz   s         rR   Úgen_unorderedz_Bulk.gen_unorderedç   st   è ø€ ô œ7“m¤T¬'£]´D¼³MÐBˆ
Ü)2°4·8±8Ó)<ò 	4Ñ%ˆCÑ%�'˜9Ø�wÑ×#Ñ# C¨Õ3ð	4ð ò 	ˆCØ�w‹wØ“	ñ	ùs   ‚A3A=Á6A=c                ó˜  — |||j                   <   t        j                  t        j                  «      rÄt        t        t        j                  |j                  j                  |t        t        |«      «      |j                  |||j                  j                  |j                  j                  |j                  j                   d   |j                  j                   d   |j                  j"                  ¬«       |j$                  r|j'                  |||«       	 |j                  j)                  |||j*                  «      }t,        j,                  j/                  «       |j0                  z
  }t        j                  t        j                  «      rÅt        t        t        j2                  |j                  j                  ||t        t        |«      «      |j                  |||j                  j                  |j                  j                  |j                  j                   d   |j                  j                   d   |j                  j"                  ¬«       |j$                  r|j5                  |||«       |j7                  ||j8                  «       |S # t:        $ �r±}	t,        j,                  j/                  «       |j0                  z
  }t=        |	t>        t@        f«      r|	jB                  }
ntE        |	«      }
t        j                  t        j                  «      rÔt        t        t        jF                  |j                  j                  ||
t        t        |«      «      |j                  |||j                  j                  |j                  j                  |j                  j                   d   |j                  j                   d   |j                  j"                  t=        |	t@        «      ¬«       |j$                  r|jI                  ||
|«       t=        |	t>        t@        f«      r&|j7                  |	jB                  |j8                  «       ‚ d}	~	ww xY w)zCA proxy for SocketInfo.write_command that handles event publishing.r   é   ©ÚmessageÚclientIdÚcommandÚcommandNameÚdatabaseNameÚ	requestIdÚoperationIdÚdriverConnectionIdÚserverConnectionIdÚ
serverHostÚ
serverPortÚ	serviceId©r„   r…   Ú
durationMSÚreplyr‡   rˆ   r‰   rŠ   r‹   rŒ   r�   rŽ   r�   ©r„   r…   r‘   Úfailurer‡   rˆ   r‰   rŠ   r‹   rŒ   r�   rŽ   r�   ÚisServerSideErrorN)%Úfieldr   ÚisEnabledForÚloggingÚDEBUGr    r   ÚSTARTEDÚ_topology_settingsÚ_topology_idÚnextÚiterÚdb_nameÚconnÚidÚserver_connection_idÚaddressÚ
service_idÚpublishÚ_startÚwrite_commandÚcodecÚdatetimeÚnowÚ
start_timeÚ	SUCCEEDEDÚ_succeedÚ_process_responseÚsessionÚ	Exceptionr_   r   r   Údetailsr%   ÚFAILEDÚ_fail)rP   Úbwcrn   Ú
request_idÚmsgÚdocsrW   r’   ÚdurationÚexcr”   s              rR   r§   z_Bulk.write_commandó   s  € ð ˆˆC�I‰I‰Ü×'Ñ'¬¯©Ô6ÜÜÜ-×5Ñ5Ø×2Ñ2×?Ñ?ØÜ ¤ c£›OØ Ÿ[™[Ø$Ø&Ø#&§8¡8§;¡;Ø#&§8¡8×#@Ñ#@ØŸ8™8×+Ñ+¨AÑ.ØŸ8™8×+Ñ+¨AÑ.ØŸ(™(×-Ñ-õð �;Š;Ø�J‰J�s˜J¨Ô-ð5	Ø—H‘H×*Ñ*¨:°s¸C¿I¹IÓFˆEÜ×(Ñ(×,Ñ,Ó.°·±Ñ?ˆHÜ×+Ñ+¬G¯M©MÔ:ÜÜ#Ü1×;Ñ;Ø#×6Ñ6×CÑCØ'ØÜ $¤T¨#£Y£Ø!$§¡Ø(Ø *Ø'*§x¡x§{¡{Ø'*§x¡x×'DÑ'DØ"Ÿx™x×/Ñ/°Ñ2Ø"Ÿx™x×/Ñ/°Ñ2Ø!Ÿh™h×1Ñ1õð  �{Š{Ø—‘˜Z¨°Ô9Ø×$Ñ$ U¨C¯K©KÔ8ð@ ˆøô? ó 	Ü×(Ñ(×,Ñ,Ó.°·±Ñ?ˆHÜ˜#¤Ô1AÐBÔCØ(+¯©‘ä,¨SÓ1�Ü×+Ñ+¬G¯M©MÔ:ÜÜ#Ü1×8Ñ8Ø#×6Ñ6×CÑCØ'Ø#Ü $¤T¨#£Y£Ø!$§¡Ø(Ø *Ø'*§x¡x§{¡{Ø'*§x¡x×'DÑ'DØ"Ÿx™x×/Ñ/°Ñ2Ø"Ÿx™x×/Ñ/°Ñ2Ø!Ÿh™h×1Ñ1Ü&0°Ô6FÓ&Gõð$ �{Š{Ø—	‘	˜* g¨xÔ8ä˜#¤Ô1AÐBÔCØ×(Ñ(¨¯©°c·k±kÔBØûð=	ús   ÄE5J Ê
Q	ÊF,QÑQ	c                ód  — t        j                  t        j                  «      rÄt	        t         t
        j                  |j                  j                  |t        t        |«      «      |j                  |||j                  j                  |j                  j                  |j                  j                  d   |j                  j                  d   |j                  j                   ¬«       |j"                  r|j%                  |||«      }	 |j                  j'                  ||«      }t(        j(                  j+                  «       |j,                  z
  }	|�t/        |j0                  ||«      }
nìddi}
t        j                  t        j                  «      rÅt	        t         t
        j2                  |j                  j                  |	|
t        t        |«      «      |j                  |||j                  j                  |j                  j                  |j                  j                  d   |j                  j                  d   |j                  j                   ¬«       |j"                  r|j5                  ||
|	«       |S # t6        $ �r¯}t(        j(                  j+                  «       |j,                  z
  }	t9        |t:        «      r"t/        |j0                  ||j<                  «      }n(t9        |t>        «      r|j<                  }ntA        |«      }t        j                  t        j                  «      rÔt	        t         t
        jB                  |j                  j                  |	|t        t        |«      «      |j                  |||j                  j                  |j                  j                  |j                  j                  d   |j                  j                  d   |j                  j                   t9        |t:        «      ¬«       |j"                  r!|j,                  €J ‚|jE                  |||	«       ‚ d}~ww xY w)zAA proxy for Connection.unack_write that handles event publishing.r   r‚   rƒ   NÚokr�   r“   )#r   r—   r˜   r™   r    r   rš   r›   rœ   r�   rž   rŸ   r    r¡   r¢   r£   r¤   r¥   r¦   Úunack_writer©   rª   r«   r&   Únamer¬   r­   r°   r_   r   r±   r   r%   r²   r³   )rP   r´   rn   rµ   r¶   Úmax_doc_sizer·   rW   Úresultr¸   r’   r¹   r”   s                rR   r¼   z_Bulk.unack_writeI  s  € ô ×'Ñ'¬¯©Ô6ÜÜÜ-×5Ñ5Ø×2Ñ2×?Ñ?ØÜ ¤ c£›OØ Ÿ[™[Ø$Ø&Ø#&§8¡8§;¡;Ø#&§8¡8×#@Ñ#@ØŸ8™8×+Ñ+¨AÑ.ØŸ8™8×+Ñ+¨AÑ.ØŸ(™(×-Ñ-õð �;Š;Ø—*‘*˜S *¨dÓ3ˆCð8	Ø—X‘X×)Ñ)¨#¨|Ó<ˆFÜ×(Ñ(×,Ñ,Ó.°·±Ñ?ˆHØÐ!Ü-¨c¯h©h¸¸VÓD‘ð ˜q˜	�Ü"×/Ñ/´·±Ô>ÜÜ'Ü 5× ?Ñ ?Ø!'×!:Ñ!:×!GÑ!GØ#+Ø#Ü$(¬¨c«£OØ%(§[¡[Ø",Ø$.Ø+.¯8©8¯;©;Ø+.¯8©8×+HÑ+HØ#&§8¡8×#3Ñ#3°AÑ#6Ø#&§8¡8×#3Ñ#3°AÑ#6Ø"%§(¡(×"5Ñ"5õð  �{Š{Ø—‘˜Z¨°Ô9ð> ˆøô= ó 	Ü×(Ñ(×,Ñ,Ó.°·±Ñ?ˆHÜ˜#Ô/Ô0Ü(=¸c¿h¹hÈÈSÏ[É[Ó(Y‘Ü˜C¤Ô1ØŸ+™+‘ä,¨SÓ1�Ü×+Ñ+¬G¯M©MÔ:ÜÜ#Ü1×8Ñ8Ø#×6Ñ6×CÑCØ'Ø#Ü $¤T¨#£Y£Ø!$§¡Ø(Ø *Ø'*§x¡x§{¡{Ø'*§x¡x×'DÑ'DØ"Ÿx™x×/Ñ/°Ñ2Ø"Ÿx™x×/Ñ/°Ñ2Ø!Ÿh™h×1Ñ1Ü&0°Ô6FÓ&Gõð" �{Š{Ø—~‘~Ð1Ð1Ð1Ø—	‘	˜* g¨xÔ8Øûð;	ús   ÄE,I6 É6
P/Ê F*P*Ð*P/c           	     ó$  — | j                   rV|j                  ||«      \  }}}|j                  j                  |j                  |t        d¬«      |j                  |¬«       |S |j                  ||«      \  }}	}| j                  ||||	d||«       |S )Nr   )Úw)Úwrite_concernr¯   rW   )rO   Úbatch_commandr    r†   rŸ   r-   r¯   r¼   )
rP   r´   rn   rB   rW   Ú_Úbatched_cmdÚto_sendrµ   r¶   s
             rR   Ú_execute_batch_unackz_Bulk._execute_batch_unack¡  sœ   € ð ×ÒØ&)×&7Ñ&7¸¸SÓ&AÑ#ˆAˆ{˜GØ�H‰H×ÑØ—‘ØÜ*¨QÔ/ØŸ™Øð ô ð  ˆð (+×'8Ñ'8¸¸cÓ'BÑ$ˆJ˜˜Wð ×Ñ˜S # z°3¸¸7ÀFÔKàˆrT   c                ó*  — | j                   rX|j                  ||«      \  }}}|j                  j                  |j                  ||j
                  |j                  |¬«      }||fS |j                  ||«      \  }	}
}| j                  |||	|
||«      }||fS )N)r:   r¯   rW   )rO   rÃ   r    r†   rŸ   r¨   r¯   r§   )rP   r´   rn   rB   rW   rÄ   rÅ   rÆ   r¿   rµ   r¶   s              rR   Ú_execute_batchz_Bulk._execute_batch¼  s¥   € ð ×ÒØ&)×&7Ñ&7¸¸SÓ&AÑ#ˆAˆ{˜GØ—X‘X×%Ñ%Ø—‘ØØ!Ÿi™iØŸ™Øð &ó ˆFð �wˆÐð (+×'8Ñ'8¸¸cÓ'BÑ$ˆJ˜˜WØ×'Ñ'¨¨S°*¸cÀ7ÈFÓSˆFà�wˆÐrT   c	           
     ó®  — | j                   j                  j                  }	| j                   j                  j                  }
|
j                  }| j
                  st        |«      | _        d | _        | j
                  }|j                  |
|«       d}|�rC| j                  st        |d «      | _        | j                  €d}t        |j                     }| j                  |	||||||j                  | j                   j                  «      }|j                  t        |j                   «      k  �r‚|r+t        |j                   «      |j                  z
  dk(  r|xs |}|| j                   j                  d| j"                  i}| j$                  r| j$                  |d<   t'        j(                  ||«       | j*                  �| j*                  |d<   | j,                  �'|j                  t.        t0        fv r| j,                  |d<   |rG|r#| j2                  s|j5                  «        d| _        |j7                  ||t8        j:                  |«       |j=                  |||
«       |j?                  |«       |jA                  |
|«       tC        |j                   |j                  d «      }|jD                  r°| jG                  ||||
«      \  }}|jI                  di «      }|jI                  d	d
«      tJ        v r8tM        jN                  |«      }tQ        |||j                  |«       tS        |«       tQ        |||j                  |«       d| _	        d| _        | j"                  rd|v rnV| jU                  ||||
«      }|xj                  t        |«      z  c_        |j                  t        |j                   «      k  r�Œ‚| j"                  r|d   ry | j                  x| _        }|r�ŒBy y )NFTr‚   rA   r@   ÚbypassDocumentValidationr;   ÚwriteConcernErrorÚcoder   ÚwriteErrors)+r?   rV   r½   rW   Ú_event_listenersrM   r�   rN   Úvalidate_sessionrK   r   rx   r[   r:   Ú
idx_offsetÚlenrB   rA   r@   r   Úapply_write_concernrD   r;   r!   r#   rL   Ú_start_retryable_writeÚ	_apply_tor)   ÚPRIMARYÚsend_cluster_timeÚadd_server_apiÚapply_timeoutr   ÚacknowledgedrÉ   Úgetr   ÚcopyÚdeepcopyr   r   rÇ   )rP   Ú	generatorrÂ   r¯   r    Úop_idÚ	retryableÚfull_resultÚfinal_write_concernrŸ   rW   Ú	listenersrz   Úlast_runÚcmd_namer´   rn   rB   r¿   rÆ   ÚwceÚfulls                         rR   Ú_execute_commandz_Bulk._execute_commandÒ  s;  € ð —/‘/×*Ñ*×/Ñ/ˆØ—‘×)Ñ)×0Ñ0ˆØ×+Ñ+ˆ	à×ÒÜ# I›ˆDÔØ ˆDŒMØ×Ñˆð 	×Ñ˜f gÔ.ØˆâØ—=’=Ü $ Y°Ó 5�”Ø—=‘=Ð(Ø#�Hä  §¡Ñ-ˆHØ×%Ñ%ØØØØØØØ—‘Ø—‘×-Ñ-ó	ˆCð —.‘.¤3 s§w¡w£<Ó/ñ ¤ S§W¡W£°·±Ñ!>À1Ò DØ$7Ò$H¸=�Mà §¡×!5Ñ!5°yÀ$Ç,Á,ÐO�Ø—<’<Ø%)§\¡\�C˜	‘NÜ×)Ñ)¨#¨}Ô=Ø×&Ñ&Ð2Ø6:×6IÑ6I�CÐ2Ñ3Ø—8‘8Ð'¨C¯K©K¼GÄWÐ;MÑ,MØ!%§¡�C˜‘JÙñ !¨×)EÒ)EØ×6Ñ6Ô8Ø7;˜Ô4Ø×%Ñ% c¨9´n×6LÑ6LÈdÔSØ×&Ñ& s¨G°VÔ<Ø×#Ñ# CÔ(à×"Ñ" 6¨3Ô/Ü˜SŸW™W c§n¡n°dÓ;�ð !×-Ò-Ø&*×&9Ñ&9¸#¸sÀCÈÓ&P‘O�F˜Gð !Ÿ*™*Ð%8¸"Ó=�CØ—w‘w˜v qÓ)Ô-CÑCô  $Ÿ}™}¨[Ó9˜Ü& s¨D°#·.±.À&ÔIÜ/°Ô5ä" 3¨°S·^±^ÀVÔLð %*�D”MØ38�DÔ0à—|’|¨¸Ñ(?Øà"×7Ñ7¸¸SÀ#ÀvÓN�Gà—’¤# g£,Ñ.•ðg —.‘.¤3 s§w¡w£<Ô/ðn �|Š| ¨MÒ :Øà%)§]¡]Ð2ˆDÔ˜sõY rT   c           	     ó
  ‡ ‡‡‡‡	— g g dddddg dœŠt        «       Š		 	 	 	 	 	 	 	 dˆˆˆ	ˆ ˆfd„}‰ j                  j                  j                  }|j	                  ‰ j
                  |||‰ ‰	¬«      }‰d   s‰d   rt        ‰«       ‰S )zExecute using write commands.r   ©rÎ   ÚwriteConcernErrorsÚ	nInsertedÚ	nUpsertedÚnMatchedÚ	nModifiedÚnRemovedÚupsertedc           	     ó4   •— ‰j                  ‰‰| |‰|‰«       y ©N)rè   )r¯   r    rà   rá   rÞ   rß   rP   rÂ   s      €€€€€rR   Úretryable_bulkz-_Bulk.execute_command.<locals>.retryable_bulkN  s(   ø€ ð ×!Ñ!ØØØØØØØõrT   )ÚbulkÚoperation_idrÎ   rë   )r¯   úOptional[ClientSession]r    r0   rà   ÚboolÚreturnÚNone)r(   r?   rV   rW   Ú_retryable_writerJ   r   )
rP   rÞ   rÂ   r¯   r|   rô   rW   rÄ   rá   rß   s
   ```     @@rR   Úexecute_commandz_Bulk.execute_command9  s»   ü€ ð Ø"$ØØØØØØñ	
ˆô “
ˆð	Ø,ð	Ø4>ð	ØKOð	à÷	ñ 	ð —‘×)Ñ)×0Ñ0ˆØ×#Ñ#Ø×ÑØØØØØð $ó 
ˆð �}Ò%¨Ð5IÒ)JÜ# KÔ0ØÐrT   c           
     óV  — | j                   j                  j                  }| j                   j                  j                  }|j                  }t        «       }| j                  st        |«      | _        | j                  }|�r(t        |j                     }| j                  |||||d|j                  | j                   j                  «      }	|j                  t        |j                  «      k  r¥|| j                   j                  dddddii}
|j                  |
«       t!        |j                  |j                  d«      }| j#                  |	|
||«      }|xj                  t        |«      z  c_        |j                  t        |j                  «      k  rŒ¥t        |d«      x| _        }|r�Œ'yy)zCExecute write commands with OP_MSG and w=0 writeConcern, unordered.NrA   FÚwriteConcernrÁ   r   )r?   rV   r½   rW   rÏ   r(   rM   r�   r   rx   r[   r:   rÑ   rÒ   rB   rØ   r   rÇ   )rP   r    rÞ   rŸ   rW   rã   rß   rz   rå   r´   rn   rB   rÆ   s                rR   Úexecute_op_msg_no_resultsz_Bulk.execute_op_msg_no_resultsi  s^  € à—/‘/×*Ñ*×/Ñ/ˆØ—‘×)Ñ)×0Ñ0ˆØ×+Ñ+ˆ	Ü“
ˆà×ÒÜ# I›ˆDÔØ×ÑˆâÜ  §¡Ñ-ˆHØ×%Ñ%ØØØØØØØ—‘Ø—‘×-Ñ-ó	ˆCð —.‘.¤3 s§w¡w£<Ò/à˜dŸo™o×2Ñ2Ø˜uØ" S¨! Hð�ð
 ×#Ñ# CÔ(Ü˜SŸW™W c§n¡n°dÓ;�à×3Ñ3°C¸¸cÀ6ÓJ�Ø—’¤# g£,Ñ.•ð —.‘.¤3 s§w¡w£<Ó/ô &*¨)°TÓ%:Ð:ˆDÔ˜sõ1 rT   c           
     ó’   — g g dddddg dœ}t        «       }t        «       }	 | j                  ||d||d||«       y# t        $ r Y yw xY w)zAExecute write commands with OP_MSG and w=0 WriteConcern, ordered.r   rê   NF)r-   r(   rè   r   )rP   r    rÞ   rÂ   rá   Úinitial_write_concernrß   s          rR   Úexecute_command_no_resultsz _Bulk.execute_command_no_resultsŽ  ss   € ð Ø"$ØØØØØØñ	
ˆô !-£ÐÜ“
ˆð	Ø×!Ñ!ØØ%ØØØØØØõ	øô  ò 	Ùð	ús   ¡: º	AÁAc                ó   — | j                   rt        d«      ‚| j                  rt        d«      ‚|xr |j                   }|r&| j                  r|j
                  dk  rt        d«      ‚|r&| j                  r|j
                  dk  rt        d«      ‚|r&| j                  r|j
                  dk  rt        d«      ‚| j                  rt        d	«      ‚| j                  r| j                  |||«      S | j                  ||«      S )
z3Execute all operations, returning no results (w=0).z3Collation is unsupported for unacknowledged writes.z6arrayFilters is unsupported for unacknowledged writes.é	   zPMust be connected to MongoDB 4.4+ to use hint on unacknowledged delete commands.é   zPMust be connected to MongoDB 4.2+ to use hint on unacknowledged update commands.é   zPMust be connected to MongoDB 8.0+ to use sort on unacknowledged update commands.zGCannot set bypass_document_validation with unacknowledged write concern)rE   r   rF   rÚ   rH   Úmax_wire_versionrG   rI   rD   r   rA   r  rÿ   )rP   r    rÞ   rÂ   Úunacks        rR   Úexecute_no_resultsz_Bulk.execute_no_results²  s  € ð ×ÒÜ$Ð%ZÓ[Ð[Ø×"Ò"Ü$Ð%]Ó^Ð^àÒ@ m×&@Ñ&@Ð"@ˆÙ�T×*Ò*¨t×/DÑ/DÀqÒ/HÜ$Øbóð ñ �T×*Ò*¨t×/DÑ/DÀqÒ/HÜ$Øbóð ñ �T—^’^¨×(=Ñ(=ÀÒ(BÜ$Øbóð ð ×ÒÜ"ØYóð ð �<Š<Ø×2Ñ2°4¸ÀMÓRÐRØ×-Ñ-¨d°IÓ>Ð>rT   c                ó
  — | j                   st        d«      ‚| j                  rt        d«      ‚d| _        |xs | j                  j                  }t        ||«      }| j                  r| j                  «       }n| j                  «       }| j                  j                  j                  }|j                  s0|j                  ||«      5 }| j                  |||«       	 ddd«       y| j                  ||||«      S # 1 sw Y   yxY w)zExecute operations.zNo operations to executez*Bulk operations can only be executed once.TN)rB   r   rC   r?   rÂ   r+   rA   r}   r€   rV   rW   rÚ   Ú_conn_for_writesr	  rü   )rP   rÂ   r¯   r|   rÞ   rW   Ú
connections          rR   Úexecutez_Bulk.executeÕ  sì   € ð �xŠxÜ"Ð#=Ó>Ð>Ø�=Š=Ü"Ð#OÓPÐPØˆŒØ%ÒF¨¯©×)FÑ)FˆÜ1°'¸=ÓIˆà�<Š<Ø×(Ñ(Ó*‰Ià×*Ñ*Ó,ˆIà—‘×)Ñ)×0Ñ0ˆØ×)Ò)Ø×(Ñ(¨°)Ó<ð À
Ø×'Ñ'¨
°I¸}ÔMØ÷ð ð ×'Ñ'¨	°=À'È9ÓUÐU÷	ð ús   ÃC9Ã9D)NN)r?   zCollection[_DocumentType]rA   rø   rQ   úOptional[bool]r@   zOptional[str]r;   zOptional[Any]rù   rú   )rù   zType[_BulkWriteContext])r]   r1   rù   rú   )NNNN)rk   úMapping[str, Any]rl   z#Union[Mapping[str, Any], _Pipeline]re   rø   rf   r  rg   úOptional[Mapping[str, Any]]rm   z!Optional[list[Mapping[str, Any]]]ri   ú Union[str, dict[str, Any], None]rj   r  rù   rú   )NNN)rk   r  rq   r  rf   r  rg   r  ri   r  rj   r  rù   rú   )
rk   r  rt   Úintrg   r  ri   r  rù   rú   )rù   zIterator[Optional[_Run]])rù   zIterator[_Run])r´   r$   rn   úMutableMapping[str, Any]rµ   r  r¶   Úbytesr·   úlist[Mapping[str, Any]]rW   úMongoClient[Any]rù   údict[str, Any])r´   r$   rn   r  rµ   r  r¶   r  r¾   r  r·   r  rW   r  rù   r  )
r´   ú4Union[_BulkWriteContext, _EncryptedBulkWriteContext]rn   r  rB   r  rW   r  rù   r  )
r´   r  rn   r  rB   r  rW   r  rù   z.tuple[dict[str, Any], list[Mapping[str, Any]]]ró   )rÞ   úIterator[Any]rÂ   r-   r¯   r÷   r    r0   rß   r  rà   rø   rá   r  râ   zOptional[WriteConcern]rù   rú   )
rÞ   r  rÂ   r-   r¯   r÷   r|   Ústrrù   r  )r    r0   rÞ   r  rù   rú   )r    r0   rÞ   r  rÂ   r-   rù   rú   )rÂ   r-   r¯   r÷   r|   r  rù   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__rS   Úpropertyr[   ra   ro   rr   ru   r}   r€   r,   r§   r¼   rÇ   rÉ   rè   rü   rÿ   r  r	  r  © rT   rR   r5   r5   S   sÇ  „ Ù1ð "&Ø!ð!"à-ð!"ð ð!"ð %3ð	!"ð
 ð!"ð ð!"ð 
ó!"ðF ò%ó ð%ó-ð 26Ø;?Ø15Ø,0ð(à#ð(ð 4ð(ð ð	(ð
 ð(ð /ð(ð 9ð(ð /ð(ð *ð(ð 
ó(ðL 26Ø15Ø,0ð(à#ð(ð 'ð(ð ð	(ð
 /ð(ð /ð(ð *ð(ð 
ó(ð: 26Ø15ð(à#ð(ð ð(ð /ð	(ð
 /ð(ð 
ó(ó(ó
ð ðSàðSð &ðSð ð	Sð
 ðSð &ðSð !ðSð 
òSó ðSðjVàðVð &ðVð ð	Vð
 ðVð ðVð &ðVð !ðVð 
%óVðpàAðð ðð %ð	ð
 !ðð 
!óð6àAðð ðð %ð	ð
 !ðð 
8óð> 7;ðe3à ðe3ð $ðe3ð )ð	e3ð
 ðe3ð ðe3ð ðe3ð .ðe3ð 4ðe3ð 
óe3ðN.à ð.ð $ð.ð )ð	.ð
 ð.ð 
ó.ó`#;ðJ"àð"ð !ð"ð $ð	"ð
 
ó"ðH!?àð!?ð !ð!?ð $ð	!?ð
 
ó!?ðFVà#ðVð )ðVð ð	Vð
 
ôVrT   r5   )Lr  Ú
__future__r   rÜ   r©   r˜   Úcollections.abcr   Ú	itertoolsr   Útypingr   r   r   r	   r
   r   r   Úbson.objectidr   Úbson.raw_bsonr   Úpymongor   r   Úpymongo.bulk_sharedr   r   r   r   r   Úpymongo.commonr   r   r   Úpymongo.errorsr   r   r   r   Úpymongo.helpers_sharedr   Úpymongo.loggerr   r   r    Úpymongo.messager!   r"   r#   r$   r%   r&   r'   r(   Úpymongo.read_preferencesr)   Ú"pymongo.synchronous.client_sessionr*   r+   Úpymongo.synchronous.helpersr,   Úpymongo.write_concernr-   Úpymongo.synchronous.collectionr.   Ú pymongo.synchronous.mongo_clientr/   Úpymongo.synchronous.poolr0   Úpymongo.typingsr1   r2   r3   Ú_IS_SYNCr5   r   rT   rR   ú<module>r7     s£   ðñõ #ã Û Û Ý *Ý ÷÷ ñ õ #Ý )ß !÷õ ÷ñ ÷
ó õ :ß MÑ M÷	÷ 	ó 	õ 4ß ]Ý 6Ý .áÝ9Ý<Ý3ßFÑFà€÷\
Vò \
VrT   