
    &gm3                       S r SSKJr  SSKJrJrJrJrJr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Jr  SS	KJr  SS
KJr  SSKJrJrJr  SSKJr  SSKJ r   SSK!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 jr-SS jr.SS jr/S S jr0S!S jr1            S"S jr2 " S S5      r3g)#zTools 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                    UR                  SU (       a  SOS5      nUR                  S5      nU (       d  U(       a  SSKJn  U" XEXX25      $ g)z!Parse authentication credentials.authmechanismDEFAULTN
authsourcer   )_build_credentials_tuple)getpymongo.auth_sharedr"   )usernamepassworddatabaseoptions	mechanismsourcer"   s          [C:\Suresh\moveshuttle\MDcreated\moveengine\venv\Lib\site-packages\pymongo/client_options.py_parse_credentialsr,   /   s@     O(YMI[[&F9@'	8waa    c                    SU ;   a  U S   $ U R                  SS5      n[        U5      nU R                  S5      nU R                  SS5      n[        X#U5      $ )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#());;'3D#D)D;;+,DKK 5r:MM::r-   c                    U R                  S5      nU R                  S5      nU R                  S5      nU R                  S5      n[        XX45      $ )zParse write concern options.w
wtimeoutmsjournalfsync)r#   r   )r(   concernwtimeoutjr>   s        r+   _parse_write_concernrB   H   sG    kk#G{{<(HIAKK E144r-   c                :    U R                  S5      n[        U5      $ )zParse read concern options.readconcernlevel)r#   r   )r(   r?   s     r+   _parse_read_concernrE   Q   s    kk,-Gwr-   c           	        U R                  S5      nUb  [        SU5        U R                  S5      nU R                  S5      nU R                  S5      nU R                  S5      nU R                  SS5      nU R                  S	S5      nU R                  S
S5      n/ n	S H&  n
X;   d  M
  X
   (       d  M  U	R                  U
5        M(     S H&  n
X;   d  M
  X
   (       a  M  U	R                  U
5        M(     U	(       a*  Uc  SnO$U(       d  [        SSR	                  U	5      -  5      eU(       a  [        UUUUUUU5      nX4$ SU4$ )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(   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   sV   kk% G({{23H<=J{{;'Hkk,'G!(-JE!R%kk*DeL")++.KU"S >gll##C( >',,##C( ?G$79=CS9TU  &#'
 ++(((r-   c                |   [        XX#5      nUR                  S[        R                  5      nUR                  S[        R                  5      nUR                  S[        R
                  5      nUb  Xv:  a  [        S5      eUR                  S[        R                  5      n	UR                  S5      n
UR                  S[        R                  5      n[        [        [        [              UR                  S5      5      nUR                  S	5      nUR                  S
5      nUR                  S5      n[        UR                  S/ 5      UR                  SS5      5      n[        U5      u  nnUR                  S5      nUR                  S[        R                  5      n[!        UUUU	U
UUU[#        U5      UUUUUUUUS9$ )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_connectingrg   load_balancedcredentialsis_sync)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(   ro   rn   max_pool_sizemin_pool_sizemax_idle_time_secondsconnect_timeoutsocket_timeoutwait_queue_timeoutrd   re   rf   rg   compression_settingsssl_contexttls_allow_invalid_hostnamesrm   rl   s                        r+   _parse_pool_optionsr      s    %XKKKKv/C/CDMKKv/C/CDM#KK9Q9QR ]%BNOOkk"4f6L6LMO[[!23N %96;T;TU8H^$<=w{{K\?]^Okk)$G[["F\*J.M2&4JB(O 0B'/J,K,KK/M[[&2G2GHN#(%## r-   c                     \ rS rSrSr S         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*S j5       rSrg)+ClientOptions   a  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                   X@l         [        U5      U l        UR                  S5      U l        UR                  S[
        R                  5      U l        UR                  S[
        R                  5      U l	        [        XX4U5      U l        [        U5      U l        UR                  S5      U l        [        U5      U l        [#        U5      U l        UR                  S5      U l        UR                  S[
        R(                  5      U l        UR                  S[
        R,                  5      U l        UR                  S[
        R0                  5      U l        UR                  S	[4        5      U l        UR                  S
5      U l        UR                  S5      U l        UR                  S5      U l        UR                  S[
        R>                  5      U l         g )Ndirectconnectionlocalthresholdmsserverselectiontimeoutms
replicasetconnectheartbeatfrequencymsretrywrites
retryreadsserver_selectorauto_encryption_optsrj   	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(   ro   s         r+   __init__ClientOptions.__init__   sl    !3G<#*;;/A#B $+KK0BFD]D]$^! +2++&(G(G+
' 2(hY`a!7!@")++l";3G<1': Y/%,[[1GIcIc%d"%kk-9L9LM$[[v7I7IJ!(->@S!T&-kk2H&I#&{{>: [1(/"F$A$A)
%r-   c                    U R                   $ )z7The original options used to create this ClientOptions.)r   r   s    r+   _optionsClientOptions._options        ~~r-   c                    U R                   $ )z>Whether to begin discovering a MongoDB topology automatically.)r   r   s    r+   r   ClientOptions.connect   r   r-   c                    U R                   $ )z5A :class:`~bson.codec_options.CodecOptions` instance.)r   r   s    r+   codec_optionsClientOptions.codec_options        ###r-   c                    U R                   $ )z:Whether to connect to the deployment in 'Single' topology.)r   r   s    r+   direct_connectionClientOptions.direct_connection   s     '''r-   c                    U R                   $ )z&The local threshold for this instance.)r   r   s    r+   local_threshold_ms ClientOptions.local_threshold_ms   s     (((r-   c                    U R                   $ )z:The server selection timeout for this instance in seconds.)r   r   s    r+   server_selection_timeout&ClientOptions.server_selection_timeout  s     ...r-   c                    U R                   $ )N)r   r   s    r+   r   ClientOptions.server_selector
  s    %%%r-   c                    U R                   $ )z$The monitoring frequency in seconds.)r   r   s    r+   heartbeat_frequency!ClientOptions.heartbeat_frequency  s     )))r-   c                    U R                   $ )z.A :class:`~pymongo.pool.PoolOptions` instance.)r   r   s    r+   pool_optionsClientOptions.pool_options       """r-   c                    U R                   $ )zA read preference instance.)r   r   s    r+   r/   ClientOptions.read_preference  s     %%%r-   c                    U R                   $ )zReplica set name or None.)r   r   s    r+   replica_set_nameClientOptions.replica_set_name  s     &&&r-   c                    U R                   $ )z8A :class:`~pymongo.write_concern.WriteConcern` instance.)r   r   s    r+   write_concernClientOptions.write_concern"  r   r-   c                    U R                   $ )z6A :class:`~pymongo.read_concern.ReadConcern` instance.)r   r   s    r+   read_concernClientOptions.read_concern'  r   r-   c                    U R                   $ )zOThe configured timeoutMS converted to seconds, or None.

.. versionadded:: 4.2
)r   r   s    r+   timeoutClientOptions.timeout,  s     ~~r-   c                    U R                   $ )z9If this instance should retry supported write operations.)r   r   s    r+   retry_writesClientOptions.retry_writes4  r   r-   c                    U R                   $ )z8If this instance should retry supported read operations.)r   r   s    r+   retry_readsClientOptions.retry_reads9  s     !!!r-   c                    U R                   $ )z:A :class:`~pymongo.encryption.AutoEncryptionOpts` or None.)r   r   s    r+   r   "ClientOptions.auto_encryption_opts>  s     ***r-   c                    U R                   $ )z@True if the client was configured to connect to a load balancer.)r   r   s    r+   rm   ClientOptions.load_balancedC  r   r-   c                |    U R                   R                  c   eU R                   R                  R                  5       $ )ztThe event listeners registered for this client.

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

.. versionadded:: 4.0
)r   _event_listenersrd   r   s    r+   rd   ClientOptions.event_listenersH  s7     ""33???""33CCEEr-   c                    U R                   $ )zCThe configured serverMonitoringMode option.

.. versionadded:: 4.5
)r   r   s    r+   server_monitoring_mode$ClientOptions.server_monitoring_modeS  s     ,,,r-   )__auto_encryption_opts__codec_options	__connect__direct_connection__heartbeat_frequency__load_balanced__local_threshold_ms	__options__pool_options__read_concern__read_preference__replica_set_name__retry_reads__retry_writes__server_monitoring_mode__server_selection_timeout__server_selector	__timeout__write_concernN)T)
r%   strr&   r   r'   Optional[str]r(   Mapping[str, Any]ro   bool)returnr   )r   zOptional[bool])r   r   )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____firstlineno____doc__r   propertyr   r   r   r   r   r   r   r   r   r/   r   r   r   r   r   r   r   rm   rd   r   __static_attributes__ 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   r   z!tuple[Optional[SSLContext], bool])r%   r   r&   r   r'   r   r(   r   ro   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 8)v--- - 	-
 - -`W- W-r-   