Ë
    Ü_Ëim/  ã                  ó
  — U d Z ddlmZ ddlZddlZddlmZ ddlmZm	Z	m
Z
mZmZmZmZmZmZ ddlmZ ddlmZmZmZmZmZmZmZmZmZ ddlmZ erdd	lm Z  dd
l!m"Z" ddl#m$Z$ ddl%m&Z&  e'ddg«      Z(de)d<    e'g d¢«      e(z  Z*de)d<   e* e'g d¢«      z  Z+de)d<   dZ,de)d<   dZ-de)d<   h d£Z.de)d<   d*d„Z/d+d„Z0d,d„Z1	 d-	 	 	 	 	 d.d „Z2d/d!„Z3d0d"„Z4	 	 	 d1	 	 	 	 	 	 	 	 	 	 	 d2d#„Z5d3d$„Z6d4d%„Z7d5d&„Z8d6d'„Z9	 	 	 	 	 	 d7d(„Z:d8d)„Z;y)9zCBits and pieces used by the driver that don't really fit elsewhere.é    )ÚannotationsN)Úabc)	ÚTYPE_CHECKINGÚAnyÚ	ContainerÚIterableÚMappingÚNoReturnÚOptionalÚSequenceÚUnion)Ú	ASCENDING)	ÚCursorNotFoundÚDuplicateKeyErrorÚExecutionTimeoutÚNotPrimaryErrorÚOperationFailureÚWriteConcernErrorÚ
WriteErrorÚWTimeoutErrorÚ_wtimeout_error)ÚHelloCompat)Ú_Hint)Ú
_IndexList)ÚPoolOptions)Ú_DocumentOutiP-  é[   zfrozenset[int]Ú_SHUTDOWN_CODES)iJ'  i{'  i{4  iR-  i|4  é½   Ú_NOT_PRIMARY_CODES)é   é   éY   i)#  i  é†   Ú_RETRYABLE_ERROR_CODESi‡  ÚintÚ_REAUTHENTICATION_REQUIRED_CODEé   Ú_AUTHENTICATION_FAILURE_CODE>	   ÚcopydbÚgetnonceÚ	saslstartÚ
createuserÚ
updateuserÚauthenticateÚsaslcontinueÚcopydbgetnonceÚcopydbsaslstartzset[str]Ú_SENSITIVE_COMMANDSc                ó¦   — ddl m} i }|j                  «       }| j                  }| j                  }|r|dz  |d<   |r
|s|dz  |d<   |r|dz  |d<   |S )Nr   )Ú_csotiè  Ú	timeoutMSÚsocketTimeoutMSÚconnectTimeoutMS)Úpymongor5   Úget_timeoutÚsocket_timeoutÚconnect_timeout)Úoptionsr5   ÚdetailsÚtimeoutr;   r<   s         úY/var/www/pod-logistic/pod-api/venv/lib/python3.12/site-packages/pymongo/helpers_shared.pyÚ_get_timeout_detailsrA   p   sl   € Ýà€GØ×ÑÓ!€GØ×+Ñ+€NØ×-Ñ-€OÙØ&¨™~ˆ�ÑÙ™gØ%3°dÑ%:ˆÐ!Ñ"ÙØ&5¸Ñ&<ˆÐ"Ñ#Ø€Nó    c                ób   — d}| r*|dz  }dD ]  }|| v sŒ|d|› d| |   › d�z  }Œ |d d }|dz  }|S )	NÚ z (configured timeouts:)r7   r6   r8   ú z: zms,éÿÿÿÿú)© )r>   Úresultr?   s      r@   Úformat_timeout_detailsrJ   €   sf   € Ø€FÙØÐ*Ñ*ˆØKò 	?ˆGØ˜'Ò!Ø˜A˜g˜Y b¨°Ñ)9Ð(:¸#Ð>Ñ>‘ð	?ð ˜˜�ˆØ�#‰ˆØ€MrB   c                ód   — dj                  | D �cg c]  } dj                  |Ž ‘Œ c}«      S c c}w )z9Generate an index name from the set of fields it is over.Ú_z{}_{})ÚjoinÚformat)ÚkeysÚitems     r@   Ú_gen_index_namerQ   Œ   s*   € à�8‰8°tÖ<¨t�^�W—^‘^ TÒ*Ò<Ó=Ð=ùÒ<s   �-c                ó  — |�,t        | t        «      st        dt        | «      › �«      ‚| |fgS t        | t        «      r	| t        fgS t        | t
        j                  «      rt        | «      S t        | t
        j                  «      rt        | j                  «       «      S t        | t        t        f«      st        dt        | «      › �«      ‚g }| D ]+  }t        |t        «      r|t        f}|j                  |«       Œ- |S )z�Helper to generate a list of (key, direction) pairs.

    Takes such a list, or a single key, or a single key and direction.
    z'Expected a string and a direction, not zKif no direction is specified, key_or_list must be an instance of list, not )Ú
