Ë
    Ü_ËiL2  ã                  ó„  — d Z ddlmZ ddlmZmZmZmZmZ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mZ dd	lmZ dd
lmZ ddlmZmZmZ ddlmZ ddlm Z  ddl!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„Z-dd„Z.dd„Z/d d„Z0	 	 	 	 	 	 d!d„Z1	 	 	 	 	 	 	 	 	 	 	 	 d"d„Z2 G d„ d«      Z3y)#z†Tools to parse mongo client options.

.. seealso:: This module is compatible with both the synchronous and asynchronous PyMongo APIs.
é    )Úannotations)ÚTYPE_CHECKINGÚAnyÚMappingÚOptionalÚSequenceÚcast)Ú_parse_codec_options)Úcommon)ÚCompressionSettings)ÚConfigurationError)Ú_EventListenerÚ_EventListeners)ÚPoolOptions)ÚReadConcern)Ú_ServerModeÚmake_read_preferenceÚread_pref_mode_from_name)Úany_server_selector)Úget_ssl_context)ÚWriteConcernÚvalidate_boolean)ÚCodecOptions)ÚMongoCredential)ÚAutoEncryptionOpts)Ú
SSLContext)Ú_ServerSelectorc                ó€   — |j                  d| rdnd«      }|j                  d«      }| s|rddlm}  |||| |||«      S y)z!Parse authentication credentials.ÚauthmechanismÚDEFAULTNÚ
authsourcer   )Ú_build_credentials_tuple)ÚgetÚpymongo.auth_sharedr"   )ÚusernameÚpasswordÚdatabaseÚoptionsÚ	mechanismÚsourcer"   s          úY/var/www/pod-logistic/pod-api/venv/lib/python3.12/site-packages/pymongo/client_options.pyÚ_parse_credentialsr,   /   sG   € ð —‘˜O¹(©YÈÓM€IØ�[‰[˜Ó&€FÙ‘9Ý@á'¨	°6¸8ÀXÈwÐX`ÓaÐaØó    c                ó®   — d| v r| d   S | j                  dd«      }t        |«      }| j                  d«      }| j                  dd«      }t        |||«      S )zParse read preference options.Úread_preferenceÚreadpreferenceÚprimaryÚreadpreferencetagsÚmaxstalenesssecondséÿÿÿÿ)r#   r   r   )r(   ÚnameÚmodeÚtagsÚmax_stalenesss        r+   Ú_parse_read_preferencer9   <   s`   € à˜GÑ#ØÐ(Ñ)Ð)à�;‰;Ð'¨Ó3€DÜ# DÓ)€DØ�;‰;Ð+Ó,€DØ—K‘KÐ 5°rÓ:€MÜ  d¨MÓ:Ð:r-   c                ó¦   — | j                  d«      }| j                  d«      }| j                  d«      }| j                  d«      }t        ||||«      S )zParse write concern options.ÚwÚ
wtimeoutmsÚjournalÚfsync)r#   r   )r(   ÚconcernÚwtimeoutÚjr>   s        r+   Ú_parse_write_concernrB   H   sK   € à�k‰k˜#Ó€GØ�{‰{˜<Ó(€HØ�‰�IÓ€AØ�K‰K˜Ó €EÜ˜ ¨1¨eÓ4Ð4r-   c                ó:   — | j                  d«      }t        |«      S )zParse read concern options.Úreadconcernlevel)r#   r   )r(   r?   s     r+   Ú_parse_read_concernrE   Q   s   € à�k‰kÐ,Ó-€GÜ�wÓÐr-   c           
     óH  — | j                  d«      }|�t        d|«       | j                  d«      }| j                  d«      }| j                  d«      }| j                  d«      }| j                  dd«      }| j                  d	d«      }| j                  d
