+
    8i                      a  0 t $ R t^ RIHt ^ RIt^ RIt^ RIt^ RIHt	 ^ RI
HtHtHtHtHtHtHtHtHt ^ RIt^ RIHtHtHt ^ RIHt ^ RIHtHtHtHt ^ RIH t  ^ R	I!H"t"  ^ R
I#H$t$ Rt%^ RI'H(t(H)t)H*t*H+t+H,t,H-t-H.t.H/t/ ^ RI0H1t1H2t2 ]'       d   ^ RI3H4t4H5t5H6t6 ^ RI7H8t8 ^ RI9H:t:H;t;H<t<H=t=H>t> Rt?Rt@RtA^ tB^tC^tDRtERtFRtGRtHRtIRtJRtK]BR]CR]DR/tLRRR R!R"R#R$R%/tM]! R&R'7      tNR(]OR)&   R* R+ ltPR, R- ltQR. R/ ltRR0 R1 ltSR2 R3 ltTR4^R5^R6^R7^ R8^/tUR9R:R;R<R=R>R?R@RARBRCRDRERFRGRHRIRJRKRLRMRLRNRO/tVRRP RQ lltWRR RS ltX]P                  ! RT4      P                  t[^t\RU RV lt]]P                  ! RW4      P                  t^RX RY lt_]P                  ! RZ4      P                  t`]P                  ! R[4      P                  ta]P                  ! R\4      P                  tbR] R^ ltcR_ R` ltdRa Rb lte]%'       d   ]$P                  teRRc Rd lltfRe Rf ltgRg Rh lthRi Rj lti]%'       d   ]$P                  tiRRk Rl lltk]P                  ! Rm4      P                  tlRn Ro ltmRp Rq ltnRr Rs lto]%'       d   ]$P                  toRRt Ru lltq]BRv]CRw]DRx/tr ! Ry Rz4      ts ! R{ R|]s4      tt ! R} R~]t4      tuR R ltvRtwR R ltxR R lty]%'       d   ]$P                  tyR R ltzR R lt{]%'       d   ]$P                  t{R R lt| ! R R]s4      t}Rt~R R ltR R ltR R ltR R ltR R ltR R ltR R lt]%'       d   ]$EP
                  tR R lt ! R R4      t ! R R4      t]EP                  ]EP                  ]EP                  ]EP                  /tR]OR&    ! R R4      t ! R R4      t ! R R]4      t ! R R]4      t ! R R]]R3,          4      tR#   ]& d    Rt% ELmi ; i)zTools for creating `messages
<https://www.mongodb.com/docs/manual/reference/mongodb-wire-protocol/>`_ to be sent to
MongoDB.

