o
    À{g"  ã                   @  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 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Z G dd„ dƒZ!dS )z&Represent MongoClient's configuration.é    )ÚannotationsN)ÚAnyÚ
CollectionÚOptionalÚTypeÚUnion)ÚObjectId)Úcommon)ÚLOCAL_THRESHOLD_MSÚSERVER_SELECTION_TIMEOUT)ÚConfigurationError)ÚPoolOptions©ÚServerDescription)ÚmonitorÚpool)ÚPool)ÚTOPOLOGY_TYPEÚ_ServerSelectorTc                   @  s2  e Zd ZddddddeeejddddejdejfdKdd„Z	e
dLd"d#„ƒZe
dMd$d%„ƒZe
dNd'd(„ƒZe
dOd*d+„ƒZe
dPd-d.„ƒZe
dQd0d1„ƒZe
dRd2d3„ƒZe
dRd4d5„ƒZe
dSd6d7„ƒZe
dRd8d9„ƒZe
dMd:d;„ƒZe
dTd<d=„ƒZe
dTd>d?„ƒZe
dUd@dA„ƒZe
dRdBdC„ƒZe
dUdDdE„ƒZdRdFdG„ZdVdIdJ„ZdS )WÚ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_modec                 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| _|| _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è  )Ú	localhosti‰i  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_moder   Ú_topology_idÚjoinÚ	tracebackÚformat_stackÚ_stack)Úselfr   r   r   r   r   r    r"   r$   r%   r&   r(   r)   r+   r,   r.   r/   © rM   úy/var/www/bot.gig.net.ua/public_html/telegram/P1/HellBot/venv/lib/python3.10/site-packages/pymongo/synchronous/settings.pyÚ__init__$   s0   

ÿÿ
zTopologySettings.__init__ÚreturnúCollection[tuple[str, int]]c                 C  ó   | j S )zList of server addresses.)r4   ©rL   rM   rM   rN   r   W   ó   zTopologySettings.seedsc                 C  rR   ©N)r5   rS   rM   rM   rN   r   \   ó   z!TopologySettings.replica_set_nameú
Type[Pool]c                 C  rR   rU   )r6   rS   rM   rM   rN   r   `   rV   zTopologySettings.pool_classr   c                 C  rR   rU   )r7   rS   rM   rM   rN   r   d   rV   zTopologySettings.pool_optionsúType[monitor.Monitor]c                 C  rR   rU   )r9   rS   rM   rM   rN   r   h   rV   zTopologySettings.monitor_classúType[threading.Condition]c                 C  rR   rU   )r<   rS   rM   rM   rN   r    l   rV   z TopologySettings.condition_classc                 C  rR   rU   )r=   rS   rM   rM   rN   r"   p   rV   z#TopologySettings.local_threshold_msc                 C  rR   rU   )r>   rS   rM   rM   rN   r$   t   rV   z)TopologySettings.server_selection_timeoutc                 C  rR   rU   )r?   rS   rM   rM   rN   r&   x   rV   z TopologySettings.server_selectorc                 C  rR   rU   )rA   rS   rM   rM   rN   r%   |   rV   z$TopologySettings.heartbeat_frequencyc                 C  rR   rU   )r@   rS   rM   rM   rN   r(   €   rV   zTopologySettings.fqdnc                 C  rR   )z‚Connect directly to a single server, or use a set of servers?

        True if there is one seed and no replica_set_name.
        )rB   rS   rM   rM   rN   Údirect„   s   zTopologySettings.directc                 C  rR   )z@True if the client was configured to connect to a load balancer.)rC   rS   rM   rM   rN   r+   Œ   rT   zTopologySettings.load_balancedc                 C  rR   )zThe srvServiceName.)rD   rS   rM   rM   rN   r,   ‘   rT   z!TopologySettings.srv_service_namec                 C  rR   )zThe srvMaxHosts.)rE   rS   rM   rM   rN   r.   –   rT   zTopologySettings.srv_max_hostsc                 C  rR   )zThe serverMonitoringMode.)rF   rS   rM   rM   rN   r/   ›   rT   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 rU   )r+   r   ÚLoadBalancedrZ   ÚSingler   ÚReplicaSetNoPrimaryÚUnknownrS   rM   rM   rN   Úget_topology_type    s   
z"TopologySettings.get_topology_typeú4dict[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 rM   r   )Ú.0ÚaddressrM   rM   rN   Ú
<dictcomp>¬   s    z<TopologySettings.get_server_descriptions.<locals>.<dictcomp>)r   rS   rM   rM   rN   Ú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-   )rP   rQ   )rP   r   )rP   rW   )rP   r   )rP   rX   )rP   rY   )rP   r#   )rP   r'   )rP   r*   )rP   r-   )rP   r`   )Ú__name__Ú
__module__Ú__qualname__r
   r   r	   ÚHEARTBEAT_FREQUENCYÚSRV_SERVICE_NAMEÚSERVER_MONITORING_MODErO   Úpropertyr   r   r   r   r   r    r"   r$   r&   r%   r(   rZ   r+   r,   r.   r/   r_   rd   rM   rM   rM   rN   r   #   sh    ï3

r   )"Ú__doc__Ú
__future__r   r:   rI   Útypingr   r   r   r   r   Úbson.objectidr   Úpymongor	   Úpymongo.commonr
   r   Úpymongo.errorsr   Úpymongo.pool_optionsr   Úpymongo.server_descriptionr   Úpymongo.synchronousr   r   Úpymongo.synchronous.poolr   Úpymongo.topology_descriptionr   r   Ú_IS_SYNCr   rM   rM   rM   rN   Ú<module>   s    