
    nhG                    H   U d Z ddlmZ ddlZddl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 ddlZddlmZ ddlmZmZmZmZmZmZ e
r$ddlmZ dd	lmZ dd
lmZ ddlmZ ddl m!Z! ddl"m#Z# ddediZ$de%d<   ej
                  jM                  d      r; ejN                         Z(e(e( ejR                          ejT                         de$d<   nej
                  dk(  rK ejN                          ejN                          ejR                          ejV                         d   de$d<   nJej
                  dk(  rn ejX                         Z-ddej\                  j_                  d      xs  ejR                         dja                   e1e2e-dd             de-d   xs d z   de$d<   nej
                  jM                  d      r# ejf                         d   \  Z(Z-Z4e(e(e4e-de$d<   n ejj                   ejN                          ejT                          ejl                               Z7 ejN                         d ja                  e7dd! D  cg c]  } | s| 	 c}        ejR                         e7d!   de$d<    ejp                         jM                  d"      rjd ja                   ejp                         dja                   e1e2ejr                              d#dja                   e1e2ejt                              z  f      e$d$<   nej
                  jM                  d      ryd ja                   ejp                         dja                   e1e2ejt                              d%d ja                   ejN                          ejT                         f      z  f      e$d$<   nEd ja                   ejp                         dja                   e1e2ejt                              f      e$d$<   d&Z;d'Z<d(Z=d)Z>d8d*Z?d9d+Z@d9d,ZAd9d-ZBd9d.ZCd9d/ZDd:d0ZEd;d1ZFd2ZGd<d3ZHd4j                  d5        G d6 d7      ZJyc c} w )=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WindowsPROCESSOR_ARCHITECTURE.   z-SP0java    PyPyz(Python %s)platformz(%s)z/.dockerenvKUBERNETES_SERVICE_HOSTdocker
kubernetesc                     i } t        t              j                         r	t        | d<   t	        j
                  t              r	t        | d<   | S )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    z/var/www/html/SchoolMeal/SchoolMeal/pds_admin_SchoolMeal/Backend/venv/lib/python3.12/site-packages/pymongo/pool_options.pyget_container_env_infor;      s@     IO##%2	)	yy$9	.!    c                     t        j                  d      ryt        j                  d      } | r| j                  d      S y)NAWS_LAMBDA_RUNTIME_APITAWS_EXECUTION_ENVAWS_Lambda_F)r   r6   
startswith)envs    r:   
_is_lambdarC      s6    	yy)*
))'
(C
~~m,,r<   c                 >    t        t        j                  d            S )NFUNCTIONS_WORKER_RUNTIMEboolr   r6    r<   r:   _is_azure_funcrI      s    		4566r<   c                 l    t        t        j                  d      xs t        j                  d            S )N	K_SERVICEFUNCTION_NAMErF   rH   r<   r:   _is_gcp_funcrM      s$    		+&D"))O*DEEr<   c                 >    t        t        j                  d            S )NVERCELrF   rH   r<   r:   
_is_vercelrP      s    		(#$$r<   c                 ^    t               xs" t               xs t               xs
 t               S N)rC   rI   rM   rP   rH   r<   r:   _is_faasrS      s     <M>+M|~MMr<   c                h    t        j                  |       }|sy	 t        |      S # t        $ r Y yw xY w)zMLike os.getenv but returns an int, or None if the value is missing/malformed.N)r   r6   int