.. note:: This module is for internal use and is generally not needed by
   application developers.
)annotationsN)BytesIO)	TYPE_CHECKINGAnyCallableIterableMappingMutableMappingNoReturnOptionalUnion)CodecOptions_dict_to_bson_make_c_string)Int64)_RAW_ARRAY_BSON_OPTIONSDEFAULT_RAW_BSON_OPTIONSRawBSONDocument_inflate_bson)HelloCompat)_EventListeners)	_cmessageTF)ConfigurationErrorCursorNotFoundDocumentTooLargeExecutionTimeoutInvalidOperationNotPrimaryErrorOperationFailureProtocolError)ReadPreference_ServerMode)SnappyContextZlibContextZstdContext)ReadConcern)_Address_AgnosticClientSession_AgnosticConnection_AgnosticMongoClient_DocumentOutii?             s            s           s       s   documents     s   updates     s   deletes     insert	documentsupdateupdatesdeletedeletes	bulkWriteopsreplace)unicode_decode_error_handlerzCodecOptions[Mapping[str, Any]]_UNICODE_REPLACE_CODEC_OPTIONSc                   V ^8  d   QhRR/#    returnint )formats   "M/var/www/html/photoedit/myenv/lib/python3.14/site-packages/pymongo/message.py__annotate__rB   t   s     0 0# 0r+   c                 @    \         P                  ! \        \        4      # )z(Generate a pseudo random 32 bit integer.)randomrandint	MIN_INT32	MAX_INT32r?   r+   rA   _randintrH   t   s    >>)Y//r+   c               $    V ^8  d   QhRRRRRR/# )r<   specMutableMapping[str, Any]read_preferencer!   r=   r?   )r@   s   "rA   rB   rB   y   s$      
"5@r+   c                    VP                   pVP                  pV'       d?   V\        P                  P                   8w  g   \	        V4      ^8  d   RV 9  d   RV /p W0R&   V # )z-Add $readPreference to spec when appropriate.$query$readPreference)modedocumentr    SECONDARY_PREFERREDlen)rJ   rL   rP   rQ   s   &&  rA   _maybe_add_read_preferencerT   y   s^     D''H ;;@@@CMTUDU4d#D"*Kr+   c                    V ^8  d   QhRRRR/# r<   	exception	Exceptionr=   dict[str, Any]r?   )r@   s   "rA   rB   rB      s     O O) O Or+   c                H    R\        V 4      RV P                  P                  /# )z<Convert an Exception into a failure document for publishing.errmsgerrtype)str	__class____name__rW   s   &rA   _convert_exceptionra      s!    c)ni1D1D1M1MNNr+   c                    V ^8  d   QhRRRR/# rV   r?   )r@   s   "rA   rB   rB      s      i N r+   c                `    R\        V 4      RV P                  RV P                  P                  /# )zeConvert an Exception into a failure document for publishing,
for use in client-level bulk write API.
r[   coder\   )r]   rd   r^   r_   r`   s   &rA   _convert_client_bulk_exceptionre      s1    
 	#i.	9&&// r+   c               (    V ^8  d   QhRRRRRRRR/# )r<   	operationr]   commandMapping[str, Any]resultr=   rY   r?   )r@   s   "rA   rB   rB      s,     ! !!.!8I!!r+   c                   VP                  R^ 4      pR^RV/pVP                  RVP                  RR4      4      pV'       dY   VP                  R4      '       d   RVR^@RRR	//VR
&   M3R^ RVP                  R^4      RV/pRV9   d   VR,          VR&   V.VR&   V# V R8X  d   \        VR,          4      VR&   V# V R8X  d   RV9   d   R^ RVR,          /.VR&   V# VP                  R4      RJ dQ   V^8X  dJ   VR,          ^ ,          pVR,          P                  RVR,          P                  R4      4      pR^ RV/.VR&   V# )z6Convert a legacy write result to write command format.nokr[   err wtimeoutrd   errInfoTwriteConcernErrorindexwriteErrorsr/   r0   r1   upserted_idupdatedExistingFr2   uq)getrS   )	rg   rh   rj   affectedresr[   errorr1   rv   s	   &&&      rA   _convert_write_resultr~      sp   
 zz#q!HC
"CZZ&**UB"78F::j!!(0&&"iR\^bQc'dC#$ aFA)>&QEF"#))#4i "'CJHw{+,C J 
h	 'E6*3EFGC
O J ZZ)*e3A Y'*F+//%)?@C 'E378C
OJr+   tailableoplogReplaynoCursorTimeout	awaitDataallowPartialResultsrN   filterz$orderbysortz$hinthintz$commentcommentz$maxScanmaxScanz
$maxTimeMS	maxTimeMSz$maxmaxz$minminz
$returnKey	returnKeyz$showRecordIdshowRecordIdz$showDiskLocz	$snapshotsnapshotc               H    V ^8  d   QhRRRRRRRRR	RR
RRRRRRRRRRRRR/# )r<   collr]   rJ   ri   
projectionz1Optional[Union[Mapping[str, Any], Iterable[str]]]skipr>   limit
batch_sizeOptional[int]optionsread_concernr%   	collationOptional[Mapping[str, Any]]session Optional[_AgnosticClientSession]allow_disk_useOptional[bool]r=   rY   r?   )r@   s   "rA   rB   rB      s     4 4
4
4 B4 	4
 4 4 4 4 +4 .4 #4 4r+   c                $   RV /pRV9   d   TP                  VP                  4        UUu. uF"  w  rV\        9   d   \        V,          V3MW3NK$  	  upp4       RV9   d   VP                  R4       RV9   d   VP                  R4       MWR&   V'       d   W+R&   V'       d   W;R&   V'       d   \	        V4      VR&   V^ 8  d   R	VR
&   V'       d   WE8X  d
   V^,          pW[R&   VP
                  '       d*   V	'       d   V	P                  '       g   VP                  VR&   V'       d   WR&   V
e   WR&   V'       dJ   TP                  \        P                  4        UUu. uF  w  rWm,          '       g   K  VR	3NK  	  upp4       V# u uppi u uppi )z!Generate a find command document.findrN   $explainrO   r   r   r   r   TsingleBatch	batchSizereadConcernr   allowDiskUse)	r1   items
_MODIFIERSpopabslevelin_transactionrQ   _OPTIONS)r   rJ   r   r   r   r   r   r   r   r   r   cmdkeyvalopts   &&&&&&&&&&&    rA   _gen_find_commandr      sk    "4.C4

 !%

 ,HC +.*;C#&#K ,	
 GGJ#GG%&H&LF5zG19!%C !OJ%K7w/E/E/E)22M$K!,N

0@R0@HCGMMKS$K0@RSJGB Ss   (F
F
4F
c               4    V ^8  d   QhRRRRRRRRRRR	R
RR/# )r<   	cursor_idr   r   r]   r   max_await_time_msr   zOptional[Any]connr(   r=   rY   r?   )r@   s   "rA   rB   rB     sN      
  %	
   r+   c                l    RV RV/pV'       d   W&R&   Ve   W6R&   Ve   VP                   ^	8  d   WFR&   V# )z$Generate a getMore command document.getMore
collectionr   r   r   )max_wire_version)r   r   r   r   r   r   r   s   &&&&&& rA   _gen_get_more_commandr     sJ     %itDC%K$,Kt449 IJr+   z<iiiiiiBc               (    V ^8  d   QhRRRRRRRR/# )	r<   rg   r>   databytesctx.Union[SnappyContext, ZlibContext, ZstdContext]r=   tuple[int, bytes]r?   )r@   s   "rA   rB   rB   &  s,     + +++&T++r+   c           
         VP                  V4      p\        4       p\        \        \	        V4      ,           V^ RV \	        V4      VP
                  4      pWEV,           3# )zDTakes message data, compresses it, and adds an OP_COMPRESSED header.i  )compressrH   _pack_compression_header_COMPRESSION_HEADER_SIZErS   compressor_id)rg   r   r   
compressed
request_idheaders   &&&   rA   	_compressr   &  s[     d#JJ% 3z?2	D	F 
***r+   z<iiiic               $    V ^8  d   QhRRRRRR/# )r<   rg   r>   r   r   r=   r   r?   )r@   s   "rA   rB   rB   <  s"      c  3D r+   c                f    \        4       p\        ^\        V4      ,           V^ V 4      pW#V,           3# )zlTakes message data and adds a message header based on the operation.

Returns the resultant message string.
)rH   _pack_headerrS   )rg   r   ridmessages   &&  rA   __pack_messager   <  s0    
 *C2D	>39=G$r+   z<iz<IBz<Bc               0    V ^8  d   QhRRRRRRRRR	R
RR/# )r<   flagsr>   rh   ri   
identifierr]   docs!Optional[list[Mapping[str, Any]]]optsCodecOptions[Any]r=   ztuple[bytes, int, int]r?   )r@   s   "rA   rB   rB   K  sD     4 444 4 ,	4
 4 4r+   c                   \        VRV4      p\        V ^ 4      p\        V4      p^ pV'       d   Ve   \        ^4      p	\	        V4      p
V Uu. uF  p\        VRV4      NK  	  pp\        V
4      \        R V 4       4      ,           ^,           p\        V4      pW},          p\        R V 4       4      pWeWV
.VOpMWe.pRP                  V4      Wx3# u upi )zGet a OP_MSG message.

Note: this method handles multiple documents in a type one payload but
it does not perform batch splitting and the total message size is
only checked *after* generating the entire message.
Fc              3  8   "   T F  p\        V4      x  K  	  R # 5iNrS   .0docs   & rA   	<genexpr>$_op_msg_no_header.<locals>.<genexpr>a  s     !Cls#c((l   c              3  8   "   T F  p\        V4      x  K  	  R # 5ir   r   r   s   & rA   r   r   d  s     <|3s88|r   r+   )	r   _pack_op_msg_flags_typerS   
_pack_byter   sum	_pack_intr   join)r   rh   r   r   r   encoded
flags_type
total_sizemax_doc_sizetype_onecstringr   encoded_docssizeencoded_sizer   s   &&&&&           rA   _op_msg_no_headerr   K  s     GUD1G(2JWJLd&a= ,CGH4Cc5$74H7|c!Cl!CCCaG 
<|<<XWT|T$88D>:33 Is   Cc               4    V ^8  d   QhRRRRRRRRR	R
RRRR/# )r<   r   r>   rh   ri   r   r]   r   r   r   r   r   r   r=   tuple[int, bytes, int, int]r?   )r@   s   "rA   rB   rB   k  sN     / /// / ,	/
 / 
8/ !/r+   c                F    \        WW#V4      w  rgp\        RWe4      w  rWWx3# )zInternal OP_MSG message helper.  )r   r   )
r   rh   r   r   r   r   msgr   max_bson_sizer   s
   &&&&&&    rA   _op_msg_compressedr   k  s1     &7uzY]%^"C]s(HCZ..r+   c               0    V ^8  d   QhRRRRRRRRR	R
RR/# )r<   r   r>   rh   ri   r   r]   r   r   r   r   r=   r   r?   )r@   s   "rA   rB   rB   y  sD     
= 
=
=
= 
= ,	
=
 
= !
=r+   c                F    \        WW#V4      w  rVp\        RV4      w  rWWg3# )z*Internal compressed OP_MSG message helper.r   )r   r   )
r   rh   r   r   r   r   r   r   r   
op_messages
   &&&&&     rA   _op_msg_uncompressedr   y  s2     '8
Z^&_#Dm+D$7J:<<r+   c               4    V ^8  d   QhRRRRRRRRR	R
RRRR/# )r<   r   r>   rh   rK   dbnamer]   rL   zOptional[_ServerMode]r   r   r   4Union[SnappyContext, ZlibContext, ZstdContext, None]r=   r   r?   )r@   s   "rA   rB   rB     sN     ' ''%' ' +	'
 ' 
>' !'r+   c                   W!R&   Ve)   RV9  d"   VP                   '       d   VP                  VR&   \        \        V4      4      p \        V,          pVP                  V4      p V'       d   \        WWxWE4      V'       d   WV&   # # \        WWxV4      V'       d   WV&   # #   \         d    RpRp LNi ; i  T'       d   YT&   i i ; i)zGet a OP_MSG message.$dbNrO   ro   )	rP   rQ   nextiter
_FIELD_MAPr   KeyErrorr   r   )	r   rh   r   rL   r   r   namer   r   s	   &&&&&&   rA   _op_msgr    s     EN"'8'G)8)A)AG%&WD%
{{:&'%ejR "&J  $EJdK "&J   
 "&J s*   B! %B6 -B6 B6 !B32B36Cc               8    V ^8  d   QhRRRRRRRRRRR	R
RRRR/# )r<   r   r>   collection_namer]   num_to_skipnum_to_returnqueryri   field_selectorr   r   r   r=   ztuple[bytes, int]r?   )r@   s   "rA   rB   rB     sX        	
  0  r+   c                   \        VRV4      pV'       d   \        VRV4      pMRp\        \        V4      \        V4      4      p	RP                  \	        V 4      \
        P                  ! V4      \	        V4      \	        V4      VV.4      V	3# )zGet an OP_QUERY message.Fr+   )r   r   rS   r   r   bsonr   )
r   r  r  r	  r
  r  r   r   efsr   s
   &&&&&&&   rA   _query_implr    s     E5$/GNE48Gc#h/M'"##O4+&-(		
 	 r+   c               <    V ^8  d   QhRRRRRRRRRRR	R
RRRRRR/	# )r<   r   r>   r  r]   r  r	  r
  ri   r  r   r   r   r   r   r=   tuple[int, bytes, int]r?   )r@   s   "rA   rB   rB     sb     # ### # 	#
 # 0# # 
8# #r+   c           	     F    \        WW#WEV4      w  r\        RW4      w  rWV	3# )z)Internal compressed query message helper.  )r  r   )r   r  r  r	  r
  r  r   r   op_queryr   r   r   s   &&&&&&&&    rA   _query_compressedr    s6     *+eUYH x-HC]""r+   c               8    V ^8  d   QhRRRRRRRRRRR	R
RRRR/# )r<   r   r>   r  r]   r  r	  r
  ri   r  r   r   r   r=   r  r?   )r@   s   "rA   rB   rB     sX     # ### # 	#
 # 0# # #r+   c           	     F    \        WW#WEV4      w  rx\        RV4      w  rWV3# )zInternal query message helper.r  )r  r   )r   r  r  r	  r
  r  r   r  r   r   r   s   &&&&&&&    rA   _query_uncompressedr    s6     *+eUYH dH-HC]""r+   c               <    V ^8  d   QhRRRRRRRRRRR	R
RRRRRR/	# )r<   r   r>   r  r]   r  r	  r
  ri   r  r   r   r   r   r   r=   r  r?   )r@   s   "rA   rB   rB     sb        	
  0  
> r+   c           
     J    V'       d   \        WW#WEWg4      # \        WW#WEV4      # )zGet a **query** message.)r  r  )r   r  r  r	  r
  r  r   r   s   &&&&&&&&rA   _queryr    s7      k%Y]
 	
 +eUY r+   z<qc               (    V ^8  d   QhRRRRRRRR/# )r<   r  r]   r	  r>   r   r=   r   r?   )r@   s   "rA   rB   rB     s)     	 	C 	 	 	PU 	r+   c                    RP                  \        \        P                  ! V 4      \	        V4      \        V4      .4      # )zGet an OP_GET_MORE message.r+   )r   _ZERO_32r  r   r   _pack_long_longr  r	  r   s   &&&rA   _get_more_implr!    s9    880m$I&		
 r+   c          
     ,    V ^8  d   QhRRRRRRRRRR	/# )
r<   r  r]   r	  r>   r   r   r   r=   r   r?   )r@   s   "rA   rB   rB     sA     [ [[[ [ 
8	[
 [r+   c                0    \        R\        WV4      V4      # )z+Internal compressed getMore message helper.  )r   r!  r  r	  r   r   s   &&&&rA   _get_more_compressedr&    s     T>/)TVYZZr+   c               (    V ^8  d   QhRRRRRRRR/# )r<   r  r]   r	  r>   r   r=   r   r?   )r@   s   "rA   rB   rB     s2     [ [[),[9<[[r+   c                .    \        R\        WV4      4      # )z Internal getMore message helper.r$  )r   r!  r   s   &&&rA   _get_more_uncompressedr)    s     $y YZZr+   c          
     ,    V ^8  d   QhRRRRRRRRRR	/# )
r<   r  r]   r	  r>   r   r   r   r=   r   r?   )r@   s   "rA   rB   rB   (  sA     	M 	M	M	M 	M 
>		M
 	Mr+   c                B    V'       d   \        WW#4      # \        WV4      # )zGet a **getMore** message.)r&  r)  r%  s   &&&&rA   	_get_morer,  (  s!     #OISS!/)LLr+   s
   documents s   updates s   deletes c                      ] tR tRtRtRtR R lt]R R l4       t]R R l4       t	]R	 R
 l4       t
]R R l4       tR R ltR R ltRtR# )_BulkWriteContextBasei>  z]Private base class for wrapping around AsyncConnection to use with write splitting functions.c               8    V ^8  d   QhRRRRRRRRRR	R
RRRRR/# r<   database_namer]   cmd_namer   r(   operation_idr>   	listenersr   r   r   op_typecodecr   r?   )r@   s   "rA   rB   "_BulkWriteContextBase.__annotate__P  sZ        "	
  # 2  !r+   c	                	:   Wn         W0n        W@n        WPn        VP                  V n        W n        \        V P                  ,          V n        \        P                  P                  4       V n        W`n        \        VP                  4      V n        Wpn        Wn        R # r   )db_namer   op_idr4  enabled_for_commandspublishr  r  fielddatetimenow
