3
]ð]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| _|| _|p8tj| _|pDtƒ | _	|pPt
j| _|p\tj| _|| _|| _|
| _|| _|	| _t| jƒdko�| | _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è  Ú	localhosté‰i  é   N)r   r   )r   ZMIN_HEARTBEAT_INTERVALr   Ú_seedsÚ_replica_set_namer   ZPoolÚ_pool_classr	   Ú_pool_optionsr   ZMonitorÚ_monitor_classÚ	threadingÚ	ConditionÚ_condition_classÚ_local_threshold_msÚ_server_selection_timeoutÚ_server_selectorÚ_fqdnÚ_heartbeat_frequencyÚlenÚ_directr   Z_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+   ú3/tmp/pip-build-20mum3z4/pymongo/pymongo/settings.pyÚ__init__   s"    
zTopologySettings.__init__c             C   s   | j S )zList of server addresses.)r   )r   r+   r+   r,   r    @   s    zTopologySettings.seedsc             C   s   | j S )N)r   )r   r+   r+   r,   r!   E   s    z!TopologySettings.replica_set_namec             C   s   | j S )N)r   )r   r+   r+   r,   r"   I   s    zTopologySettings.pool_classc             C   s   | j S )N)r   )r   r+   r+   r,   r#   M   s    zTopologySettings.pool_optionsc             C   s   | j S )N)r   )r   r+   r+   r,   r$   Q   s    zTopologySettings.monitor_classc             C   s   | j S )N)r   )r   r+   r+   r,   r%   U   s    z TopologySettings.condition_classc             C   s   | j S )N)r   )r   r+   r+   r,   r&   Y   s    z#TopologySettings.local_threshold_msc             C   s   | j S )N)r   )r   r+   r+   r,   r'   ]   s    z)TopologySettings.server_selection_timeoutc             C   s   | j S )N)r   )r   r+   r+   r,   r)   a   s    z TopologySettings.server_selectorc             C   s   | j S )N)r   )r   r+   r+   r,   r(   e   s    z$TopologySettings.heartbeat_frequencyc             C   s   | j S )N)r   )r   r+   r+   r,   r*   i   s    zTopologySettings.fqdnc             C   s   | j S )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   )r   r+   r+   r,   Údirectm   s    zTopologySettings.directc             C   s&   | j rtjS | jd k	rtjS tjS d S )N)r.   r   ÚSingler!   ZReplicaSetNoPrimaryÚUnknown)r   r+   r+   r,   Ú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+   r,   ú
<listcomp>€   s   z<TopologySettings.get_server_descriptions.<locals>.<listcomp>)Údictr    )r   r+   r+   r,   Úget_server_descriptions}   s    z(TopologySettings.get_server_descriptions)Ú__name__Ú
__module__Ú__qualname__r   r   r   ZHEARTBEAT_FREQUENCYr-   Úpropertyr    r!   r"   r#   r$   r%   r&   r'   r)   r(   r*   r.   r1   r6   r+   r+   r+   r,   r      s2   r   )Ú__doc__r   Zbson.objectidr   Zpymongor   r   r   Zpymongo.commonr   r   Zpymongo.errorsr   Zpymongo.poolr	   Zpymongo.server_descriptionr
   Zpymongo.topology_descriptionr   Úobjectr   r+   r+   r+   r,   Ú<module>   s   