o
    'hG                  
   @  sp  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
rkd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&dre' Z(e(e(e) e* de$d< nejdkre' e' e) e+ d de$d< noejdkre, Z-ddej./dpe) d0e1e2e-dd de-d pd  de$d< nAej&dre3 d \Z(Z-Z4e(e(e4e-de$d< n(e5e' e* e6 Z7e' d 0d!d" e7dd# D e) e7d# de$d< e8 &d$r;d 0e8 d0e1e2ej9d%d0e1e2ej: fe$d&< n8ej&drad 0e8 d0e1e2ej:d'd 0e' e* f fe$d&< nd 0e8 d0e1e2ej:fe$d&< d(Z;d)Z<d*Z=d+Z>dLd.d/Z?dMd1d2Z@dMd3d4ZAdMd5d6ZBdMd7d8ZCdMd9d:ZDdNd>d?ZEdOd@dAZFdBZGdPdFdGZHdHIdI G dJdK dKZJdS )QzPool 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 c                 C  s   g | ]}|r|qS  r)   ).0partr)   r)   P/var/www/html/olx_land/venv/lib/python3.10/site-packages/pymongo/pool_options.py
<listcomp>b   s    r-      PyPyz(Python %s)platformz(%s)z/.dockerenvKUBERNETES_SERVICE_HOSTdocker
kubernetesreturndict[str, str]c                  C  s.   i } t t rt| d< t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)	containerr)   r)   r,   get_container_env_info   s   
r?   boolc                  C  s*   t drdS t d} | r| dS dS )NAWS_LAMBDA_RUNTIME_APITAWS_EXECUTION_ENVAWS_Lambda_F)r   r;   
startswith)envr)   r)   r,   
_is_lambda   s   


rF   c                   C     t tdS )NFUNCTIONS_WORKER_RUNTIMEr@   r   r;   r)   r)   r)   r,   _is_azure_func      rJ   c                   C  s   t tdp
tdS )N	K_SERVICEFUNCTION_NAMErI   r)   r)   r)   r,   _is_gcp_func      rN   c                   C  rG   )NVERCELrI   r)   r)   r)   r,   
_is_vercel   rK   rQ   c                   C  s   t  pt pt pt S N)rF   rJ   rN   rQ   r)   r)   r)   r,   _is_faas   rO   rS   keystrOptional[int]c                 C  s2   t | }|s	dS zt|W S  ty   Y dS w )zMLike os.getenv but returns an int, or None if the value is missing/malformed.N)r   r;   int
ValueError)rT   valr)   r)   r,   _getenv_int   s   

rZ   c                  C  s
  i } t  }|r|| d< t t t t fddkr| S t r<d| d< td}|r.|| d< td}|d ur:|| d	< | S t rEd
| d< | S t rqd| d< td}|rW|| d< td}|d urc|| d	< td}|d uro|| d< | S t rd| d< td}|r|| d< | S )Nr>   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?   rF   rJ   rN   rQ   countr   r;   rZ   )rE   r>   r]   r_   rc   r)   r)   r,   _metadata_env   sH   