start_timer   boolcompression_contextr   r5  r6  )	selfr1  r2  r   r3  r4  r   r5  r6  s	   &&&&&&&&&rA   __init___BulkWriteContextBase.__init__P  sq     %	!
" 55			*
"++//1T556
r+   c                   V ^8  d   QhRR/# r;   r?   )r@   s   "rA   rB   r7  i  s     ' 's 'r+   c                .    V P                   P                  # )z#A proxy for SockInfo.max_bson_size.)r   r   rC  s   &rA   r   #_BulkWriteContextBase.max_bson_sizeh  s     yy&&&r+   c                   V ^8  d   QhRR/# r;   r?   )r@   s   "rA   rB   r7  n  s     * *# *r+   c                    V P                   '       d   V P                  P                  ^,
          # V P                  P                  # )z&A proxy for SockInfo.max_message_size.)r   r   max_message_sizerH  s   &rA   rL  &_BulkWriteContextBase.max_message_sizem  s2     ===99--22yy)))r+   c                   V ^8  d   QhRR/# r;   r?   )r@   s   "rA   rB   r7  v  s     . .c .r+   c                .    V P                   P                  # )z*A proxy for SockInfo.max_write_batch_size.)r   max_write_batch_sizerH  s   &rA   rP  *_BulkWriteContextBase.max_write_batch_sizeu  s     yy---r+   c                   V ^8  d   QhRR/# r;   r?   )r@   s   "rA   rB   r7  {  s     " " "r+   c                    V P                   # )z:The maximum size of a BSON command before batch splitting.)r   rH  s   &rA   max_split_size$_BulkWriteContextBase.max_split_sizez  s     !!!r+   c               (    V ^8  d   QhRRRRRRRR/# )	r<   r   r>   replyr*   durationdatetime.timedeltar=   Noner?   )r@   s   "rA   rB   r7    s*     
 
3 
| 
GY 
^b 
r+   c                   V P                   P                  VVV P                  VV P                  P                  V P                  P
                  V P                  V P                  P                  V P                  R7	       R# )z Publish a CommandSucceededEvent.r1  N)	r4  publish_command_successr  r   addressserver_connection_idr:  
service_idr9  )rC  r   rW  rX  s   &&&&rA   _succeed_BulkWriteContextBase._succeed  s^    ..IIIIII**JJII  ,, 	/ 
	
r+   c               (    V ^8  d   QhRRRRRRRR/# )	r<   r   r>   failurer*   rX  rY  r=   rZ  r?   )r@   s   "rA   rB   r7    s*     
 
 
l 
FX 
]a 
r+   c                   V P                   P                  VVV P                  VV P                  P                  V P                  P
                  V P                  V P                  P                  V P                  R7	       R# )zPublish a CommandFailedEvent.r\  N)	r4  publish_command_failurer  r   r^  r_  r:  r`  r9  )rC  r   rd  rX  s   &&&&rA   _fail_BulkWriteContextBase._fail  s^    ..IIIIII**JJII  ,, 	/ 
	
r+   )r6  r   r   r9  r=  r4  r  r:  r5  r<  r   r@  N)r9  r   r:  r  r=  r<  r@  r4  r   r   r5  r6  )r_   
__module____qualname____firstlineno____doc__	__slots__rD  propertyr   rL  rP  rT  ra  rg  __static_attributes__r?   r+   rA   r.  r.  >  sp    gI0 ' ' * * . . " "

 
r+   r.  c                  N   a  ] tR tRtRtR	tR V 3R lltR R ltR R ltR	t	V ;t
# )
_BulkWriteContexti  z]A wrapper around AsyncConnection/Connection for use with the collection-level bulk write API.c               8    V ^8  d   QhRRRRRRRRRR	R
RRRRR/# r0  r?   )r@   s   "rA   rB   _BulkWriteContext.__annotate__  sZ     
 

 
 "	

 
 #
 2
 
 !
r+   c	           
     	4   < \         S	V `  VVVVVVVV4       R # r   superrD  )
rC  r1  r2  r   r3  r4  r   r5  r6  r^   s
   &&&&&&&&&rA   rD  _BulkWriteContext.__init__  s*     			
r+   c               $    V ^8  d   QhRRRRRR/# )r<   r   rK   r   list[Mapping[str, Any]]r=   zAtuple[int, Union[bytes, dict[str, Any]], list[Mapping[str, Any]]]r?   )r@   s   "rA   rB   rs    s$     	( 	(+	(3J	(	J	(r+   c                	    V P                   R ,           p\        W0P                  WV P                  V 4      w  rEpV'       g   \	        R4      hWEV3# ).$cmdcannot do an empty bulk write)r9  _do_batched_op_msgr5  r6  r   )rC  r   r   	namespacer   r   to_sends   &&&    rA   batch_command_BulkWriteContext.batch_command  sN     LL7*	#5||S

D$
 
 "#BCC''r+   c               (    V ^8  d   QhRRRRRRRR/# )r<   r   rK   r   r>   r   ry  r=   r?   )r@   s   "rA   rB   rs    s,      +9<D[	!r+   c           	        W1V P                   &   V P                  P                  VV P                  VV P                  P
                  V P                  P                  V P                  V P                  P                  4       V# )Publish a CommandStartedEvent.)	r=  r4  publish_command_startr9  r   r^  r_  r:  r`  )rC  r   r   r   s   &&&&rA   _start_BulkWriteContext._start  sc     DJJ,,LLIIII**JJII  	
 
r+   r?   r_   ri  rj  rk  rl  rm  rD  r  r  ro  __classcell__r^   s   @rA   rq  rq    s$    gI
 