d«      }	g }
dD ]  }|| v sŒ| |   sŒ|
j                  |«       Œ  dD ]  }|| v sŒ| |   rŒ|
j                  |«       Œ  |
r$|€d}n|st        ddj	                  |
«      z  «      ‚|rt        |||||||	|«      }||fS d|fS )zParse ssl options.ÚtlsNÚtlscertificatekeyfileÚtlscertificatekeyfilepasswordÚ	tlscafileÚ
tlscrlfileÚtlsallowinvalidcertificatesFÚtlsallowinvalidhostnamesÚtlsdisableocspendpointcheck)rH   rI   rJ   rK   )rL   rM   rN   TzmTLS has not been enabled but the following tls parameters have been set: %s. Please set `tls=True` or remove.z, )r#   r   Úappendr   Újoinr   )r(   Úis_syncÚuse_tlsÚcertfileÚ
passphraseÚca_certsÚcrlfileÚallow_invalid_certificatesÚallow_invalid_hostnamesÚdisable_ocsp_endpoint_checkÚenabled_tls_optsÚoptÚctxs                r+   Ú_parse_ssl_optionsr]   W   sl  € ð �k‰k˜%Ó €GØÐÜ˜ Ô(à�{‰{Ð2Ó3€HØ—‘Ð<Ó=€JØ�{‰{˜;Ó'€HØ�k‰k˜,Ó'€GØ!(§¡Ð-JÈEÓ!RÐØ%Ÿk™kÐ*DÀeÓLÐØ")§+¡+Ð.KÈUÓ"SÐàÐðò )ˆð �'Š>˜g c›lØ×#Ñ# CÕ(ð)ðò )ˆð �'Š> '¨#£,Ø×#Ñ# CÕ(ð)ñ Øˆ?à‰GÙä$ð7à9=¿¹ÐCSÓ9TñUóð ñ ÜØØØØØ&Ø#Ø'Øó	
ˆð Ð+Ð+Ð+ØÐ(Ð(Ð(r-   c                ó†  — t        | |||«      }|j                  dt        j                  «      }|j                  dt        j                  «      }|j                  dt        j
                  «      }|�||kD  rt        d«      ‚|j                  dt        j                  «      }	|j                  d«      }
|j                  dt        j                  «      }t        t        t        t              |j                  d«      «      }|j                  d	«      }|j                  d
«      }|j                  d«      }t        |j                  dg «      |j                  dd«      «      }t        ||«      \  }}|j                  d«      }|j                  dt        j                  «      }t!        ||||	|
|||t#        |«      ||||||||¬«      S )zParse connection pool options.ÚmaxpoolsizeÚminpoolsizeÚmaxidletimemsz3minPoolSize must be smaller or equal to maxPoolSizeÚconnecttimeoutmsÚsockettimeoutmsÚwaitqueuetimeoutmsÚevent_listenersÚappnameÚdriverÚ
server_apiÚcompressorsÚzlibcompressionlevelr4   ÚloadbalancedÚmaxconnecting)Úmax_connectingrh   Úload_balancedÚcredentialsrQ   )r,   r#   r   ÚMAX_POOL_SIZEÚMIN_POOL_SIZEÚMAX_IDLE_TIME_SECÚ
ValueErrorÚCONNECT_TIMEOUTÚWAIT_QUEUE_TIMEOUTr	   r   r   r   r   r]   ÚMAX_CONNECTINGr   r   )r%   r&   r'   r(   rQ   ro   Úmax_pool_sizeÚmin_pool_sizeÚmax_idle_time_secondsÚconnect_timeoutÚsocket_timeoutÚwait_queue_timeoutre   rf   rg   rh   Úcompression_settingsÚssl_contextÚtls_allow_invalid_hostnamesrn   rm   s                        r+   Ú_parse_pool_optionsr€   •   s�  € ô % X¨x¸À7ÓK€KØ—K‘K ¬v×/CÑ/CÓD€MØ—K‘K ¬v×/CÑ/CÓD€MØ#ŸK™K¨¼×9QÑ9QÓRÐØÐ  ]°]Ò%BÜÐNÓOÐOØ—k‘kÐ"4´f×6LÑ6LÓM€OØ—[‘[Ð!2Ó3€NØ Ÿ™Ð%9¼6×;TÑ;TÓUÐÜœ8¤H¬^Ñ$<Ñ=¸w¿{¹{ÐK\Ó?]Ó^€OØ�k‰k˜)Ó$€GØ�[‰[˜Ó"€FØ—‘˜\Ó*€JÜ.Ø�‰�M 2Ó&¨¯©Ð4JÈBÓ(OóÐô 0BÀ'È7Ó/SÑ,€KÐ,Ø—K‘K Ó/€MØ—[‘[ ´&×2GÑ2GÓH€NÜØØØØØØØØ#Ü˜Ó(ØØØØ%ØØ#ØØô#ð r-   c                  ó–  — e Zd ZdZ	 d	 	 	 	 	 	 	 	 	 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ed(d„«       Zy))ÚClientOptionsa&  Read only configuration options for an AsyncMongoClient/MongoClient.

    Should not be instantiated directly by application developers. Access
    a client's options via :attr:`pymongo.mongo_client.AsyncMongoClient.options` or :attr:`pymongo.mongo_client.MongoClient.options`
    instead.
    c                ó´  — || _         t        |«      | _        |j                  d«      | _        |j                  dt
        j                  «      | _        |j                  dt
        j                  «      | _	        t        |||||«      | _        t        |«      | _        |j                  d«      | _        t        |«      | _        t#        |«      | _        |j                  d«      | _        |j                  dt
        j(                  «      | _        |j                  dt
        j,                  «      | _        |j                  dt
        j0                  «      | _        |j                  d	t4        «      | _        |j                  d
«      | _        |j                  d«      | _        |j                  d«      | _        |j                  dt
        j>                  «      | _         y )NÚdirectconnectionÚlocalthresholdmsÚserverselectiontimeoutmsÚ
replicasetÚconnectÚheartbeatfrequencymsÚretrywritesÚ
retryreadsÚserver_selectorÚauto_encryption_optsrk   Ú	timeoutmsÚservermonitoringmode)!Ú_ClientOptions__optionsr
   Ú_ClientOptions__codec_optionsr#   Ú!_ClientOptions__direct_connectionr   ÚLOCAL_THRESHOLD_MSÚ"_ClientOptions__local_threshold_msÚSERVER_SELECTION_TIMEOUTÚ(_ClientOptions__server_selection_timeoutr€   Ú_ClientOptions__pool_optionsr9   Ú_ClientOptions__read_preferenceÚ _ClientOptions__replica_set_namerB   Ú_ClientOptions__write_concernrE   Ú_ClientOptions__read_concernÚ_ClientOptions__connectÚHEARTBEAT_FREQUENCYÚ#_ClientOptions__heartbeat_frequencyÚRETRY_WRITESÚ_ClientOptions__retry_writesÚRETRY_READSÚ_ClientOptions__retry_readsr   Ú_ClientOptions__server_selectorÚ$_ClientOptions__auto_encryption_optsÚ_ClientOptions__load_balancedÚ_ClientOptions__timeoutÚSERVER_MONITORING_MODEÚ&_ClientOptions__server_monitoring_mode)Úselfr%   r&   r'   r(   rQ   s         r+   Ú__init__zClientOptions.__init__Í   ss  € ð !ˆŒÜ3°GÓ<ˆÔØ#*§;¡;Ð/AÓ#BˆÔ Ø$+§K¡KÐ0BÄF×D]ÑD]Ó$^ˆÔ!ð +2¯+©+Ø&¬×(GÑ(Gó+
ˆÔ'ô 2°(¸HÀhÐPWÐY`ÓaˆÔÜ!7¸Ó!@ˆÔØ")§+¡+¨lÓ";ˆÔÜ3°GÓ<ˆÔÜ1°'Ó:ˆÔØ Ÿ™ YÓ/ˆŒØ%,§[¡[Ð1GÌ×IcÑIcÓ%dˆÔ"Ø%Ÿk™k¨-¼×9LÑ9LÓMˆÔØ$Ÿ[™[¨´v×7IÑ7IÓJˆÔØ!(§¡Ð->Ô@SÓ!TˆÔØ&-§k¡kÐ2HÓ&IˆÔ#Ø&Ÿ{™{¨>Ó:ˆÔØ Ÿ™ [Ó1ˆŒØ(/¯©Ø"¤F×$AÑ$Aó)
ˆÕ%r-   c                ó   — | j                   S )z7The original options used to create this ClientOptions.)r�   ©r©   s    r+   Ú_optionszClientOptions._optionsï   ó   € ð �~‰~Ðr-   c                ó   — | j                   S )z>Whether to begin discovering a MongoDB topology automatically.)rœ   r¬   s    r+   rˆ   zClientOptions.connectô   r®   r-   c                ó   — | j                   S )z5A :class:`~bson.codec_options.CodecOptions` instance.)r‘   r¬   s    r+   Úcodec_optionszClientOptions.codec_optionsù   ó   € ð ×#Ñ#Ð#r-   c                ó   — | j                   S )z:Whether to connect to the deployment in 'Single' topology.)r’   r¬   s    r+   Údirect_connectionzClientOptions.direct_connectionþ   s   € ð ×'Ñ'Ð'r-   c                ó   — | j                   S )z&The local threshold for this instance.)r”   r¬   s    r+   Úlocal_threshold_msz ClientOptions.local_threshold_ms  s   € ð ×(Ñ(Ð(r-   c                ó   — | j                   S )z:The server selection timeout for this instance in seconds.)r–   r¬   s    r+   Úserver_selection_timeoutz&ClientOptions.server_selection_timeout  s   € ð ×.Ñ.Ð.r-   c                ó   — | j                   S )N)r£   r¬   s    r+   rŒ   zClientOptions.server_selector  s   € à×%Ñ%Ð%r-   c                ó   — | j                   S )z$The monitoring frequency in seconds.)rž   r¬   s    r+   Úheartbeat_frequencyz!ClientOptions.heartbeat_frequency  s   € ð ×)Ñ)Ð)r-   c                ó   — | j                   S )z.A :class:`~pymongo.pool.PoolOptions` instance.)r—   r¬   s    r+   Úpool_optionszClientOptions.pool_options  ó   € ð ×"Ñ"Ð"r-   c                ó   — | j                   S )zA read preference instance.)r˜   r¬   s    r+   r/   zClientOptions.read_preference  s   € ð ×%Ñ%Ð%r-   c                ó   — | j                   S )zReplica set name or None.)r™   r¬   s    r+   Úreplica_set_namezClientOptions.replica_set_name   s   € ð ×&Ñ&Ð&r-   c                ó   — | j                   S )z8A :class:`~pymongo.write_concern.WriteConcern` instance.)rš   r¬   s    r+   Úwrite_concernzClientOptions.write_concern%  r²   r-   c                ó   — | j                   S )z6A :class:`~pymongo.read_concern.ReadConcern` instance.)r›   r¬   s    r+   Úread_concernzClientOptions.read_concern*  r¾   r-   c                ó   — | j                   S )z_The configured timeoutMS converted to seconds, or None.

        .. versionadded:: 4.2
        )r¦   r¬   s    r+   ÚtimeoutzClientOptions.timeout/  s   € ð �~‰~Ðr-   c                ó   — | j                   S )z9If this instance should retry supported write operations.)r    r¬   s    r+   Úretry_writeszClientOptions.retry_writes7  r¾   r-   c                ó   — | j                   S )z8If this instance should retry supported read operations.)r¢   r¬   s    r+   Úretry_readszClientOptions.retry_reads<  s   € ð ×!Ñ!Ð!r-   c                ó   — | j                   S )z:A :class:`~pymongo.encryption.AutoEncryptionOpts` or None.)r¤   r¬   s    r+   r�   z"ClientOptions.auto_encryption_optsA  s   € ð ×*Ñ*Ð*r-   c                ó   — | j                   S )z@True if the client was configured to connect to a load balancer.)r¥   r¬   s    r+   rn   zClientOptions.load_balancedF  r²   r-   c                óz   — | j                   j                  €J ‚| j                   j                  j                  «       S )zŒThe event listeners registered for this client.

        See :mod:`~pymongo.monitoring` for details.

        .. versionadded:: 4.0
        )r—   Ú_event_listenersre   r¬   s    r+   re   zClientOptions.event_listenersK  s7   € ð ×"Ñ"×3Ñ3Ð?Ð?Ð?Ø×"Ñ"×3Ñ3×CÑCÓEÐEr-   c                ó   — | j                   S )zSThe configured serverMonitoringMode option.

        .. versionadded:: 4.5
        )r¨   r¬   s    r+   Úserver_monitoring_modez$ClientOptions.server_monitoring_modeV  s   € ð ×,Ñ,Ð,r-   N)T)
