3
O6b                 @   s   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 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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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| _|| _|| _|
| _|| _|	| _|dkrt| jdko| j | _n|| _|| _t | _dj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  	localhosti  N    )r   r   )r   ZMIN_HEARTBEAT_INTERVALr   _seeds_replica_set_namer   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replica_set_name_direct_load_balancedr   Z_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fqdnZdirect_connectionload_balanced r3   O/var/www/html/sandeepIITI/myenv/lib/python3.6/site-packages/pymongo/settings.py__init__   s*    
zTopologySettings.__init__c             C   s   | j S )zList of server addresses.)r   )r'   r3   r3   r4   r(   L   s    zTopologySettings.seedsc             C   s   | j S )N)r   )r'   r3   r3   r4   r    Q   s    z!TopologySettings.replica_set_namec             C   s   | j S )N)r   )r'   r3   r3   r4   r)   U   s    zTopologySettings.pool_classc             C   s   | j S )N)r   )r'   r3   r3   r4   r*   Y   s    zTopologySettings.pool_optionsc             C   s   | j S )N)r   )r'   r3   r3   r4   r+   ]   s    zTopologySettings.monitor_classc             C   s   | j S )N)r   )r'   r3   r3   r4   r,   a   s    z TopologySettings.condition_classc             C   s   | j S )N)r   )r'   r3   r3   r4   r-   e   s    z#TopologySettings.local_threshold_msc             C   s   | j S )N)r   )r'   r3   r3   r4   r.   i   s    z)TopologySettings.server_selection_timeoutc             C   s   | j S )N)r   )r'   r3   r3   r4   r0   m   s    z TopologySettings.server_selectorc             C   s   | j S )N)r   )r'   r3   r3   r4   r/   q   s    z$TopologySettings.heartbeat_frequencyc             C   s   | j S )N)r   )r'   r3   r3   r4   r1   u   s    zTopologySettings.fqdnc             C   s   | 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'   r3   r3   r4   directy   s    zTopologySettings.directc             C   s   | j S )z@True if the client was configured to connect to a load balancer.)r"   )r'   r3   r3   r4   r2      s    zTopologySettings.load_balancedc             C   s2   | j rtjS | jrtjS | jd k	r(tjS tjS d S )N)r2   r   ZLoadBalancedr6   Singler    ZReplicaSetNoPrimaryUnknown)r'   r3   r3   r4   get_topology_type   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 r3   )r
   ).0addressr3   r3   r4   
<listcomp>   s   z<TopologySettings.get_server_descriptions.<locals>.<listcomp>)dictr(   )r'   r3   r3   r4   get_server_descriptions   s    z(TopologySettings.get_server_descriptions)__name__
__module____qualname__r   r   r   ZHEARTBEAT_FREQUENCYr5   propertyr(   r    r)   r*   r+   r,   r-   r.   r0   r/   r1   r6   r2   r9   r>   r3   r3   r3   r4   r      s8   !
r   )__doc__r   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   r3   r3   r3   r4   <module>   s   