,	( r+   rq  c                  <    ] tR tRtRtR R lt]R R l4       tRtR# )_EncryptedBulkWriteContexti  c               $    V ^8  d   QhRRRRRR/# )r<   r   rK   r   ry  r=   z3tuple[int, dict[str, Any], list[Mapping[str, Any]]]r?   )r@   s   "rA   rB   '_EncryptedBulkWriteContext.__annotate__  s$     % %+%3J%	<%r+   c                	   V P                   R ,           p\        W0P                  WV P                  V 4      w  rEV'       g   \	        R4      hVP                  R^4      ^	,           p\        \        V4      VR \        4      pRWu3# )r{  r|  r-   N)	r9  _encode_batched_write_commandr5  r6  r   rs   r   
memoryviewr   )rC  r   r   r~  r   r  	cmd_startoutgoings   &&&     rA   r  (_EncryptedBulkWriteContext.batch_command  sz     LL7*	4||S

D
 "#BCC IIgq)A-	 C!<>VW8$$r+   c                   V ^8  d   QhRR/# r;   r?   )r@   s   "rA   rB   r    s     # # #r+   c                    \         # )z Reduce the batch splitting size.)_MAX_SPLIT_SIZE_ENCrH  s   &rA   rT  )_EncryptedBulkWriteContext.max_split_size  s
     #"r+   r?   N)	r_   ri  rj  rk  rm  r  rn  rT  ro  r?   r+   rA   r  r    s     I% # #r+   r  c               (    V ^8  d   QhRRRRRRRR/# )r<   rg   r]   doc_sizer>   max_sizer=   r
   r?   )r@   s   "rA   rB   rB     s.     L L L Ls Lx Lr+   c                T    V R8X  d   \        RW3,          4      h\        V : R24      h)z-Internal helper for raising DocumentTooLarge.r/   zfBSON document too large (%d bytes) - the connected server supports BSON document sizes up to %d bytes.z command document too large)r   )rg   r  r  s   &&&rA   _raise_document_too_larger    s>    H ",-
 	
 ).IJKKr+   i    c               8    V ^8  d   QhRRRRRRRRR	R
RRRRRR/# )r<   rg   r>   rh   ri   r   ry  ackrA  r   r   r   rq  buf_BytesIOr=   #tuple[list[Mapping[str, Any]], int]r?   )r@   s   "rA   rB   rB     sb     A AAA "A 
	A
 A 
A 
A )Ar+   c                   VP                   pVP                  pVP                  p	V'       d   RMRp
VP                  V
4       VP                  R4       VP                  \	        VRV4      4       VP                  R4       VP                  4       pVP                  R4        VP                  \        V ,          4       . p^ pT F  p\	        TRT4      p\        T4      pTP                  4       T,           pT^ 8H  ;'       d    TT	8  pT'       * ;'       d    TT8  pT'       g	   T'       d;   \        \        P                  4       4      T ,          p\        T\        T4      T4       TT	8  d    M7TP                  T4       TP                  T4       T^,          pY8X  g   K   M	  TP                  4       pTP                  T4       TP                  \!        TT,
          4      4       TT3#   \         d    \        R4      Rhi ; i)zCreate a batched OP_MSG write.r.         r-   F   Unknown commandN)r   rP  rL  writer   tell_OP_MSG_MAPr  r   rS   listr  keysr  appendseekr   )rg   rh   r   r  r   r   r  r   rP  rL  r   size_locationr  idxr   value
doc_lengthnew_message_sizedoc_too_largeunacked_doc_too_largewrite_oplengths   &&&&&&&               rA   _batched_op_msg_implr    s    %%M33++#&,?EIIe IIgIImGUD12 IIgHHJMII!"<		+i() G
Cc5$/Z
88:
2qJJ&69I&I %( H HZ--G1JOO-.y9H%hE
MJ..		%sq&1 6 XXZFHH]IIi./0F?I  <01t;<s   "G, ,Hc               4    V ^8  d   QhRRRRRRRRR	R
RRRR/# )r<   rg   r>   rh   ri   r   ry  r  rA  r   r   r   rq  r=   %tuple[bytes, list[Mapping[str, Any]]]r?   )r@   s   "rA   rB   rB   E  sN     # ### "# 
	#
 # 
# +#r+   c           	     Z    \        4       p\        WW#WEV4      w  rxVP                  4       V3# )zGEncode the next batched insert, update, or delete operation
as OP_MSG.
)r  r  getvalue)	rg   rh   r   r  r   r   r  r  _s	   &&&&&&   rA   _encode_batched_op_msgr  E  s/     *C%i$TPSTJG<<>7""r+   c               4    V ^8  d   QhRRRRRRRRR	R
RRRR/# r<   rg   r>   rh   ri   r   ry  r  rA  r   r   r   rq  r=   *tuple[int, bytes, list[Mapping[str, Any]]]r?   )r@   s   "rA   rB   rB   Z  sN     $ $$$ "$ 
	$
 $ 
$ 0$r+   c                    \        WW#WE4      w  rgVP                  P                  f   Q h\        RWeP                  P                  4      w  rWV3# )zUCreate the next batched insert, update, or delete operation
with OP_MSG, compressed.
r   )r  r   rB  r   )
rg   rh   r   r  r   r   r   r  r   r   s
   &&&&&&    rA   _batched_op_msg_compressedr  Z  sM     +9t$TMD88''333dHH,H,HIOJG##r+   c               4    V ^8  d   QhRRRRRRRRR	R
RRRR/# r  r?   )r@   s   "rA   rB   rB   l  sN     / /// "/ 
	/
 / 
/ 0/r+   c           	     f   \        4       pVP                  \        4       VP                  R4       \        WW#WEV4      w  rxVP	                  ^4       \        4       p	VP                  \        V	4      4       VP	                  ^ 4       VP                  \        V4      4       WP                  4       V3# )z"OP_MSG implementation entry point.         )r  r  _ZERO_64r  r  rH   r   r  )
rg   rh   r   r  r   r   r  r  r  r   s
   &&&&&&    rA   _batched_op_msgr  l  s     *C IIhII12*9t$UXYOG HHQKJIIi
#$HHQKIIi ||~w..r+   c               4    V ^8  d   QhRRRRRRRRR	R
RRRR/# )r<   r~  r]   rg   r>   rh   rK   r   ry  r   r   r   rq  r=   r  r?   )r@   s   "rA   rB   rB     sW     E EEE &E "	E
 E 
E 0Er+   c                    V P                  R^4      ^ ,          VR&   RV9   d$   \        VR,          P                  R^4      4      pMRpVP                  P                  '       d   \        WW6WE4      # \        WW6WE4      # )zJCreate the next batched insert, update, or delete operation
using OP_MSG.
.r   writeConcernwT)splitrA  rz   r   rB  r  r  )r~  rg   rh   r   r   r   r  s   &&&&&& rA   r}  r}    st     __S!,Q/GEN 7>*..sA67
xx###))dSS9t$DDr+   c                  N   a  ] tR tRtRtR	tR V 3R lltR R ltR R ltR	t	V ;t
# )
_ClientBulkWriteContexti  zYA wrapper around AsyncConnection/Connection for use with the client-level bulk write API.c               4    V ^8  d   QhRRRRRRRRRR	R
RRR/# )r<   r1  r]   r2  r   r(   r3  r>   r4  r   r   r   r6  r   r?   )r@   s   "rA   rB   $_ClientBulkWriteContext.__annotate__  sP     
 

 
 "	

 
 #
 2
 !
r+   c           
     	4   < \         SV `  VVVVVV^ V4       R# )    Nru  )	rC  r1  r2  r   r3  r4  r   r6  r^   s	   &&&&&&&&rA   rD   _ClientBulkWriteContext.__init__  s*     			
r+   c               (    V ^8  d   QhRRRRRRRR/# )	r<   r   rK   
operations#list[tuple[str, Mapping[str, Any]]]
namespaces	list[str]r=   zZtuple[int, Union[bytes, dict[str, Any]], list[Mapping[str, Any]], list[Mapping[str, Any]]]r?   )r@   s   "rA   rB   r    s3     8 8%8 88 	8
 
d8r+   c                	d    \        WW0P                  V 4      w  rErgV'       g   \        R 4      hWEWg3# )r|  )_client_do_batched_op_msgr6  r   )rC  r   r  r  r   r   to_send_ops
to_send_nss   &&&&    rA   r  %_ClientBulkWriteContext.batch_command  s;     4MZT4
0
 "#BCC77r+   c          
     ,    V ^8  d   QhRRRRRRRRRR/# )	r<   r   rK   r   r>   op_docsry  ns_docsr=   r?   )r@   s   "rA   rB   r    s<      %  )	
 ) 
"r+   c           	         W1R&   WAR&   V P                   P                  VV P                  VV P                  P                  V P                  P
                  V P                  V P                  P                  4       V# )r  r6   nsInfo)r4  r  r9  r   r^  r_  r:  r`  )rC  r   r   r  r  s   &&&&&rA   r  _ClientBulkWriteContext._start  sf     E
