
    M}bg                        d Z ddlmZ ddlZddlZddlmZmZmZm	Z	m
Z
 ddlmZ ddlmZmZmZ ddlmZmZ ddlmZ dd	lmZmZ dd
lmZ ddlmZmZ  G d d          ZdS )z&Represent MongoClient's configuration.    )annotationsN)Any
CollectionOptionalTypeUnion)ObjectId)commonmonitorpool)LOCAL_THRESHOLD_MSSERVER_SELECTION_TIMEOUT)ConfigurationError)PoolPoolOptionsServerDescription)TOPOLOGY_TYPE_ServerSelectorc                     e Zd Zddddddeeej        ddddej        dej        fd8dZ	e
d9d!            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
dAd0            Ze
dAd1            Ze
dBd2            Ze
d?d3            Ze
dBd4            Zd?d5ZdCd7ZdS )DTopologySettingsNFr   seeds%Optional[Collection[tuple[str, int]]]replica_set_nameOptional[str]
pool_classOptional[Type[Pool]]pool_optionsOptional[PoolOptions]monitor_classOptional[Type[monitor.Monitor]]condition_class#Optional[Type[threading.Condition]]local_threshold_msintserver_selection_timeoutheartbeat_frequencyserver_selectorOptional[_ServerSelector]fqdndirect_connectionOptional[bool]load_balancedsrv_service_namestrsrv_max_hostsserver_monitoring_modec                0   |	t           j        k     r t          dt           j        dz  fz            |pdg| _        || _        |pt
          j        | _        |pt                      | _	        |pt          j        | _        |pt          j        | _        || _        || _        |
| _        || _        |	| _        || _        || _        || _        |pd| _        || _        t5                      | _        d                    t;          j                              | _        dS )zyRepresent MongoClient's configuration.

        Take a list of (host, port) pairs and optional replica set name.
        z+heartbeatFrequencyMS cannot be less than %di  )	localhostii  r    N) r
   MIN_HEARTBEAT_INTERVALr   _seeds_replica_set_namer   r   _pool_classr   _pool_optionsr   Monitor_monitor_class	threading	Condition_condition_class_local_threshold_ms_server_selection_timeout_server_selector_fqdn_heartbeat_frequency_direct_load_balanced_srv_service_name_srv_max_hosts_server_monitoring_moder	   _topology_idjoin	tracebackformat_stack_stack)selfr   r   r   r   r    r"   r$   r&   r'   r(   r*   r+   r-   r.   r0   r1   s                    c/home/e360mart.nyusoft.in/public_html/e360mart_env/lib/python3.11/site-packages/pymongo/settings.py__init__zTopologySettings.__init__    s   . !>>>$=0479:  
 493R=Q<R!1'1'>TY*6*G+--5B5Ugo;J;aiNa#5 )A& /
$7!(+!1+0q'=$$JJ ggi46677    returnCollection[tuple[str, int]]c                    | j         S )zList of server addresses.)r6   rN   s    rO   r   zTopologySettings.seedsS   s     {rQ   c                    | j         S N)r7   rU   s    rO   r   z!TopologySettings.replica_set_nameX   s    %%rQ   
Type[Pool]c                    | j         S rW   )r8   rU   s    rO   r   zTopologySettings.pool_class\   s    rQ   r   c                    | j         S rW   )r9   rU   s    rO   r   zTopologySettings.pool_options`   s    !!rQ   Type[monitor.Monitor]c                    | j         S rW   )r;   rU   s    rO   r    zTopologySettings.monitor_classd   s    ""rQ   Type[threading.Condition]c                    | j         S rW   )r>   rU   s    rO   r"   z TopologySettings.condition_classh       $$rQ   c                    | j         S rW   )r?   rU   s    rO   r$   z#TopologySettings.local_threshold_msl   s    ''rQ   c                    | j         S rW   )r@   rU   s    rO   r&   z)TopologySettings.server_selection_timeoutp   s    --rQ   c                    | j         S rW   )rA   rU   s    rO   r(   z TopologySettings.server_selectort   r_   rQ   c                    | j         S rW   )rC   rU   s    rO   r'   z$TopologySettings.heartbeat_frequencyx   s    ((rQ   c                    | j         S rW   )rB   rU   s    rO   r*   zTopologySettings.fqdn|   s
    zrQ   c                    | j         S )zConnect directly to a single server, or use a set of servers?

        True if there is one seed and no replica_set_name.
        )rD   rU   s    rO   directzTopologySettings.direct   s     |rQ   c                    | j         S )z@True if the client was configured to connect to a load balancer.)rE   rU   s    rO   r-   zTopologySettings.load_balanced        ""rQ   c                    | j         S )zThe srvServiceName.)rF   rU   s    rO   r.   z!TopologySettings.srv_service_name   s     %%rQ   c                    | j         S )zThe srvMaxHosts.)rG   rU   s    rO   r0   zTopologySettings.srv_max_hosts   rh   rQ   c                    | j         S )zThe serverMonitoringMode.)rH   rU   s    rO   r1   z'TopologySettings.server_monitoring_mode   s     ++rQ   c                    | j         rt          j        S | j        rt          j        S | j        t          j        S t          j        S rW   )r-   r   LoadBalancedrf   Singler   ReplicaSetNoPrimaryUnknownrU   s    rO   get_topology_typez"TopologySettings.get_topology_type   sD     	) --[ 	) ''". 44 ((rQ   4dict[Union[tuple[str, int], Any], ServerDescription]c                $    d | j         D             S )z;Initial dict of (address, ServerDescription) for all seeds.c                .    i | ]}|t          |          S  r   ).0addresss     rO   
<dictcomp>z<TopologySettings.get_server_descriptions.<locals>.<dictcomp>   s#    NNN*733NNNrQ   )r   rU   s    rO   get_server_descriptionsz(TopologySettings.get_server_descriptions   s    NN4:NNNNrQ   ) r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r%   r'   r%   r(   r)   r*   r   r+   r,   r-   r,   r.   r/   r0   r%   r1   r/   )rR   rS   )rR   r   )rR   rX   )rR   r   )rR   r[   )rR   r]   )rR   r%   )rR   r)   )rR   r,   )rR   r/   )rR   rr   )__name__
__module____qualname__r   r   r
   HEARTBEAT_FREQUENCYSRV_SERVICE_NAMESERVER_MONITORING_MODErP   propertyr   r   r   r   r    r"   r$   r&   r(   r'   r*   rf   r-   r.   r0   r1   rq   ry   ru   rQ   rO   r   r      s        8<*.+/.29=?C"4(@#)#=59",1(, & 7&,&C#18 18 18 18 18f    X & & & X&       X  " " " X" # # # X# % % % X% ( ( ( X( . . . X. % % % X% ) ) ) X)    X    X # # # X# & & & X& # # # X# , , , X,) ) ) )O O O O O OrQ   r   )__doc__
__future__r   r<   rK   typingr   r   r   r   r   bson.objectidr	   pymongor
   r   r   pymongo.commonr   r   pymongo.errorsr   pymongo.poolr   r   pymongo.server_descriptionr   pymongo.topology_descriptionr   r   r   ru   rQ   rO   <module>r      sC   - , " " " " " "         9 9 9 9 9 9 9 9 9 9 9 9 9 9 " " " " " " ) ) ) ) ) ) ) ) ) ) G G G G G G G G - - - - - - * * * * * * * * 8 8 8 8 8 8 G G G G G G G GIO IO IO IO IO IO IO IO IO IOrQ   