
    IiF                       % S r SSKJr  SSKrSSKrSSKrSSKrSSKJr  SSK	J
r
JrJrJr  SSKrSSKJr  SSKJrJrJrJrJrJr  \
(       a$  SSKJr  SS	KJr  SS
KJr  SSKJr  SSK J!r!  SSK"J#r#  SS\S.0r$S\%S'   \R
                  RM                  S5      (       a;  \RN                  " 5       r(\(\(\RR                  " 5       \RT                  " 5       S.\$S'   GO\R
                  S:X  aK  \RN                  " 5       \RN                  " 5       \RR                  " 5       \RV                  " 5       S   S.\$S'   GOc\R
                  S:X  ay  \RN                  " 5       SRY                  \RN                  " 5       \RT                  " 5       45      \RR                  " 5       SRY                  \RZ                  " 5       SS 5      S.\$S'   O\R
                  RM                  S5      (       a#  \R\                  " 5       S   u  r(r/r0\(\(\0\/S.\$S'   O\Rb                  " \RN                  " 5       \RT                  " 5       \Rd                  " 5       5      r3\RN                  " 5       SRY                  \3SS  V s/ s H  o (       d  M  U PM     sn 5      \RR                  " 5       \3S   S.\$S'   \Rh                  " 5       RM                  S5      (       aj  SRY                  \Rh                  " 5       S RY                  \5" \6\Rn                  5      5      S!S RY                  \5" \6\Rp                  5      5      -  45      \$S"'   O\R
                  RM                  S5      (       ay  SRY                  \Rh                  " 5       S RY                  \5" \6\Rp                  5      5      S#SRY                  \RN                  " 5       \RT                  " 5       45      -  45      \$S"'   OESRY                  \Rh                  " 5       S RY                  \5" \6\Rp                  5      5      45      \$S"'   S$r9S%r:S&r;S'r<S6S( jr=S7S) jr>S7S* jr?S7S+ jr@S7S, jrAS7S- jrBS8S. jrCS9S/ jrDS0rES:S1 jrFS2R                  S35         " S4 S55      rHgs  sn f );zPool options for AsyncMongoClient/MongoClient.

.. seealso:: This module is compatible with both the synchronous and asynchronous PyMongo APIs.
    )annotationsN)Path)TYPE_CHECKINGAnyMutableMappingOptional)__version__)MAX_CONNECTINGMAX_IDLE_TIME_SECMAX_POOL_SIZEMIN_POOL_SIZEWAIT_QUEUE_TIMEOUThas_c)MongoCredential)CompressionSettings)