H,,LLIIII**JJII  	
 
r+   r?   r  r  s   @rA   r  r    s$    cI
 
*8 r+   r  i  c               0    V ^8  d   QhRRRRRRRRRR	R
R/# )r<   command_encodedr   to_send_ops_encodedzlist[bytes]to_send_ns_encodedr  rA  r  r  r=   r>   r?   )r@   s   "rA   rB   rB     sD     - --$- $- 
	-
 
- 	-r+   c                >   V'       d   R MRpVP                  V4       VP                  R4       VP                  V 4       VP                  R4       VP                  4       pVP                  R 4       VP                  R4       V F  pVP                  V4       K  	  VP                  4       pVP                  4       p	VP                  V4       VP                  \        W,
          4      4       VP                  V4       VP                  R4       VP                  4       pVP                  R 4       VP                  R4       V F  p
VP                  V
4       K  	  VP                  4       p	VP                  V4       VP                  \        W,
          4      4       V	# )r.   r  r-   r  s   ops s   nsInfo )r  r  r  r   )r  r  r  r  r  r   r  
op_encodedresume_locationr  
ns_encodeds   &&&&&      rA   _client_construct_op_msgr    s9    $',?EIIe IIgIIo IIgHHJMII!"IIj)
		* *hhjOXXZFHH]IIi./0HH_ IIgHHJMII!"IIm(
		* ) XXZFHH]IIi./0Mr+   c               8    V ^8  d   QhRRRRRRRRR	R
RRRRRR/# )r<   rh   ri   r  r  r  r  r  rA  r   r   r   r  r  r  r=   z<tuple[list[Mapping[str, Any]], list[Mapping[str, Any]], int]r?   )r@   s   "rA   rB   rB     sc     s+ s+s+3s+ s+ 
	s+
 s+ 
!s+ 
s+ Bs+r+   c                   R R lpVP                   pVP                  p	VP                  p
\        V RV4      pV'       g   V! R\	        V4      V\
        ,           4       . ROpV P                  R4      '       d   VP                  R4       V P                  R4      '       d   VP                  R4       V P                  R4      '       d   VP                  R4       V Uu/ uF  qW,          bK  	  pp\	        \        VRV4      4      pV
\        V,           ,
          p/ p. p. p. p. p^ p^ p^ p\        W4       EF  w  w  pppTpVR8X  d0   V'       g(   \	        \        VR	,          RV4      4      pV! VVV4       VR
8X  d2   RpV'       g(   \	        \        VR,          RV4      4      pV! VVV4       Rp^ pVV9  d   RV/p\	        V4      p V VV&   VV,          VV&   \        VRV4      p!\	        V!4      p"V'       d   \        VRV4      p#\	        V#4      pV'       g   V! VV"V\
        ,           4       VV,           V",           V,           p$V$V8  d"   V^ 8X  d   \        VV"V\
        ,           4        MuVP                  V4       VP                  V!4       VV",          pV'       d,   VP                  V4       VP                  X#4       VV,          pV^,          pVV	8X  g   EK   M	  \        VVVW64      p%VVV%3# u upi )z:Create a batched OP_MSG write for client-level bulk write.c               (    V ^8  d   QhRRRRRRRR/# )r<   r5  r]   r  r>   r   r=   rZ  r?   )r@   s   "rA   rB   1_client_batched_op_msg_impl.<locals>.__annotate__  s6     @ @@@ @ 
	@r+   c                .    W8  d   \        WV4       R # R # r   )r  )r5  r  r   s   &&&rA   _check_doc_size_limits;_client_batched_op_msg_impl.<locals>._check_doc_size_limits  s    
 %g? r+   Fr5   bypassDocumentValidationr   letr/   rQ   r7   r1   
updateModsNns)r5   
errorsOnlyordered)r   rP  rL  r   rS   _COMMAND_OVERHEADrz   r  _OP_MSG_OVERHEADzipr  r  )&rh   r  r  r  r   r   r  r  r   rP  rL  r  abridged_keysr   command_abridgedcommand_len_abridgedmax_doc_sequences_bytesns_infor  r  r  r  total_ops_lengthtotal_ns_lengthr  real_op_typeop_docr~  r5  r  ns_doc	ns_lengthnew_ns_indexop_doc_encoded	op_lengthns_doc_encodedr  r  s&   &&&&&&&                               rA   _client_batched_op_msg_implr    s   @ %%M33++#GUD9O {C,@-RcBcd ;M{{-..78{{9Y'{{5U#5BC]cW\)]C}-=udKL /2BEY2YZG+-K*,J')&(O
C-0-H)v	8#}VJ-?MN&|X}M9$G}VL-A5$OP&|X}M	G#I&Fz?L!-GI "),w 'vud;'	*65$?NN+I "7I}GX7XY+o=	IIU55ax)'9mN_>_` 	6""">2I%f%%%n5y(Oq &&q .Iv &,.@#F 
F**] Ds   K7c               4    V ^8  d   QhRRRRRRRRR	R
RRRR/# )r<   rh   ri   r  r  r  r  r  rA  r   r   r   r  r=   z>tuple[bytes, list[Mapping[str, Any]], list[Mapping[str, Any]]]r?   )r@   s   "rA   rB   rB     sO     3 3333 3 
	3
 3 
!3 D3r+   c           	     \    \        4       p\        WW#WEV4      w  rxp	VP                  4       Wx3# )zDEncode the next batched client-level bulkWrite
operation as OP_MSG.
)r  r  r  )
rh   r  r  r  r   r   r  r  r  r  s
   &&&&&&    rA   _client_encode_batched_op_msgr    s6     *C!<Zd"KQ <<>;22r+   c               4    V ^8  d   QhRRRRRRRRR	R
RRRR/# r<   rh   ri   r  r  r  r  r  rA  r   r   r   r  r=   Ctuple[int, bytes, list[Mapping[str, Any]], list[Mapping[str, Any]]]r?   )r@   s   "rA   rB   rB     sO     4 4434 4 
	4
 4 
!4 I4r+   c                    \        WW#WE4      w  rgpVP                  P                  f   Q h\        RWeP                  P                  4      w  rWWx3# )zRCreate the next batched client-level bulkWrite operation
with OP_MSG, compressed.
r   )r  r   rB  r   )rh   r  r  r  r   r   r   r  r  r   r   s   &&&&&&     rA   !_client_batched_op_msg_compressedr    sV     %BZd%!Dz 88''333dHH,H,HIOJK33r+   c               4    V ^8  d   QhRRRRRRRRR	R
RRRR/# r  r?   )r@   s   "rA   rB   rB     sO     ? ??3? ? 
	?
 ? 
!? I?r+   c           	     h   \        4       pVP                  \        4       VP                  R4       \        WW#WEV4      w  rxp	VP	                  ^4       \        4       p
VP                  \        V
4      4       VP	                  ^ 4       VP                  \        V	4      4       WP                  4       Wx3# )z=OP_MSG implementation entry point for client-level bulkWrite.r  )r  r  r  r  r  rH   r   r  )rh   r  r  r  r   r   r  r  r  r  r   s   &&&&&&     rA   _client_batched_op_msgr    s     *C IIhII12&AZd'#KV
 HHQKJIIi
#$HHQKIIi ||~{>>r+   c               0    V ^8  d   QhRRRRRRRRR	R
RR/# )r<   rh   rK   r  r  r  r  r   r   r   r  r=   r  r?   )r@   s   "rA   rB   rB     sM     S S%S3S S 	S
 
!S ISr+   c                    RV R&   RV 9   d$   \        V R,          P                  R^4      4      pMRpVP                  P                  '       d   \	        WW%W44      # \        WW%W44      # )zGCreate the next batched client-level bulkWrite
operation using OP_MSG.
adminr   r  r  T)rA  rz   r   rB  r  r  )rh   r  r  r   r   r  s   &&&&& rA   r  r    se     GEN 7>*..sA67
xx###0jW[aa!'zRRr+   c               4    V ^8  d   QhRRRRRRRRR	R
RRRR/# )r<   r~  r]   rg   r>   rh   rK   r   ry  r   r   r   rq  r=   r  r?   )r@   s   "rA   rB   rB     sN     # ### &# "	#
 # 
# +#r+   c           	     Z    \        4       p\        WW#WEV4      w  rxVP                  4       V3# )z:Encode the next batched insert, update, or delete command.)r  _batched_write_command_implr  )	r~  rg   rh   r   r   r   r  r  r  s	   &&&&&&   rA   r  r    s0     *C,Y7RV]`aJG<<>7""r+   c               8    V ^8  d   QhRRRRRRRRR	R
RRRRRR/# )r<   r~  r]   rg   r>   rh   rK   r   ry  r   r   r   rq  r  r  r=   r  r?   )r@   s   "rA   rB   rB     sb     H HHH &H "	H
 H 
