o
    'h                     @  s   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 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 ddlmZ ddlmZmZ dZ G dd dZ!dS )z&Represent MongoClient's configuration.    )annotationsN)Any
CollectionOptionalTypeUnion)ObjectId)common)monitorpool)Pool)LOCAL_THRESHOLD_MSSERVER_SELECTION_TIMEOUT)ConfigurationError)PoolOptionsServerDescription)TOPOLOGY_TYPE_ServerSelectorFc                   @  s4  e Zd ZddddddeeejddddejdejdfdMd d!Z	e
dNd$d%Ze
dOd&d'Ze
dPd)d*Ze
dQd,d-Ze
dRd/d0Ze
dSd2d3Ze
dTd4d5Ze
dTd6d7Ze
dUd8d9Ze
dTd:d;Ze
dOd<d=Ze
dVd>d?Ze
dVd@dAZe
dWdBdCZe
dTdDdEZe
dWdFdGZdTdHdIZdXdKdLZdS )Y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_modetopology_idOptional[ObjectId]c                 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| _|| _|| _|
| _|| _|	| _|| _|| _|| _|pKd| _|| _|durX|| _nt | _dt dd | _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_mode_topology_idr   join	tracebackformat_stack_stack)selfr   r   r   r   r   r    r"   r$   r%   r&   r(   r)   r+   r,   r.   r/   r0    rO   Y/var/www/html/olx_land/venv/lib/python3.10/site-packages/pymongo/asynchronous/settings.py__init__$   s4   


zTopologySettings.__init__returnCollection[tuple[str, int]]c                 C     | j S )zList of server addresses.)r6   rN   rO   rO   rP   r   Z      zTopologySettings.seedsc                 C  rT   N)r7   rU   rO   rO   rP   r   _      z!TopologySettings.replica_set_name
Type[Pool]c                 C  rT   rW   )r8   rU   rO   rO   rP   r   c   rX   zTopologySettings.pool_classr   c                 C  rT   rW   )r9   rU   rO   rO   rP   r   g   rX   zTopologySettings.pool_optionsType[monitor.Monitor]c                 C  rT   rW   )r;   rU   rO   rO   rP   r   k   rX   zTopologySettings.monitor_classType[threading.Condition]c                 C  rT   rW   )r>   rU   rO   rO   rP   r    o   rX   z TopologySettings.condition_classc                 C  rT   rW   )r?   rU   rO   rO   rP   r"   s   rX   z#TopologySettings.local_threshold_msc                 C  rT   rW   )r@   rU   rO   rO   rP   r$   w   rX   z)TopologySettings.server_selection_timeoutc                 C  rT   rW   )rA   rU   rO   rO   rP   r&   {   rX   z TopologySettings.server_selectorc                 C  rT   rW   )rC   rU   rO   rO   rP   r%      rX   z$TopologySettings.heartbeat_frequencyc                 C  rT   rW   )rB   rU   rO   rO   rP   r(      rX   zTopologySettings.fqdnc                 C  rT   )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   rO   rO   rP   direct   s   zTopologySettings.directc                 C  rT   )z@True if the client was configured to connect to a load balancer.)rE   rU   rO   rO   rP   r+      rV   zTopologySettings.load_balancedc                 C  rT   )zThe srvServiceName.)rF   rU   rO   rO   rP   r,      rV   z!TopologySettings.srv_service_namec                 C  rT   )zThe srvMaxHosts.)rG   rU   rO   rO   rP   r.      rV   zTopologySettings.srv_max_hostsc                 C  rT   )zThe serverMonitoringMode.)rH   rU   rO   rO   rP   r/      rV   z'TopologySettings.server_monitoring_modec                 C  s.   | j rtjS | jrtjS | jd urtjS tjS rW   )r+   r   LoadBalancedr\   Singler   ReplicaSetNoPrimaryUnknownrU   rO   rO   rP   get_topology_type   s   
z"TopologySettings.get_topology_type4dict[Union[tuple[str, int], Any], ServerDescription]c                 C  s   dd | j D S )z;Initial dict of (address, ServerDescription) for all seeds.c                 S  s   i | ]}|t |qS rO   r   ).0addressrO   rO   rP   
<dictcomp>   s    z<TopologySettings.get_server_descriptions.<locals>.<dictcomp>)r   rU   rO   rO   rP   get_server_descriptions   s   z(TopologySettings.get_server_descriptions)"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-   r.   r#   r/   r-   r0   r1   )rR   rS   )rR   r   )rR   rY   )rR   r   )rR   rZ   )rR   r[   )rR   r#   )rR   r'   )rR   r*   )rR   r-   )rR   rb   )__name__
__module____qualname__r   r   r	   HEARTBEAT_FREQUENCYSRV_SERVICE_NAMESERVER_MONITORING_MODErQ   propertyr   r   r   r   r   r    r"   r$   r&   r%   r(   r\   r+   r,   r.   r/   ra   rf   rO   rO   rO   rP   r   #   sj    6

r   )"__doc__
__future__r   r<   rK   typingr   r   r   r   r   bson.objectidr   pymongor	   pymongo.asynchronousr
   r   pymongo.asynchronous.poolr   pymongo.commonr   r   pymongo.errorsr   pymongo.pool_optionsr   pymongo.server_descriptionr   pymongo.topology_descriptionr   r   _IS_SYNCr   rO   rO   rO   rP   <module>   s    