isinstanceÚstrÚ	TypeErrorÚtyper   r   Ú	ItemsViewÚlistr	   ÚitemsÚtupleÚappend)Úkey_or_listÚ	directionÚvaluesrP   s       r@   Ú_index_listr_   ‘   sø   € ð ÐÜ˜+¤sÔ+ÜÐEÄdÈ;ÓFWÐEXÐYÓZÐZØ˜iÐ(Ð)Ð)ä�k¤3Ô'Ø ¤)Ð,Ð-Ð-Ü˜¤S§]¡]Ô3Ü˜Ó$Ð$Ü˜¤S§[¡[Ô1Ü˜×)Ñ)Ó+Ó,Ð,Ü˜K¬$´¨Ô7ÜØ]Ô^bÐcnÓ^oÐ]pÐqóð ð )+ˆØò 	 ˆDÜ˜$¤Ô$ØœiÐ(�Ø�M‰M˜$Õð	 ð ˆrB   c                óŠ  — t        | t        t        t        j                  f«      st        dt        | «      z   «      ‚t        | «      st        d«      ‚i }t        | t        j                  «      r| D ]  }| |   }t        ||«       |||<   Œ |S | D ]0  }t        |t        «      r|t        f}|\  }}t        ||«       |||<   Œ2 |S )zbHelper to generate an index specifying document.

    Takes a list of (key, direction) pairs.
    z@must use a dictionary or a list of (key, direction) pairs, not: zkey_or_list must not be empty)rS   rX   rZ   r   r	   rU   ÚreprÚlenÚ
ValueErrorÚ_validate_index_key_pairrT   r   )Ú
index_listÚindexÚkeyÚvaluerP   s        r@   Ú_index_documentri   ¯   s×   € ô
 �j¤4¬´·±Ð"<Ô=ÜØNÔQUÐV`ÓQaÑaó