H 
H )Hr+   c                   VP                   pVP                  pV\        ,           p	VP                  p
VP	                  \
        4       VP	                  V P                  R4      4       VP	                  \        4       VP	                  \        4       VP                  4       pVP	                  \        P                  ! V4      4       VP                  R^4        VP	                  \        V,          4       TP                  4       ^,
          p. p^ pT EF7  p\        T4      P                  R4      p\!        TRT4      p\#        T4      T	8  pT'       d;   \%        \&        P)                  4       4      T,          p\+        T\#        T4      T4       T^8  ;'       d4    TP                  4       \#        T4      ,           \#        T4      ,           T
8  pY8  pT'       g	   T'       d    MkTP	                  \,        4       TP	                  T4       TP	                  \        4       TP	                  T4       TP/                  T4       T^,          pEK:  	  TP	                  \0        4       TP                  4       pTP                  T4       TP	                  \3        TT,
          ^,
          4      4       TP                  T4       TP	                  \3        TT,
          4      4       TT3#   \         d    \        R4      Rhi ; i)z(Create a batched OP_QUERY write command.utf8r  NFr  )r   rP  r  rT  r  r  encode_ZERO_8_SKIPLIMr  r  r  _OP_MAPr  r   r]   r   rS   r  r  r  r  _BSONOBJr  _ZERO_16r   )r~  rg   rh   r   r   r   r  r   rP  max_cmd_sizerT  command_start
list_startr  r  r   r   r  r  r  enough_dataenough_documentsr  s   &&&&&&&                rA   r  r    sG    %%M33 !#44L''N IIhIIiv&'IIgIIh HHJMIIdkk'"# HHRO<		')$%
 aJG
C#hoof%c5$/ E
\1JOO-.y9H%hE
MJQhYYCHHJS$9CJ$F>#Y6*		(		#		'		%sq' . IIh XXZFHHZIIi+a/01HH]IIi./0F?O  <01t;<s   K" "K:c                      ] tR tRtRtRt]P                  ! R4      P                  t	^t
R R ltRR R lltR]RR	3R
 R lltR R ltR R lt]R R l4       t]R R l4       tRtR# )_OpReplyiA  z$A MongoDB OP_REPLY response message.z<iqiic               (    V ^8  d   QhRRRRRRRR/# )r<   r   r>   r   number_returnedr0   bytes | memoryviewr?   )r@   s   "rA   rB   _OpReply.__annotate__I  s,     # ##%(#;>#K]#r+   c                	J    Wn         \        V4      V n        W0n        W@n        R # r   )r   r   r   r1  r0   )rC  r   r   r1  r0   s   &&&&&rA   rD  _OpReply.__init__I  s      
y)."r+   Nc               $    V ^8  d   QhRRRRRR/# )r<   r   r   user_fieldsr   r=   zlist[bytes | memoryview]r?   )r@   s   "rA   rB   r3  Q  s$     * *&*<W*	!*r+   c                   V P                   ^,          '       d/   Vf   \        R4      hRV3,          pR^ RVR^+/p\        V^+V4      hV P                   ^,          '       d   \        P                  ! V P
                  4      P                  4       pVP                  R^ 4       VR,          P                  \        P                  4      '       d   \        VR,          V4      hVP                  R4      ^28X  d/   Rp\        VP                  RV4      VP                  R4      V4      h\        RVP                  R4      ,          VP                  R4      V4      hV P
                  '       d   V P
                  .# . # )	ad  Check the response header from the database, without decoding BSON.

Check the response for errors and unpack.

Can raise CursorNotFound, NotPrimaryError, ExecutionTimeout, or
OperationFailure.

:param cursor_id: cursor_id we sent to get this response -
    used for raising an informative exception when we get cursor id not
    valid at server response.
z"No cursor id for getMore operationzCursor not found, cursor id: %drm   r[   rd   z$errzoperation exceeded time limitzdatabase error: %s)r   r   r   r  BSONr0   decode
setdefault
startswithr   LEGACY_ERRORr   rz   r   r   )rC  r   r7  r   errobjerror_objectdefault_msgs   &&&    rA   raw_response_OpReply.raw_responseQ  sM    ::>> #$HII 4ylBCAxfb9F b&11ZZ!^^+/99T^^+D+K+K+ML##D!,F#..{/G/GHH%l6&:LII!!&)R/=& $$V[9<;K;KF;SUa  #$|'7'7'??  ( 
 >>>NN##	r+   Fc          
     ,    V ^8  d   QhRRRRRRRRR	R
/# r<   r   r   codec_optionsr   r7  r   legacy_responserA  r=   zlist[dict[str, Any]]r?   )r@   s   "rA   rB   r3  }  sC     V V V )V 1	V
 V 
Vr+   c                    V P                  V4       V'       d"   \        P                  ! V P                  V4      # \        P                  ! V P                  W#4      # )a  Unpack a response from the database and decode the BSON document(s).

Check the response for errors and unpack, returning a dictionary
containing the response data.

Can raise CursorNotFound, NotPrimaryError, ExecutionTimeout, or
OperationFailure.

:param cursor_id: cursor_id we sent to get this response -
    used for raising an informative exception when we get cursor id not
    valid at server response
:param codec_options: an instance of
    :class:`~bson.codec_options.CodecOptions`
:param user_fields: Response fields that should be decoded
    using the TypeDecoders from codec_options, passed to
    bson._decode_all_selective.
)rA  r  
decode_allr0   _decode_all_selectiverC  r   rE  r7  rF  s   &&&&&rA   unpack_response_OpReply.unpack_response}  sA    0 	)$??4>>=AA))$..-UUr+   c                    V ^8  d   QhRRRR/# r<   rE  r   r=   rY   r?   )r@   s   "rA   rB   r3    s      .? N r+   c                ^    V P                  VR7      pV P                  ^8X  g   Q hV^ ,          # zUnpack a command response.)rE  )rK  r1  )rC  rE  r   s   && rA   command_response_OpReply.command_response  s2    ##-#@##q(((Awr+   c                   V ^8  d   QhRR/# )r<   r=   r
   r?   )r@   s   "rA   rB   r3    s     " "h "r+   c                    \         hz)Return the bytes of the command response.)NotImplementedErrorrH  s   &rA   raw_command_response_OpReply.raw_command_response  s
     "!r+   c                   V ^8  d   QhRR/# r<   r=   rA  r?   )r@   s   "rA   rB   r3    s      d r+   c                    R# )+Is the moreToCome bit set on this response?Fr?   rH  s   &rA   more_to_come_OpReply.more_to_come  s     r+   c                    V ^8  d   QhRRRR/# )r<   r   r2  r=   r/  r?   )r@   s   "rA   rB   r3    s     A A+ A Ar+   c                N    V P                  V4      w  r#rEVR,          pV ! W#WV4      # )z%Construct an _OpReply from raw bytes.:   NN)UNPACK_FROM)clsr   r   r   r  r1  r0   s   &&     rA   unpack_OpReply.unpack  s-     03s/C,!H	5_@@r+   )r   r0   r   r1  )r   r   r1  r0   )NN)r_   ri  rj  rk  rl  rm  structStructunpack_fromrb  OP_CODErD  rA  r9   rK  rQ  rW  rn  r]  classmethodrd  ro  r?   r+   rA   r/  r/  A  sv    .FI--(44KG#*\ $(+I37 %V:"
   A Ar+   r/  c                      ] tR tRtRtRt]P                  ! R4      P                  t	Rt
^t^tRtR R ltR/ 3R R	 lltR]RR
3R R lltR R ltR R lt]R R l4       t]R R l4       tRtR# )_OpMsgi  z"A MongoDB OP_MSG response message.z<IBir   c                    V ^8  d   QhRRRR/# )r<   r   r>   payload_documentr2  r?   )r@   s   "rA   rB   _OpMsg.__annotate__  s     1 1c 15G 1r+   c                	    Wn         W n        R # r   r   rn  )rC  r   rn  s   &&&rA   rD  _OpMsg.__init__  s    
 0r+   Nc               $    V ^8  d   QhRRRRRR/# )r<   r   r   r7  r   r=   ry  r?   )r@   s   "rA   rB   ro    s(     # # # 1# 