ValueError)keyvals     r:   _getenv_intrY      s5    
))C.C3x s   
% 	11c                 8   i } t               }|r|| d<   t               t               t               t	               fj                  d      dk7  r| S t               r5d| d<   t        j                  d      }|r|| d<   t        d      }||| d	<   | S t               rd
| d<   | S t               rGd| d<   t        j                  d      }|r|| d<   t        d      }||| d	<   t        d      }||| d<   | S t	               r!d| d<   t        j                  d      }|r|| d<   | S )Nr9   T   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;   rC   rI   rM   rP   countr   r6   rY   )rB   r9   r]   r_   rc   s        r:   _metadata_envrg      s@   C&(I$Kn&
EKKDQUVV
|"F<("CM AB	 (C& J% 
	"F" J! 
 F,-"CM 45	 (C!"89"!,C J 
F?+"CMJr<   i   c                   t        t        j                  |             t        k  ry| j	                  di       j	                  d      }|rd|i| d<   t        t        j                  |             t        k  ry| j	                  di       j	                  d      }|rd|i| d<   t        t        j                  |             t        k  ry| j                  dd       t        t        j                  |             }|t        k  ry|t        z
  }| j	                  dd      }|r|d|  }|r|| d<   n| j                  dd       t        t        j                  |             }|t        k  ry|t        z
  }| j	                  di       }|r|j	                  d	      d|  }t        |      t        t        d   d	         k\  r	|| d   d	<   nt        d   d	   | d   d	<   t        t        j                  |             }|t        k  ry|t        z
  }|j	                  d      d|  }t        |      t        t        d   d         k\  r	|| d   d<   yt        d   d   | d   d<   yy)
zPerform metadata truncation.NrB   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	            r:   _truncate_metadatarx      s>   
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,:HXy),5h,?	,JHXy)4;;x01--"44jj(8)4{s9X#6v#>??)4HXv&)28)<V)DHXv&! r<   fooidnac                     e Zd ZdZdZeeeddedddddde	dddddf	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddZ
edd       Zedd       Zedd	       Zedd
       Zedd       Zedd       Zed d       Zed!d       Zed!d       Zed d       Zed"d       Zedd       Zed#d       Zed$d       Zed%d       Zed&d       Zedd       Zed'd       Zed(d       Zy))PoolOptionsak  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                $   || _         || _        || _        || _        || _        || _        || _        || _        |	| _        |
| _	        || _
        || _        || _        || _        || _        || _        || _        t#        j$                  t&              | _        |