ð 	
ô ˆzŒ?ÜÐ8Ó9Ð9à€Eä�*œcŸk™kÔ*Øò 	ˆCØ˜s‘OˆEÜ$ S¨%Ô0ØˆE�#ŠJð	ð €Lð ò 	ˆDÜ˜$¤Ô$ØœiÐ(�Ø‰JˆC�Ü$ S¨%Ô0ØˆE�#ŠJð	ð €LrB   c                óÊ   — t        | t        «      st        dt        | «      › �«      ‚t        |t        t        t
        j                  f«      st        dt        |«      › �«      ‚y )Nz<first item in each key pair must be an instance of str, not zasecond item in each key pair must be 1, -1, '2d', or another valid MongoDB index specifier., not )rS   rT   rU   rV   r&   r   r	   )rg   rh   s     r@   rd   rd   Ì   sa   € Ü�cœ3ÔÜÐVÔW[Ð\_ÓW`ÐVaÐbÓcÐcÜ�eœc¤3¬¯©Ð4Ô5Üðä˜%“[�Mð#ó
ð 	
ð 6rB   c                óê  — d| vr,t        | j                  d«      | j                  d«      | |«      ‚|r:d| v r6| d   }| j                  d«      }|r|j                  d|i«       t        |«       | d   ry| }d| v r?| d   j	                  «       D ])  }|j                  d«      sŒ|j                  d«      rŒ'|} n |d   }	|j                  d«      }
|r|
�|
|v ry|	|v ry|
�|
t
        v r.t        |	| «      ‚t        j                  |	v sd	|	v rt        |	| «      ‚|
d
v rt        |	|
| |«      ‚|
dk(  r)|rt        |«      }|	t        |«      z  }	t        |	|
| |«      ‚|
dk(  rt        |	|
| |«      ‚t        |	|
| |«      ‚)z+Check the response to a command for errors.Úokz$errÚcodeÚwriteConcernErrorÚerrorLabelsNÚrawÚerrmsgznode is recovering)éø*  iù*  i&1  é2   é+   )r   ÚgetÚupdateÚ_raise_write_concern_errorr^   r    r   r   ÚLEGACY_ERRORr   rA   rJ   r   r   )ÚresponseÚmax_wire_versionÚallowable_errorsÚparse_write_concern_errorÚ	pool_optsÚ_errorÚ_labelsr>   Úshardrq   rm   Útimeout_detailss               r@   Ú_check_command_responser‚   ×   sÈ  € ð �8ÑäØ�L‰L˜Ó Ø�L‰L˜Ó ØØó	
ð 	
ñ !Ð%8¸HÑ%DØÐ-Ñ.ˆØ—,‘,˜}Ó-ˆÙØ�M‰M˜=¨'Ð2Ô3Ü" 6Ô*à�‚~Øà€Gð �ÑØ˜e‘_×+Ñ+Ó-ò 	ˆEà�y‰y˜Õ"¨5¯9©9°T­?Ø�Ùð		ð �XÑ€FØ�;‰;�vÓ€Dñ ØÐØÐ'Ñ'ØØÐ'Ñ'Øð ÐØÔ%Ñ%Ü! &¨(Ó3Ð3Ü	×	!Ñ	! VÑ	+Ð/CÀvÑ/MÜ˜f hÓ/Ð/ð Ð$Ñ$Ü ¨¨hÐ8HÓIÐIØ	�ŠáÜ2°9Ó=ˆOØÔ,¨_Ó=Ñ=ˆFÜ˜v t¨XÐ7GÓHÐHØ	�ŠÜ˜V T¨8Ð5EÓFÐFä
˜6 4¨Ð3CÓ
DÐDrB   c                óÂ   — | d   }|j                  d«      dk(  rt        |j                  d«      d|«      ‚t        |j                  d«      |j                  d«      |«      ‚)NrF   rm   rr   rq   )ru   r   r   )Úwrite_errorsÚerrors     r@   Ú_raise_last_write_errorr†     sX   € ð ˜Ñ€EØ‡y�y�Ó˜EÒ!Ü §	¡	¨(Ó 3°U¸EÓBÐBÜ
�U—Y‘Y˜xÓ(¨%¯)©)°FÓ*;¸UÓ
CÐCrB   c                óÄ   — t        | «      r+t        | j                  d«      | j                  d«      | «      ‚t        | j                  d«      | j                  d«      | «      ‚)Nrq   rm   )r   r   ru   r   )r…   s    r@   rw   rw   (  sL   € Ü�uÔä˜EŸI™I hÓ/°·±¸6Ó1BÀEÓJÐJÜ
˜EŸI™I hÓ/°·±¸6Ó1BÀEÓ
JÐJrB   c                ó|   — | j                  d«      }|r(| j                  d«      }|r|j                  «       }||d<   |S )z%Return the writeConcernError or None.rn   ro   )ru   Úcopy)rI   ÚwceÚerror_labelss      r@   Ú_get_wce_docrŒ   /  sA   € à
�*‰*Ð(Ó
)€CÙ
ð —z‘z -Ó0ˆÙà—(‘(“*ˆCØ!-ˆC�ÑØ€JrB   c                ór   — | j                  d«      }|rt        |«       t        | «      }|rt        |«       yy)z?Backward compatibility helper for write command error handling.ÚwriteErrorsN)ru   r†   rŒ   rw   )rI   r„   rŠ   s      r@   Ú_check_write_command_responser�   =  s7   € ð —:‘:˜mÓ,€LÙÜ Ô-ä
�vÓ
€CÙ
Ü" 3Õ'ð rB   c                ó  — t        | t        j                  «      r| S t        | t        j                  t        j                  f«      r6t        d„ | D «       «      st        |› d�«      ‚t        j                  | d«      S t        |› d�«      ‚)z»Takes a sequence of field names and returns a matching dictionary.

    ["a", "b"] becomes {"a": 1, "b": 1}

    and

    ["a.b.c", "d", "a.c"] becomes {"a.b.c": 1, "d": 1, "a.c": 1}
    c              3  ó<   K  — | ]  }t        |t        «      –— Œ y ­w©N)rS   rT   )Ú.0Úfields     r@   ú	<genexpr>z'_fields_list_to_dict.<locals>.<genexpr>X  s   è ø€ Ò>¨e”:˜e¤S×)Ñ>ùs   ‚z5 must be a list of key names, each an instance of stré   z' must be a mapping or list of key names)	rS   r   r	   r   ÚSetÚallrU   ÚdictÚfromkeys)ÚfieldsÚoption_names     r@   Ú_fields_list_to_dictr�   I  ss   € ô �&œ#Ÿ+™+Ô&Øˆä�&œ3Ÿ<™<¬¯©Ð1Ô2ÜÑ>°vÔ>Ô>Ü˜{˜mÐ+`ÐaÓbÐbÜ�}‰}˜V QÓ'Ð'ä