DriverInfo)_EventListeners)
SSLContext)	ServerApidriverPyMongo)nameversiondict[str, Any]	_METADATAlinux)typer   architecturer   osdarwinwin32 -      java   PyPy.z(Python %s)platformz(%s)z/.dockerenvKUBERNETES_SERVICE_HOSTdocker
kubernetesc                     0 n [        [        5      R                  5       (       a	  [        U S'   [        R
                  " [        5      (       a	  [        U S'   U $ )zReturns the runtime and orchestrator of a container.
If neither value is present, the metadata client.env.container field will be omitted.runtimeorchestrator)r   DOCKER_ENV_PATHexistsRUNTIME_NAME_DOCKERr   getenvENV_VAR_K8SORCHESTRATOR_NAME_K8S)	containers    :/venv/lib/python3.13/site-packages/pymongo/pool_options.pyget_container_env_infor:      sF     IO##%%2	)	yy$9	.!    c                     [         R                  " S5      (       a  g[         R                  " S5      n U (       a  U R                  S5      $ g)NAWS_LAMBDA_RUNTIME_APITAWS_EXECUTION_ENVAWS_Lambda_F)r   r5   
startswith)envs    r9   
_is_lambdarB      s9    	yy)**
))'
(C
~~m,,r;   c                 @    [        [        R                  " S5      5      $ )NFUNCTIONS_WORKER_RUNTIMEboolr   r5    r;   r9   _is_azure_funcrH      s    		4566r;   c                 z    [        [        R                  " S5      =(       d    [        R                  " S5      5      $ )N	K_SERVICEFUNCTION_NAMErE   rG   r;   r9   _is_gcp_funcrL      s$    		+&D"))O*DEEr;   c                 @    [        [        R                  " S5      5      $ )NVERCELrE   rG   r;   r9   
_is_vercelrO      s    		(#$$r;   c                 |    [        5       =(       d,    [        5       =(       d    [        5       =(       d
    [        5       $ N)rB   rH   rL   rO   rG   r;   r9   _is_faasrR      s     <M>+M|~MMr;   c                v    [         R                  " U 5      nU(       d  g [        U5      $ ! [         a     gf = f)zMLike os.getenv but returns an int, or None if the value is missing/malformed.N)r   r5   int
ValueError)keyvals     r9   _getenv_intrX      s5    
))C.C3x s   
+ 
88c                    0 n [        5       nU(       a  XS'   [        5       [        5       [        5       [	        5       4R                  S5      S:w  a  U $ [        5       (       a:  SU S'   [        R                  " S5      nU(       a  X S'   [        S5      nUb  X0S	'   U $ [        5       (       a  S
U S'   U $ [        5       (       aL  SU S'   [        R                  " S5      nU(       a  X S'   [        S5      nUb  X0S	'   [        S5      nUb  X@S'   U $ [	        5       (       a&  SU S'   [        R                  " S5      nU(       a  X S'   U $ )Nr8   Tr$   z
aws.lambdar   
AWS_REGIONregionAWS_LAMBDA_FUNCTION_MEMORY_SIZE	memory_mbz
azure.funczgcp.funcFUNCTION_REGIONFUNCTION_MEMORY_MBFUNCTION_TIMEOUT_SECtimeout_secvercelVERCEL_REGION)	r:   rB   rH   rL   rO   countr   r5   rX   )rA   r8   r[   r]   ra   s        r9   _metadata_envre      s;   C&(I$Kn&
EKKDQUVV
||"F<("M AB	 (& J% 
		"F" J! 
 F,-"M 45	 (!"89"!, J 
F?+"MJr;   i   c                   [        [        R                  " U 5      5      [        ::  a  gU R	                  S0 5      R	                  S5      nU(       a  SU0U S'   [        [        R                  " U 5      5      [        ::  a  gU R	                  S0 5      R	                  S5      nU(       a  SU0U S'   [        [        R                  " U 5      5      [        ::  a  gU R                  SS5        [        [        R                  " U 5      5      nU[        ::  a  gU[        -
  nU R	                  SS5      nU(       a  USU*  nU(       a  XPS'   OU R                  SS5        [        [        R                  " U 5      5      nU[        ::  a  gU[        -
  nU R	                  S0 5      nU(       a  UR	                  S	5      SU*  n[        U5      [        [        S   S	   5      :  a  XpS   S	'   O[        S   S	   U S   S	'   [        [        R                  " U 5      5      nU[        ::  a  gU[        -
  nUR	                  S5      SU*  n[        U5      [        [        S   S   5      :  a  XS   S'   g[        S   S   U S   S'   gg)
zPerform metadata truncation.NrA   r   r   r   r+    r   r   )lenbsonencode_MAX_METADATA_SIZEgetpopr   )	metadataenv_nameos_typeencoded_sizeoverflowplatr   driver_versiondriver_names	            r9   _truncate_metadatarv      s8   
4;;x !%77||E2&**62H!8,
4;;x !%77ll4$((0G '*
4;;x !%77LLt{{8,-L))00H<<
B'DJhY#Z&t{{8,-L))00H\\(B'FI.z	:~#i&9)&D"EE,:Xy),5h,?	,JHXy)4;;x01--"44jj(8)4{s9X#6v#>??)4Xv&)28)<V)DHXv&! r;   fooidnac                     \ rS rSrSrSr\\\SS\	SSSSSS\
SSSSS4                                   SS jjr\SS j5       r\SS	 j5       r\SS
 j5       r\S S j5       r\S S j5       r\S!S j5       r\S"S j5       r\S#S j5       r\S#S j5       r\S"S j5       r\S$S j5       r\S!S j5       r\S%S j5       r\S&S j5       r\S'S j5       r\S(S j5       r\SS j5       r\S)S j5       r\S*S j5       rSr g)+PoolOptionsi  aO  Read only connection pool options for an AsyncMongoClient/MongoClient.

Should not be instantiated directly by application developers. Access
a client's pool options via
:attr:`~pymongo.client_options.ClientOptions.pool_options` instead::

  pool_opts = client.options.pool_options
  pool_opts.max_pool_size
  pool_opts.min_pool_size

)__max_pool_size__min_pool_size__max_idle_time_seconds__connect_timeout__socket_timeout__wait_queue_timeout__ssl_context__tls_allow_invalid_hostnames__event_listeners	__appname__driver
__metadata__compression_settings__max_connecting__pause_enabled__server_api__load_balanced__credentialsNFTc                X   Xl         X l        X0l        X@l        XPl        X`l        Xpl        Xl        Xl        Xl	        Xl
        Xl        Xl        Xl        Xl        UU l        UU l        ["        R$                  " [&        5      U l        U
(       a  SU
0U R(                  S'   [+        5       (       a2  SR-                  U R(                  S   S   S5      U R(                  S   S'   U(       d2  SR-                  U R(                  S   S   S5      U R(                  S   S'   U(       a  UR.                  (       a<  SR-                  U R(                  S   S   UR.                  5      U R(                  S   S'   UR0                  (       a6  SR-                  [&        S   S   UR0                  5      U R(                  S   S'   UR2                  (       a0  SR-                  [&        S   UR2                  5      U R(                  S'   [5        5       nU(       a  UU R(                  S	'   [7        U R(                  5        g )
Nr   applicationz{}|{}r   casyncr   r+   rA   )_PoolOptions__max_pool_size_PoolOptions__min_pool_size#_PoolOptions__max_idle_time_seconds_PoolOptions__connect_timeout_PoolOptions__socket_timeout _PoolOptions__wait_queue_timeout_PoolOptions__ssl_context)_PoolOptions__tls_allow_invalid_hostnames_PoolOptions__event_listeners_PoolOptions__appname_PoolOptions__driver"_PoolOptions__compression_settings_PoolOptions__max_connecting_PoolOptions__pause_enabled_PoolOptions__server_api_PoolOptions__load_balanced_PoolOptions__credentialscopydeepcopyr   _PoolOptions__metadatar   formatr   r   r+   re   rv   )selfmax_pool_sizemin_pool_sizemax_idle_time_secondsconnect_timeoutsocket_timeoutwait_queue_timeoutssl_contexttls_allow_invalid_hostnamesevent_listenersappnamer   compression_settingsmax_connectingpause_enabled
server_apiload_balancedcredentialsis_syncrA   s                       r9   __init__PoolOptions.__init__<  s   *  -,'<$!0 .$6!(-H*!0 &:# .,&,(--	2.4g->DOOM* 7707)&11DOOH%f- 07)&11DOOH%f- {{4;NNOOH-f5KK5)&1 ~~7>~~h'	2NN8))4 .5nnYz=RTZTcTc.d
+o%(DOOE"4??+r;   c                    U R                   $ )z;A :class:`~pymongo.auth.MongoCredentials` instance or None.)r   r   s    r9   _credentialsPoolOptions._credentials       !!!r;   c                   0 nU R                   [        :w  a  U R                   US'   U R                  [        :w  a  U R                  US'   U R                  [
        :w  a!  U R                  c   eU R                  S-  US'   U R                  [        :w  a!  U R                  c   eU R                  S-  US'   U R                  [        :w  a  U R                  US'   U$ )zaThe non-default options this pool was created with.

Added for CMAP's :class:`PoolCreatedEvent`.
maxPoolSizeminPoolSizei  maxIdleTimeMSwaitQueueTimeoutMSmaxConnecting)
r   r   r   r   r   r   r   r   r   r
   )r   optss     r9   non_default_optionsPoolOptions.non_default_options  s     =0"&"6"6D=0"&"6"6D''+<<//;;;$($@$@4$GD!$$(::,,888)-)B)BT)ID%&  N2$($9$9D!r;   c                    U R                   $ )a	  The maximum allowable number of concurrent connections to each
connected server. Requests to a server will block if there are
`maxPoolSize` outstanding connections to the requested server.
Defaults to 100. Cannot be 0.

When a server's pool has reached `max_pool_size`, operations for that
server block waiting for a socket to be returned to the pool. If
``waitQueueTimeoutMS`` is set, a blocked operation will raise
:exc:`~pymongo.errors.ConnectionFailure` after a timeout.
By default ``waitQueueTimeoutMS`` is not set.
)r   r   s    r9   r   PoolOptions.max_pool_size  s     ###r;   c                    U R                   $ )zzThe minimum required number of concurrent connections that the pool
will maintain to each connected server. Default is 0.
)r   r   s    r9   r   PoolOptions.min_pool_size  s    
 ###r;   c                    U R                   $ )zWThe maximum number of concurrent connection creation attempts per
pool. Defaults to 2.
)r   r   s    r9   r   PoolOptions.max_connecting  s    
 $$$r;   c                    U R                   $ rQ   )r   r   s    r9   r   PoolOptions.pause_enabled  s    ###r;   c                    U R                   $ )zThe maximum number of seconds that a connection can remain
idle in the pool before being removed and replaced. Defaults to
`None` (no limit).
)r   r   s    r9   r   !PoolOptions.max_idle_time_seconds  s     +++r;   c                    U R                   $ )z>How long a connection can take to be opened before timing out.)r   r   s    r9   r   PoolOptions.connect_timeout       %%%r;   c                    U R                   $ )zBHow long a send or receive on a socket can take before timing out.)r   r   s    r9   r   PoolOptions.socket_timeout  s     $$$r;   c                    U R                   $ )zXHow long a thread will wait for a socket from the pool if the pool
has no free sockets.
)r   r   s    r9   r   PoolOptions.wait_queue_timeout  s    
 (((r;   c                    U R                   $ )zAn SSLContext instance or None.)r   r   s    r9   _ssl_contextPoolOptions._ssl_context  r   r;   c                    U R                   $ )z If True skip ssl.match_hostname.)r   r   s    r9   r   'PoolOptions.tls_allow_invalid_hostnames  s     111r;   c                    U R                   $ )z2An instance of pymongo.monitoring._EventListeners.)r   r   s    r9   _event_listenersPoolOptions._event_listeners  r   r;   c                    U R                   $ )zAThe application name, for sending with hello in server handshake.)r   r   s    r9   r   PoolOptions.appname  s     ~~r;   c                    U R                   $ )z=Driver name and version, for sending with hello in handshake.)r   r   s    r9   r   PoolOptions.driver  s     }}r;   c                    U R                   $ rQ   )r   r   s    r9   _compression_settings!PoolOptions._compression_settings  s    ***r;   c                6    U R                   R                  5       $ )zCA dict of metadata about the application, driver, os, and platform.)r   r   r   s    r9   rn   PoolOptions.metadata  s     ##%%r;   c                    U R                   $ )z'A pymongo.server_api.ServerApi or None.)r   r   s    r9   r   PoolOptions.server_api  s        r;   c                    U R                   $ )z6True if this Pool is configured in load balanced mode.)r   r   s    r9   r   PoolOptions.load_balanced  s     ###r;   )r   r   r~   r   r   r   r   r   r}   r{   r   r|   r   r   r   r   r   r   )$r   rT   r   rT   r   Optional[int]r   Optional[float]r   r   r   r   r   Optional[SSLContext]r   rF   r   Optional[_EventListeners]r   Optional[str]r   Optional[DriverInfo]r   Optional[CompressionSettings]r   rT   r   rF   r   Optional[ServerApi]r   Optional[bool]r   Optional[MongoCredential]r   r   )returnr   r   r   )r   float)r   rT   r   rF   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )!__name__
__module____qualname____firstlineno____doc__	__slots__r   r   r   r   r
   r   propertyr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rn   r   r   __static_attributes__rG   r;   r9   rz   rz     s   
I. +*/@+/*.,>,0,159!%'+>B,"*.(,15"&'O,O, O,  -	O,
 )O, (O, *O, *O, &*O, 3O, O, %O, <O, O, O,  (!O," &#O,$ /%O,&  'O,b " "  ( $ $ $ $ % % $ $ , , & & % % ) ) " " 2 2 & &     + + & & ! ! $ $r;   rz   )r   zdict[str, str]r   )rV   strr   r   r   )rn   zMutableMapping[str, Any]r   None)Ir   
__future__r   r   r   r+   syspathlibr   typingr   r   r   r   ri   pymongor	   pymongo.commonr
   r   r   r   r   r   pymongo.auth_sharedr   pymongo.compression_supportr   pymongo.driver_infor   pymongo.monitoringr   pymongo.pyopenssl_contextr   pymongo.server_apir   r   __annotations__r@   system_namemachinereleasemac_verjoin	win32_verjava_ver_ver_archsystem_aliasr   _aliasedpython_implementationmapr  pypy_version_infoversion_infor2   r6   r4   r7   r:   rB   rH   rL   rO   rR   rX   re   rk   rv   rj   rz   )parts   0r9   <module>r$     s   #  	  
  ? ?    3?.24, &	k'RS	> S<<7##
 OOE ((*##%IdO 	\\X!! ((* ##%a(IdO 	\\W!(//+X-=-=-?@A ((*88H..0156IdO 	\\V$$!**,R0E4 IdO $$X__%68H8H8JHL\L\L^_H!8BQ<@<44$<@A ((*A;	IdO !!#..v66HH**,HHSc3345CHHSc.>.>%?@@	
Ij 	\\V$$HH**,HHSc../0SXXx0(2B2B2DEFF	
Ij  HH		'	'	)388CS=M=M4N+OPIj  ' $ 
7F%N"J  4Ev V q$ q$s As   "
Q
0Q