rd|
i| j(                  d<   t+               r2dj-                  | j(                  d   d   d      | j(                  d   d<   |s2dj-                  | j(                  d   d   d      | j(                  d   d<   |r|j.                  r<dj-                  | j(                  d   d   |j.                        | j(                  d   d<   |j0                  r6dj-                  t&        d   d   |j0                        | j(                  d   d<   |j2                  r0dj-                  t&        d   |j2                        | j(                  d<   t5               }|r|| j(                  d	<   t7        | j(                         y )
Nr   applicationz{}|{}r   casyncr   r,   rB   )_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,   rg   rx   )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_syncrB   s                       r:   __init__zPoolOptions.__init__=  s   *  -,'<$!0 .$6!(-H*!0 &:# .,&,(--	2.4g->DOOM* 707)&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                    | j                   S )z;A :class:`~pymongo.auth.MongoCredentials` instance or None.)r   r   s    r:   _credentialszPoolOptions._credentials       !!!r<   c                   i }| j                   t        k7  r| j                   |d<   | j                  t        k7  r| j                  |d<   | j                  t
        k7  r | j                  J | j                  dz  |d<   | j                  t        k7  r | j                  J | j                  dz  |d<   | j                  t        k7  r| j                  |d<   |S )zqThe 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     r:   non_default_optionsz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                    | j                   S )aQ  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    r:   r   zPoolOptions.max_pool_size  s     ###r<   c                    | j                   S )zThe minimum required number of concurrent connections that the pool
        will maintain to each connected server. Default is 0.
        )r   r   s    r:   r   zPoolOptions.min_pool_size  s    
 ###r<   c                    | j                   S )zgThe maximum number of concurrent connection creation attempts per
        pool. Defaults to 2.
        )r   r   s    r:   r   zPoolOptions.max_connecting  s    
 $$$r<   c                    | j                   S rR   )r   r   s    r:   r   zPoolOptions.pause_enabled  s    ###r<   c                    | j                   S )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    r:   r   z!PoolOptions.max_idle_time_seconds  s     +++r<   c                    | j                   S )z>How long a connection can take to be opened before timing out.)r   r   s    r:   r   zPoolOptions.connect_timeout       %%%r<   c                    | j                   S )zBHow long a send or receive on a socket can take before timing out.)r   r   s    r:   r   zPoolOptions.socket_timeout  s     $$$r<   c                    | j                   S )zhHow long a thread will wait for a socket from the pool if the pool
        has no free sockets.
        )r   r   s    r:   r   zPoolOptions.wait_queue_timeout  s    
 (((r<   c                    | j                   S )zAn SSLContext instance or None.)r   r   s    r:   _ssl_contextzPoolOptions._ssl_context  r   r<   c                    | j                   S )z If True skip ssl.match_hostname.)r   r   s    r:   r   z'PoolOptions.tls_allow_invalid_hostnames  s     111r<   c                    | j                   S )z2An instance of pymongo.monitoring._EventListeners.)r   r   s    r:   _event_listenerszPoolOptions._event_listeners  r   r<   c                    | j                   S )zAThe application name, for sending with hello in server handshake.)r   r   s    r:   r   zPoolOptions.appname  s     ~~r<   c                    | j                   S )z=Driver name and version, for sending with hello in handshake.)r   r   s    r:   r   zPoolOptions.driver  s     }}r<   c                    | j                   S rR   )r   r   s    r:   _compression_settingsz!PoolOptions._compression_settings  s    ***r<   c                6    | j                   j                         S )zCA dict of metadata about the application, driver, os, and platform.)r   r   r   s    r:   rp   zPoolOptions.metadata  s     ##%%r<   c                    | j                   S )z'A pymongo.server_api.ServerApi or None.)r   r   s    r:   r   zPoolOptions.server_api  s        r<   c                    | j                   S )z6True if this Pool is configured in load balanced mode.)r   r   s    r:   r   zPoolOptions.load_balanced	  s     ###r<   )$r   rU   r   rU   r   Optional[int]r   Optional[float]r   r   r   r   r   Optional[SSLContext]r   rG   r   Optional[_EventListeners]r   Optional[str]r   Optional[DriverInfo]r   Optional[CompressionSettings]r   rU   r   rG   r   Optional[ServerApi]r   Optional[bool]r   Optional[MongoCredential]r   r   )returnr   r   r   )r   float)r   rU   r   rG   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )__name__
__module____qualname____doc__	__slots__r   r   r   r   r
   r   propertyr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rp   r   r   rH   r<   r:   r|   r|     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<   r|   )r   zdict[str, str]r   )rW   strr   r   r   )rp   zMutableMapping[str, Any]r   None)Kr   
__future__r   r   r   r,   syspathlibr   typingr   r   r   r   rk   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__rA   system_namemachinereleasemac_vergetwindowsversion_verenvironrn   joinmapr   java_ver_archsystem_aliasr   _aliasedpython_implementationpypy_version_infoversion_infor3   r7   r5   r8   r;   rC   rI   rM   rP   rS   rY   rg   rm   rx   rl   r|   )parts   0r:   <module>r     s   #  	  
  ? ?    3?.24, &	k'RS	> S<<7#
 HOOE(((*#8##%IdO 	\\X!!(((* $8##%a(IdO 	\\W 3  "D

'?@VDTHDTDTDV88CT"1X./CRC7H2IIIdO 	\\V$***,R0E4 IdO %x$$_X__%68H8H8H8JL\HL\L\L^_H!8BQ<@44$@A(((*A;	IdO "8!!#..v6HH*H**,HHSc3345CHHSc.>.>%?@@	
Ij 	\\V$HH*H**,HHSc../0SXXx02B(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   P
P