�{�mÐ#JÐKÓ
LÐLrB   c                 óÞ   — t         j                  rGt        j                  «       } 	 t        j                  | d   | d   | d   dt         j                  «       ~ yy# t
        $ r Y ~ yw xY w# ~ w xY w)z1Print exceptions raised by subscribers to stderr.r   r–   é   N)ÚsysÚstderrÚexc_infoÚ	tracebackÚprint_exceptionÚOSError)Úeinfos    r@   Ú_handle_exceptionr§   _  sh   € ô ‡z‚zÜ—‘“ˆð	Ü×%Ñ% e¨A¡h°°a±¸%À¹(ÀDÌ#Ï*É*ÔUñ ð øô ò 	Øáð	ûñ ús#   ¦0A Á	A&Á"A) Á%A&Á&A) Á)A,)r=   r   Úreturnzdict[str, float])r>   zOptional[dict[str, float]]r¨   rT   )rO   r   r¨   rT   r’   )r\   r   r]   zOptional[Union[int, str]]r¨   z8Sequence[tuple[str, Union[int, str, Mapping[str, Any]]]])re   r   r¨   zdict[str, Any])rg   r   rh   r   r¨   ÚNone)NFN)ry   r   rz   zOptional[int]r{   z$Optional[Container[Union[int, str]]]r|   Úboolr}   zOptional[PoolOptions]r¨   r©   )r„   z	list[Any]r¨   r
   )r…   r   r¨   r
   )rI   úMapping[str, Any]r¨   zOptional[Mapping[str, Any]])rI   r«   r¨   r©   )r›   z'Union[Mapping[str, Any], Iterable[str]]rœ   rT   r¨   r«   )r¨   r©   )<Ú__doc__Ú
__future__r   r    r£   Úcollectionsr   Útypingr   r   r   r   r	   r
   r   r   r   r9   r   Úpymongo.errorsr   r   r   r   r   r   r   r   r   Úpymongo.hellor   Úpymongo.cursor_sharedr   Úpymongo.operationsr   Úpymongo.pool_optionsr   Úpymongo.typingsr   Ú	frozensetr   Ú__annotations__r    r%   r'   r)   r3   rA   rJ   rQ   r_   ri   rd   r‚   r†   rw   rŒ   r�   r�   r§   rH   rB   r@   ú<module>r¸      s«  ðò JÝ "ã 
Û Ý ÷
÷ 
õ 
õ ÷
÷ 
õ 
õ &áÝ+Ý-Ý0Ý,ñ
 #,àØ
ðó#€�ó ñ ò	
ó	ð ñ
ð �Nó ð *<¹iòó	?ñ 	*Ð ˜ó 	ð (+Ð  Ó *ð %'Ð ˜cÓ &ò

!Ð �Xó 
óó 	ó>ð @DðØðØ#<ðà=óó<ó:
ð >BØ&+Ø'+ðEEØðEEà#ðEEð ;ðEEð  $ð	EEð
 %ðEEð 
óEEóPDóKóó	(ðMØ3ðMØBEðMàóMô,rB   