rg   i   metadataMutableMapping[str, Any]Nonec           	      C  s  t t| tkrdS | di d}|rd|i| d< t t| tkr'dS | di d}|r8d|i| d< t t| tkrCdS | dd t t| }|tkrVdS |t }| dd}|ri|d|  }|rp|| d< n| dd t t| }|tkrdS |t }| di }|r|d	d|  }t |t td d	 kr|| d d	< n
td d	 | d d	< t t| }|tkrdS |t }|dd|  }t |t td d kr|| d d< dS td d | d d< dS dS )
zPerform metadata truncation.NrE   r   r   r   r0    r   r   )lenbsonencode_MAX_METADATA_SIZEgetpopr   )	rh   env_nameos_typeencoded_sizeoverflowplatr   driver_versiondriver_namer)   r)   r,   _truncate_metadata   sT   
ry   fooidnac                   @  sN  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dOd$d%Z
edPd'd(ZedQd*d+ZedRd-d.ZedSd/d0ZedSd1d2ZedTd3d4ZedUd5d6ZedVd7d8ZedVd9d:ZedUd;d<ZedWd=d>ZedTd?d@ZedXdAdBZedYdCdDZedZdEdFZed[dGdHZedQdIdJZed\dKdLZed]dMdNZdS )^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__credentialsNFTmax_pool_sizerW   min_pool_sizemax_idle_time_secondsrV   connect_timeoutOptional[float]socket_timeoutwait_queue_timeoutssl_contextOptional[SSLContext]tls_allow_invalid_hostnamesr@   event_listenersOptional[_EventListeners]appnameOptional[str]r   Optional[DriverInfo]compression_settingsOptional[CompressionSettings]max_connectingpause_enabled
server_apiOptional[ServerApi]load_balancedOptional[bool]credentialsOptional[MongoCredential]is_syncc                 C  s`  || _ || _|| _|| _|| _|| _|| _|| _|	| _|
| _	|| _
|| _|| _|| _|| _|| _|| _tt| _|
rBd|
i| jd< t rUd| jd d d| jd d< |sgd| jd d d| jd d< |r|jr}d| jd d |j| jd d< |jrdtd d |j| jd d< |jrdtd |j| jd< t }|r|| jd	< t| j d S )
Nr   applicationz{}|{}r   casyncr   r0   rE   )_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   r0   rg   ry   )selfr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rE   r)   r)   r,   __init__=  s^   


zPoolOptions.__init__r4   c                 C     | j S )z;A :class:`~pymongo.auth.MongoCredentials` instance or None.)r   r   r)   r)   r,   _credentials     zPoolOptions._credentialsr   c                 C  s   i }| j tkr| j |d< | jtkr| j|d< | jtkr)| jdus"J | jd |d< | jtkr<| jdus5J | jd |d< | jt	krF| j|d< |S )zqThe non-default options this pool was created with.

        Added for CMAP's :class:`PoolCreatedEvent`.
        maxPoolSizeminPoolSizeNi  maxIdleTimeMSwaitQueueTimeoutMSmaxConnecting)
r   r   r   r   r   r
   r   r   r   r	   )r   optsr)   r)   r,   non_default_options  s   







zPoolOptions.non_default_optionsfloatc                 C  r   )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   r)   r)   r,   r     s   zPoolOptions.max_pool_sizec                 C  r   )zThe minimum required number of concurrent connections that the pool
        will maintain to each connected server. Default is 0.
        )r   r   r)   r)   r,   r        zPoolOptions.min_pool_sizec                 C  r   )zgThe maximum number of concurrent connection creation attempts per
        pool. Defaults to 2.
        )r   r   r)   r)   r,   r     r   zPoolOptions.max_connectingc                 C  r   rR   )r   r   r)   r)   r,   r        zPoolOptions.pause_enabledc                 C  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   r)   r)   r,   r     s   z!PoolOptions.max_idle_time_secondsc                 C  r   )z>How long a connection can take to be opened before timing out.)r   r   r)   r)   r,   r     r   zPoolOptions.connect_timeoutc                 C  r   )zBHow long a send or receive on a socket can take before timing out.)r   r   r)   r)   r,   r     r   zPoolOptions.socket_timeoutc                 C  r   )zhHow long a thread will wait for a socket from the pool if the pool
        has no free sockets.
        )r   r   r)   r)   r,   r     r   zPoolOptions.wait_queue_timeoutc                 C  r   )zAn SSLContext instance or None.)r   r   r)   r)   r,   _ssl_context  r   zPoolOptions._ssl_contextc                 C  r   )z If True skip ssl.match_hostname.)r   r   r)   r)   r,   r     r   z'PoolOptions.tls_allow_invalid_hostnamesc                 C  r   )z2An instance of pymongo.monitoring._EventListeners.)r   r   r)   r)   r,   _event_listeners  r   zPoolOptions._event_listenersc                 C  r   )zAThe application name, for sending with hello in server handshake.)r   r   r)   r)   r,   r     r   zPoolOptions.appnamec                 C  r   )z=Driver name and version, for sending with hello in handshake.)r   r   r)   r)   r,   r     r   zPoolOptions.driverc                 C  r   rR   )r   r   r)   r)   r,   _compression_settings  r   z!PoolOptions._compression_settingsc                 C  s
   | j  S )zCA dict of metadata about the application, driver, os, and platform.)r   r   r   r)   r)   r,   rh     s   
zPoolOptions.metadatac                 C  r   )z'A pymongo.server_api.ServerApi or None.)r   r   r)   r)   r,   r     r   zPoolOptions.server_apic                 C  r   )z6True if this Pool is configured in load balanced mode.)r   r   r)   r)   r,   r   	  r   zPoolOptions.load_balanced)$r   rW   r   rW   r   rV   r   r   r   r   r   rV   r   r   r   r@   r   r   r   r   r   r   r   r   r   rW   r   r@   r   r   r   r   r   r   r   r   )r4   r   r4   r   )r4   r   )r4   rW   r4   r@   )r4   rV   )r4   r   )r4   r   )r4   r   )r4   r   )r4   r   )r4   r   )r4   r   )r4   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   rh   r   r   r)   r)   r)   r,   r|     sx    Qr|   )r4   r5   r   )rT   rU   r4   rV   r   )rh   ri   r4   rj   )Kr   
__future__r   r   r   r0   syspathlibr   typingr   r   r   r   rm   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__rD   system_namemachinereleasemac_vergetwindowsversion_verenvironrp   joinmaprU   java_ver_archsystem_aliasr   _aliasedpython_implementationpypy_version_infoversion_infor8   r<   r:   r=   r?   rF   rJ   rN   rQ   rS   rZ   rg   ro   ry   rn   r|   r)   r)   r)   r,   <module>   s    	


(





	




%

;