!	#r+   c                f    \         P                  ! \        V P                  4      V\        4      pV.# )zX
cursor_id is ignored
user_fields is used to determine which fields must not be decoded
)r  _decode_selectiver   rn  r   )rC  r   r7  inflated_responses   &&& rA   rA  _OpMsg.raw_response  s3     !22D112KAX
 """r+   Fc          
     ,    V ^8  d   QhRRRRRRRRR	R
/# rD  r?   )r@   s   "rA   rB   ro    sC     ] ] ] )] 1	]
 ] 
]r+   c                X    V'       d   Q h\         P                  ! V P                  W#4      # )aF  Unpack a OP_MSG command response.

:param cursor_id: Ignored, for compatibility with _OpReply.
:param codec_options: an instance of
    :class:`~bson.codec_options.CodecOptions`
:param user_fields: Response fields that should be decoded
    using the TypeDecoders from codec_options, passed to
    bson._decode_all_selective.
)r  rI  rn  rJ  s   &&&&&rA   rK  _OpMsg.unpack_response  s&    " #""))$*?*?\\r+   c                    V ^8  d   QhRRRR/# rN  r?   )r@   s   "rA   rB   ro    s     D D.? DN Dr+   c                4    V P                  VR7      ^ ,          # rP  )rK  )rC  rE  s   &&rA   rQ  _OpMsg.command_response  s    ##-#@CCr+   c                   V ^8  d   QhRR/# )r<   r=   r2  r?   )r@   s   "rA   rB   ro    s     % %&8 %r+   c                    V P                   # rU  )rn  rH  s   &rA   rW  _OpMsg.raw_command_response  s    $$$r+   c                   V ^8  d   QhRR/# rZ  r?   )r@   s   "rA   rB   ro    s     4 4d 4r+   c                N    \        V P                  V P                  ,          4      # )r\  )rA  r   MORE_TO_COMErH  s   &rA   r]  _OpMsg.more_to_come  s     DJJ!2!2233r+   c                    V ^8  d   QhRRRR/# )r<   r   r2  r=   rl  r?   )r@   s   "rA   rB   ro    s     , ,+ , ,r+   c                f   V P                  V4      w  r#pV^ 8w  dO   W P                  ,          '       d   \        RVR 24      hW P                  ,          '       d   \        RVR 24      hV^ 8w  d   \        RVR 24      h\	        V4      V^,           8w  d   \        R4      hVR,          pV ! W%4      # )z#Construct an _OpMsg from raw bytes.z+Unsupported OP_MSG flag checksumPresent: 0xxzUnsupported OP_MSG flags: 0xz#Unsupported OP_MSG payload type: 0xz$Unsupported OP_MSG reply: >1 section:   NN)rb  CHECKSUM_PRESENTr   r  rS   )rc  r   r   first_payload_typefirst_payload_sizern  s   &&    rA   rd  _OpMsg.unpack  s     9<8L5#5A:++++#&QRWXYQZ$[\\''''#&B5)$LMM""EFXYZE[ \]]s8)A-- FGGr75++r+   rq  )r   r   r1  rn  i   )r_   ri  rj  rk  rl  rm  rf  rg  rh  rb  ri  r  r  EXHAUST_ALLOWEDrD  rA  r9   rK  rQ  rW  rn  r]  rj  rd  ro  r?   r+   rA   rl  rl    s    ,MI--'33KG LO1 $(35#  $(+I37 %](D% 4 4 , ,r+   rl  zBdict[int, Callable[[bytes | memoryview], Union[_OpReply, _OpMsg]]]_UNPACK_REPLYc                      ] tR tRtRtRtRtRtR R ltR R lt	R R	 lt
R
 R ltR R ltRR R lltRR R lltRtR# )_Queryi  zA query operation.Nc                X    V ^8  d   QhRRRRRRRRRRR	R
RRRRRRRRRRRR
RRRRRRRR/# )r<   r   r>   dbr]   r   ntoskiprJ   ri   fieldsr   rE  r   rL   r!   r   r   r   r%   r   r   r   clientr)   r   r   exhaustrA  r?   )r@   s   "rA   rB   _Query.__annotate__*  s     $ $$ $ 	$
 $  $ ,$ )$ %$ $ $ "$ /$ 2$ %$  '!$" #$r+   c                	    Wn         W n        W0n        W@n        WPn        W`n        Wpn        Wn        Wn        Wn	        Wn
        Wn        Wn        Wn        Wn        R V n        RV n        VV n        R# )r   N)r   r  r   r  rJ   r  rE  rL   r   r   r   r   r   r  r   r  _as_commandr  )rC  r   r  r   r  rJ   r  rE  rL   r   r   r   r   r   r  r   r  s   &&&&&&&&&&&&&&&&&rA   rD  _Query.__init__*  si    & 
		*.(
$",	AEr+   c                   V ^8  d   QhRR/# r<   r=   rZ  r?   )r@   s   "rA   rB   r  P          t  r+   c                	    R V n         R # r   r  rH  s   &rA   reset_Query.resetP  
    r+   c                   V ^8  d   QhRR/# r<   r=   r]   r?   )r@   s   "rA   rB   r  S       ( (3 (r+   c                	8    V P                    R V P                   2# r  r  r   rH  s   &rA   r~  _Query.namespaceS      ''!DII;''r+   c                    V ^8  d   QhRRRR/# r<   r   r(   r=   rA  r?   )r@   s   "rA   rB   r  V  s       3  r+   c                	D   R pV P                   '       g   RpMbVP                  ^8  d   RpMNV P                  P                  '       g3   \	        RV P                  P
                  VP                  3,          4      hVP                  V P                  V P                  4       V# )FTzDread concern level of %s is not valid with a max wire version of %d.)	r  r   r   ok_for_legacyr   r   validate_sessionr  r   )rC  r   use_find_cmds   && rA   use_command_Query.use_commandV  s    |||L""a'L""000$1484E4E4K4KTMbMb3cd 
 	dkk4<<8r+   c                    V ^8  d   QhRRRR/# r<   r   rY   r=   rZ  r?   )r@   s   "rA   rB   r  f       ( (. (T (r+   c                	*    WP                   3V n        R # r   r  r  rC  r   s   &&rA   update_command_Query.update_commandf      <r+   c               $    V ^8  d   QhRRRRRR/# r<   r   r(   apply_timeoutrA  r=   ztuple[dict[str, Any], str]r?   )r@   s   "rA   rB   r  i  s$     %  % '% 8<% 	#% r+   c                f   V P                   e   V P                   # RV P                  9   p\        V P                  V P                  V P                  V P
                  V P                  V P                  V P                  V P                  V P                  V P                  V P                  4      pV'       d   RV n        RV/pVP                  V4       V P                  '       dh   V P                  P                  VRV P                   V4       V'       g8   V P                  P"                  '       g   V P                  P%                  WA4       VP'                  W@P                  V P(                  4       V'       d   VP+                  V P(                  VR7       W@P,                  3V n         V P                   # )z.Return a find command document for this query.r   explainFr   )r  rJ   r   r   r  r  r   r   r   r   r   r   r   r  add_server_api	_apply_torL   r   _update_read_concernsend_cluster_timer  r  r  )rC  r   r  r  r   s   &&&  rA   
as_command_Query.as_commandi  s@    '###		)/IIIIKKLLJJOOJJNNLL
 !DIc"CC <<<LL""3t/C/CTJ4<<#>#>#>11#<sLL$++>t{{4<r+   c               (    V ^8  d   QhRRRRRRRR/# )	r<   rL   r!   r   r(   use_cmdrA  r=   r  r?   )r@   s   "rA   rB   r    s,     2
 2
*2
2E2
PT2
	2
r+   c                   Wn         VP                  '       d   V P                  ^,          pMV P                  pV P                  4       pV P                  pV'       dO   V P                  V4      ^ ,          p\        ^ VV P                  VV P                  VP                  R7      w  rxrWxV	3# V P                  ^8H  ;'       d    ^;'       g    V P                  pV P                  '       d,   V'       d   \        V P                  V4      pMV P                  pVP                  '       d$   \        V\        4      '       g   Q h\!        Wa4      p\#        TTV P$                  TTV'       d   RMV P&                  V P                  VP                  R7      # )z:Get a query message, possibly setting the secondaryOk bit.r   N)rL   rP   r   r~  rJ   r  r  r  rE  rB  r   r   r   	is_mongos
isinstancer	   rT   r  r  r  )rC  rL   r   r  r   r  rJ   r   r   r   r  	ntoreturns   &&&&        rA   get_message_Query.get_message  sA   
  /JJNEJJE^^yy??4(+D'."",,($JT D((
 OOq(..QAA$//	:::

I6	 JJ	>>>dN3333-dDDLLD((	
 		
r+   )r  r   r   r  rE  r   r   r  r  r  r   r   r  r  r   rL   r   rJ   )r   r  r   r  rJ   r  rE  rL   r   r   r  r   r   r   r  r   r  r  F)r_   ri  rj  rk  rl  rm  conn_mgrr   rD  r  r~  r  r  r  r  ro  r?   r+   rA   r  r    sB    I, HI$L ( (% N2
 2
r+   r  c                  ~    ] tR tRtRtRtRtR R ltR R ltR R	 lt	R
 R lt
R R ltRR R lltRR R lltRtR# )_GetMorei  zA getmore operation.r   c               H    V ^8  d   QhRRRRRRRRRRR	R
RRRRRRRRRRRR/# )r<   r  r]   r   r  r>   r   rE  r   rL   r!   r   r   r  r)   r   r   r  r   r  rA  r   r?   )r@   s   "rA   rB   _GetMore.__annotate__  s        	
  ) % 2 % )   r+   c                	    Wn         W n        W0n        W@n        WPn        W`n        Wpn        Wn        Wn        Wn	        R V n
        Wn        Wn        R # r   )r  r   r  r   rE  rL   r   r  r   r  r  r  r   )rC  r  r   r  r   rE  rL   r   r  r   r  r  r   s   &&&&&&&&&&&&&rA   rD  _GetMore.__init__  sK     	""*.!2 AEr+   c                   V ^8  d   QhRR/# r  r?   )r@   s   "rA   rB   r    r  r+   c                	    R V n         R # r   r  rH  s   &rA   r  _GetMore.reset  r  r+   c                   V ^8  d   QhRR/# r  r?   )r@   s   "rA   rB   r    r  r+   c                	8    V P                    R V P                   2# r  r  rH  s   &rA   r~  _GetMore.namespace  r  r+   c                    V ^8  d   QhRRRR/# r  r?   )r@   s   "rA   rB   r    s     	 	 3 	 	r+   c                	    R pV P                   '       g   RpMVP                  ^8  d   RpVP                  V P                  V P                  4       V# )FT)r  r   r  r  r   )rC  r   r  s   && rA   r  _GetMore.use_command  sE    |||G""a'Gdkk4<<8r+   c                    V ^8  d   QhRRRR/# r  r?   )r@   s   "rA   rB   r    r  r+   c                	*    WP                   3V n        R # r   r  r  s   &&rA   r  _GetMore.update_command  r  r+   c               $    V ^8  d   QhRRRRRR/# r  r?   )r@   s   "rA   rB   r    s$        ' 8< 	# r+   c                "   V P                   e   V P                   # \        V P                  V P                  V P                  V P
                  V P                  V4      pV P                  '       d)   V P                  P                  VRV P                  V4       VP                  V4       VP                  W0P                  V P                  4       V'       d   VP                  V P                  RR7       W0P                  3V n         V P                   # )z1Return a getMore command document for this query.NFr  )r  r   r   r   r  r   r   r   r  rL   r  r  r  r  r  )rC  r   r  r   s   &&& rA   r  _GetMore.as_command  s    
 '###3NNIINN""LL
 <<<LL""3t/C/CTJC sLL$++>t{{5<r+   c               (    V ^8  d   QhRRRRRRRR/# )	r<   dummy0r   r   r(   r  rA  r=   z0Union[tuple[int, bytes, int], tuple[int, bytes]]r?   )r@   s   "rA   rB   r  %  s2     B BB!4B?CB	9Br+   c           	        V P                  4       pVP                  pV'       d   V P                  V4      ^ ,          pV P                  '       d$   V P                  '       d   \
        P                  pM^ p\        WvV P                  RV P                  VP                  R7      w  rrWV
3# \        W@P                  V P                  V4      # )zGet a getmore message.Nr  )r~  rB  r  r  r  rl  r  r  r  rE  r,  r  r   )rC  r  r   r  r  r   rJ   r   r   r   r   r  s   &&&&        rA   r  _GetMore.get_message%  s     ^^&&??4(+D}}}..'.TWWdD,>,>DD\D\($JT D((^^T^^SAAr+   )r  r  rE  r   r   r  r   r  r  r   r  rL   r   N)r  r   r  r   r   rE  rL   r   r  r  r  r  r   r  )r_   ri  rj  rk  rl  rm  r  rD  r  r~  r  r  r  r  ro  r?   r+   rA   r  r    s=    I  D: (	( 4B Br+   r  c                  .   a  ] tR tRtR V 3R lltRtV ;t# )_RawBatchQueryi:  c                    V ^8  d   QhRRRR/# r  r?   )r@   s   "rA   rB   _RawBatchQuery.__annotate__;         3  r+   c                	t   < \         SV `  V4       VP                  ^8  d   R# V P                  '       g   R# R#    TFrv  r  r   r  rC  r   r^   s   &&rA   r  _RawBatchQuery.use_command;  0    D!  A%r+   r?   r_   ri  rj  rk  r  ro  r  r  s   @rA   r  r  :       r+   r  c                  .   a  ] tR tRtR V 3R lltRtV ;t# )_RawBatchGetMoreiF  c                    V ^8  d   QhRRRR/# r  r?   )r@   s   "rA   rB   _RawBatchGetMore.__annotate__G  r  r+   c                	t   < \         SV `  V4       VP                  ^8  d   R# V P                  '       g   R# R# r  r  r  s   &&rA   r  _RawBatchGetMore.use_commandG  r  r+   r?   r  r  s   @rA   r  r  F  r  r+   r  c                  l    ] tR tRt$ RtR]R&   R R lt]R R l4       tR	 R
 lt	R R lt
R R ltRtR# )_CursorAddressiR  zEThe server address (host, port) of a cursor, with namespace property.r   _CursorAddress__namespacec               $    V ^8  d   QhRRRRRR/# )r<   r^  r&   r~  r]   r=   r  r?   )r@   s   "rA   rB   _CursorAddress.__annotate__W  s!      h 3 > r+   c                	<    \         P                  W4      pW#n        V# r   )tuple__new__r  )rc  r^  r~  rC  s   &&& rA   r  _CursorAddress.__new__W  s    }}S*$r+   c                   V ^8  d   QhRR/# r  r?   )r@   s   "rA   rB   r  ]  s        3  r+   c                    V P                   # )zThe namespace this cursor.)r  rH  s   &rA   r~  _CursorAddress.namespace\  s     r+   c                   V ^8  d   QhRR/# r;   r?   )r@   s   "rA   rB   r  a  s     6 6# 6r+   c                	@    . V OV P                   N5P                  4       # r   )r  __hash__rH  s   &rA   r  _CursorAddress.__hash__a  s#     *$)(()3355r+   c                    V ^8  d   QhRRRR/# r<   otherobjectr=   rA  r?   )r@   s   "rA   rB   r  f  s      F t r+   c                	    \        V\        4      '       d9   \        V 4      \        V4      8H  ;'       d    V P                  VP                  8H  # \        # r   )r  r  r  r~  NotImplementedrC  r  s   &&rA   __eq___CursorAddress.__eq__f  s=    e^,,;%,.TT4>>U__3TTr+   c                    V ^8  d   QhRRRR/# r  r?   )r@   s   "rA   rB   r  k  s     ! !F !t !r+   c                	    W8X  * # r   r?   r  s   &&rA   __ne___CursorAddress.__ne__k  s      r+   )__namespaceN)r_   ri  rj  rk  rl  __annotations__r  rn  r~  r  r  r  ro  r?   r+   rA   r  r  R  s8    O
    6

! !r+   r  .i   )NNNr   )__conditional_annotations__rl  
__future__r   r>  rD   rf  ior   r  typingr   r   r   r   r   r	   r
   r   r   r  r   r   r   
bson.int64r   bson.raw_bsonr   r   r   r   pymongo.hellor   pymongo.monitoringr   pymongor   _use_cImportErrorpymongo.errorsr   r   r   r   r   r   r   r   pymongo.read_preferencesr    r!   pymongo.compression_supportr"   r#   r$   pymongo.read_concernr%   pymongo.typingsr&   r'   r(   r)   r*   rG   rF   r  _INSERT_UPDATE_DELETE_EMPTYr'  r$  r(  r  r  r%  r&  r  r9   r  rH   rT   ra   re   r~   r   r   r   r   rg  packr   r   r   r   r   r   r   r   r   r   r   r  r  r  r  _query_messager  r  r!  r&  r)  _get_more_messager,  r  r.  rq  r  r  r  r  r  r  r  r}  r  r  r  r  r  r  r  r  r  r  r/  rl  ri  rd  r  r  r  r  r  r  r  )r  s   @rA   <module>r6     s7   #    "
 
 
  < <   & .!F	 	 	 ASS0  		  


	
..1// kii	
 CO!*C  ? 
0
$O
!J 1r3 hV		+
E
E+^N
 4n& "==499  +& }}W%** MM$$$	 --.33 ]]4 %%
4@/
= 
$,,'@>#$#" 
#22( --%**	[[ 
&88	M  ^^[
 [
|4- 4n#!2 #0L&  AH#" 
&==$$/8 
//OE*:3 :z  -`s+l3&4(?<S.# 
$-$K$K!HVpA pAfQ, Q,j hoo
NNFMMUQ t
 t
nrB rBj	V 		x 	!U38_ !u8  Fs   "O 	OO