o
    Åîï]r  ã                   @   s€   d 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„ deƒZdS )z&Represent MongoClient's configuration.é    N)ÚObjectId)ÚcommonÚmonitorÚpool)ÚLOCAL_THRESHOLD_MSÚSERVER_SELECTION_TIMEOUT)ÚConfigurationError)ÚPoolOptions©ÚServerDescription)ÚTOPOLOGY_TYPEc                   @   sÎ   e Zd Zddddddeeejddf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dd„ Zdd„ ZdS ) ÚTopologySettingsNc                 C   s    |	t jk rtdt jd f ƒ‚|pdg| _|| _|ptj| _|p"tƒ | _	|p(t
j| _|p.tj| _|| _|| _|
| _|| _|	| _t| jƒdkoH| | _tƒ | _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è  )Ú	localhosti‰i  é   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Ú_directr   Ú_topology_id)ÚselfÚseedsÚreplica_set_nameÚ
pool_classÚpool_optionsÚmonitor_classÚcondition_classÚlocal_threshold_msÚserver_selection_timeoutÚheartbeat_frequencyÚserver_selectorÚfqdn© r/   úB/var/www/html/env/lib/python3.10/site-packages/pymongo/settings.pyÚ__init__   s&   
ÿÿzTopologySettings.__init__c                 C   ó   | j S )zList of server addresses.)r   ©r#   r/   r/   r0   r$   @   s   zTopologySettings.seedsc                 C   r2   ©N)r   r3   r/   r/   r0   r%   E   ó   z!TopologySettings.replica_set_namec                 C   r2   r4   )r   r3   r/   r/   r0   r&   I   r5   zTopologySettings.pool_classc                 C   r2   r4   )r   r3   r/   r/   r0   r'   M   r5   zTopologySettings.pool_optionsc                 C   r2   r4   )r   r3   r/   r/   r0   r(   Q   r5   zTopologySettings.monitor_classc                 C   r2   r4   )r   r3   r/   r/   r0   r)   U   r5   z TopologySettings.condition_classc                 C   r2   r4   )r   r3   r/   r/   r0   r*   Y   r5   z#TopologySettings.local_threshold_msc                 C   r2   r4   )r   r3   r/   r/   r0   r+   ]   r5   z)TopologySettings.server_selection_timeoutc                 C   r2   r4   )r   r3   r/   r/   r0   r-   a   r5   z TopologySettings.server_selectorc                 C   r2   r4   )r   r3   r/   r/   r0   r,   e   r5   z$TopologySettings.heartbeat_frequencyc                 C   r2   r4   )r   r3   r/   r/   r0   r.   i   r5   zTopologySettings.fqdnc                 C   r2   )z‚Connect directly to a single server, or use a set of servers?

        True if there is one seed and no replica_set_name.
        )r!   r3   r/   r/   r0   Údirectm   s   zTopologySettings.directc                 C   s"   | j rtjS | jd urtjS tjS r4   )r6   r   ÚSingler%   ÚReplicaSetNoPrimaryÚUnknownr3   r/   r/   r0   Úget_topology_typeu   s
   
z"TopologySettings.get_topology_typec                 C   s   t dd„ | jD ƒƒS )z;Initial dict of (address, ServerDescription) for all seeds.c                 S   s   g | ]}|t |ƒf‘qS r/   r
   )Ú.0Úaddressr/   r/   r0   Ú
<listcomp>   s    
ÿÿz<TopologySettings.get_server_descriptions.<locals>.<listcomp>)Údictr$   r3   r/   r/   r0   Úget_server_descriptions}   s   þz(TopologySettings.get_server_descriptions)Ú__name__Ú
__module__Ú__qualname__r   r   r   ÚHEARTBEAT_FREQUENCYr1   Úpropertyr$   r%   r&   r'   r(   r)   r*   r+   r-   r,   r.   r6   r:   r?   r/   r/   r/   r0   r      sN    
õ#











r   )Ú__doc__r   Úbson.objectidr   Úpymongor   r   r   Úpymongo.commonr   r   Úpymongo.errorsr   Úpymongo.poolr	   Úpymongo.server_descriptionr   Úpymongo.topology_descriptionr   Úobjectr   r/   r/   r/   r0   Ú<module>   s   