r%   Ústrr&   rÒ   r'   úOptional[str]r(   úMapping[str, Any]rQ   Úbool)ÚreturnrÔ   )rÖ   zOptional[bool])rÖ   zCodecOptions[Any])rÖ   Úint)rÖ   r   )rÖ   r   )rÖ   r   )rÖ   rÓ   )rÖ   r   )rÖ   r   )rÖ   zOptional[float])rÖ   rÕ   )rÖ   zOptional[AutoEncryptionOpts])rÖ   zlist[_EventListeners])rÖ   rÒ   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__rª   Úpropertyr­   rˆ   r±   r´   r¶   r¸   rŒ   r»   r½   r/   rÁ   rÃ   rÅ   rÇ   rÉ   rË   r�   rn   re   rÑ   © r-   r+   r‚   r‚   Å   sÔ  „ ñð ð 
àð 
ð ð 
ð  ð	 
ð
 #ð 
ð ó 
ðD òó ðð òó ðð ò$ó ð$ð ò(ó ð(ð ò)ó ð)ð ò/ó ð/ð ò&ó ð&ð ò*ó ð*ð ò#ó ð#ð ò&ó ð&ð ò'ó ð'ð ò$ó ð$ð ò#ó ð#ð òó ðð ò#ó ð#ð ò"ó ð"ð ò+ó ð+ð ò$ó ð$ð òFó ðFð ò-ó ñ-r-   r‚   N)
r%   rÒ   r&   rÒ   r'   rÓ   r(   rÔ   rÖ   zOptional[MongoCredential])r(   rÔ   rÖ   r   )r(   rÔ   rÖ   r   )r(   rÔ   rÖ   r   )r(   rÔ   rQ   rÕ   rÖ   z!tuple[Optional[SSLContext], bool])r%   rÒ   r&   rÒ   r'   rÓ   r(   rÔ   rQ   rÕ   rÖ   r   )4rÛ   Ú
__future__r   Útypingr   r   r   r   r   r	   Úbson.codec_optionsr
   Úpymongor   Úpymongo.compression_supportr   Úpymongo.errorsr   Úpymongo.monitoringr   r   Úpymongo.pool_optionsr   Úpymongo.read_concernr   Úpymongo.read_preferencesr   r   r   Úpymongo.server_selectorsr   Úpymongo.ssl_supportr   Úpymongo.write_concernr   r   r   r$   r   Úpymongo.encryption_optionsr   Úpymongo.pyopenssl_contextr   Úpymongo.topology_descriptionr   r,   r9   rB   rE   r]   r€   r‚   rÝ   r-   r+   ú<module>rî      sõ   ðñõ #ç H× Hå 3Ý Ý ;Ý -ß >Ý ,Ý ,÷ñ õ
 9Ý /ß @áÝ/Ý3Ý=Ý4Ý<ð
Øð
Ø ð
Ø,9ð
ØDUð
àó
ó	;ó5ó ð;)Øð;)Ø)-ð;)à&ó;)ð|-Øð-àð-ð ð-ð ð	-ð
 ð-ð ó-÷`W-ò W-r-   