
    gh 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         R/opt/movilizia/ApiFast/venv/lib/python3.12/site-packages/pymongo/helpers_shared.py_get_timeout_detailsrA   p   sl    G!G++N--O&~g%3d%:!"&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'!AgYb)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*    88t<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 )zHelper 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+Ed;FWEXYZZi())k3' ),--S]]3$$S[[1))+,,K$7]^bcn^o]pq  )+ 	 D$$i(MM$	  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    
 j4"<=NQUV`Qaa
 	
 z?899E*ckk* 	CsOE$S%0E#J	 L  	D$$i(JC$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    c3VW[\_W`Vabccec3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LL LL 	
 	
 !%8H%D-.,,}-MM='23"6*~G e_++- 	Eyy"599T?		 XF;;vD '''' %%!&(33		!	!V	+/Cv/Mfh// $$h8HII	29=O,_==FvtX7GHH	VT85EFF
64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yyE!		( 3UEBB
UYYx(%))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EIIh/61BEJJ
EIIh/61BE
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
 zz-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      )zTakes 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:eS)>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}}VQ''
{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     zz	%%eAh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   