
    h                         d Z ddlZddl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 ddlmZ dd	lmZ  G d
 de      Zy)z&Represent MongoClient's configuration.    N)ObjectId)commonmonitorpool)LOCAL_THRESHOLD_MSSERVER_SELECTION_TIMEOUT)ConfigurationError)PoolOptions)ServerDescription)TOPOLOGY_TYPEc                      e Zd Zddddddeeej                  dddfdZed        Z	ed        Z
ed        Zed        Zed        Zed        Zed	        Zed
        Zed        Zed        Zed        Zed        Zd Zd Zy)TopologySettingsNc                 l   |	t         j                  k  r t        dt         j                  dz  fz        |xs dg| _        || _        |xs t
        j                  | _        |xs
 t               | _	        |xs t        j                  | _        |xs t        j                  | _        || _        || _        |
| _        || _        |	| _        |-t+        | j                        dk(  xr | j,                   | _        n|| _        t1               | _        dj5                  t7        j8                               | _        y)zyRepresent MongoClient's configuration.

        Take a list of (host, port) pairs and optional replica set name.
        z+heartbeatFrequencyMS cannot be less than %di  )	localhostii  N    )r   MIN_HEARTBEAT_INTERVALr	   _seeds_replica_set_namer   Pool_pool_classr
   _pool_optionsr   Monitor_monitor_class	threading	Condition_condition_class_local_threshold_ms_server_selection_timeout_server_selector_fqdn_heartbeat_frequencylenreplica_set_name_directr   _topology_idjoin	tracebackformat_stack_stack)selfseedsr$   
pool_classpool_optionsmonitor_classcondition_classlocal_threshold_msserver_selection_timeoutheartbeat_frequencyserver_selectorfqdndirect_connections                S/var/www/html/ranktracker/api/venv/lib/python3.12/site-packages/pymongo/settings.py__init__zTopologySettings.__init__   s   " !>!>>$=11D8A; ;< < 5 45!1%2):[]+>w / F93F3F#5 )A& /
$7!$,1O$:O:O6ODL,DL$J ggi4467    c                     | j                   S )zList of server addresses.)r   r+   s    r7   r,   zTopologySettings.seedsJ   s     {{r9   c                     | j                   S N)r   r;   s    r7   r$   z!TopologySettings.replica_set_nameO   s    %%%r9   c                     | j                   S r=   )r   r;   s    r7   r-   zTopologySettings.pool_classS   s    r9   c                     | j                   S r=   )r   r;   s    r7   r.   zTopologySettings.pool_optionsW   s    !!!r9   c                     | j                   S r=   )r   r;   s    r7   r/   zTopologySettings.monitor_class[   s    """r9   c                     | j                   S r=   )r   r;   s    r7   r0   z TopologySettings.condition_class_       $$$r9   c                     | j                   S r=   )r   r;   s    r7   r1   z#TopologySettings.local_threshold_msc   s    '''r9   c                     | j                   S r=   )r   r;   s    r7   r2   z)TopologySettings.server_selection_timeoutg   s    ---r9   c                     | j                   S r=   )r    r;   s    r7   r4   z TopologySettings.server_selectork   rB   r9   c                     | j                   S r=   )r"   r;   s    r7   r3   z$TopologySettings.heartbeat_frequencyo   s    (((r9   c                     | j                   S r=   )r!   r;   s    r7   r5   zTopologySettings.fqdns   s    zzr9   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.
        )r%   r;   s    r7   directzTopologySettings.directw   s     ||r9   c                     | j                   rt        j                  S | j                  t        j                  S t        j
                  S r=   )rI   r   Singler$   ReplicaSetNoPrimaryUnknownr;   s    r7   get_topology_typez"TopologySettings.get_topology_type   s9    ;; '''"". 444 (((r9   c           	      h    t        | j                  D cg c]  }|t        |      f c}      S c c}w )z;Initial dict of (address, ServerDescription) for all seeds.)dictr,   r   )r+   addresss     r7   get_server_descriptionsz(TopologySettings.get_server_descriptions   s9    ::' '01' ( 	( 's   /)__name__
__module____qualname__r   r   r   HEARTBEAT_FREQUENCYr8   propertyr,   r$   r-   r.   r/   r0   r1   r2   r4   r3   r5   rI   rN   rR    r9   r7   r   r      s,   "& "#!%$6*B%+%?%?!%#'*8X   & &     " " # # % % ( ( . . % % ) )    )(r9   r   )__doc__r   r(   bson.objectidr   pymongor   r   r   pymongo.commonr   r   pymongo.errorsr	   pymongo.poolr
   pymongo.server_descriptionr   pymongo.topology_descriptionr   objectr   rX   r9   r7   <module>rb      s6    -   " ) ) G - $ 8 6n(v n(r9   