
    gh i                        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      Z!y)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                     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	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 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e
d!d       Ze
dd       Ze
d!d       ZddZd"dZy)#TopologySettingsNFr   c                h   |	t         j                  k  r t        dt         j                  dz  fz        |xs dg| _        || _        |xs t
        j                  | _        |xs
 t               | _	        |xs t        j                  | _        |xs t        j                  | _        || _        || _        |
| _        || _        |	| _        || _        || _        || _        |xs d| _        || _        ||| _        nt7               | _        dj9                  t;        j<                         dd       | _        y)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)selfseedsreplica_set_name
pool_classpool_optionsmonitor_classcondition_classlocal_threshold_msserver_selection_timeoutheartbeat_frequencyserver_selectorfqdndirect_connectionload_balancedsrv_service_namesrv_max_hostsserver_monitoring_modetopology_ids                     Y/opt/movilizia/ApiFast/venv/lib/python3.12/site-packages/pymongo/asynchronous/settings.py__init__zTopologySettings.__init__$   s#   0 !>!>>$=00479: 
 493R=Q<R!1'1'>TYY*6*G+-5B5Ugoo;J;aiNaNa#5 )A& /
$7!(+!1+0q'=$" +D (
D ggi446s;<    c                    | j                   S )zList of server addresses.)r   r4   s    rF   r5   zTopologySettings.seedsZ   s     {{rH   c                    | j                   S N)r   rJ   s    rF   r6   z!TopologySettings.replica_set_name_   s    %%%rH   c                    | j                   S rL   )r   rJ   s    rF   r7   zTopologySettings.pool_classc   s    rH   c                    | j                   S rL   )r   rJ   s    rF   r8   zTopologySettings.pool_optionsg   s    !!!rH   c                    | j                   S rL   )r!   rJ   s    rF   r9   zTopologySettings.monitor_classk   s    """rH   c                    | j                   S rL   )r$   rJ   s    rF   r:   z TopologySettings.condition_classo       $$$rH   c                    | j                   S rL   )r%   rJ   s    rF   r;   z#TopologySettings.local_threshold_mss   s    '''rH   c                    | j                   S rL   )r&   rJ   s    rF   r<   z)TopologySettings.server_selection_timeoutw   s    ---rH   c                    | j                   S rL   )r'   rJ   s    rF   r>   z TopologySettings.server_selector{   rQ   rH   c                    | j                   S rL   )r)   rJ   s    rF   r=   z$TopologySettings.heartbeat_frequency   s    (((rH   c                    | j                   S rL   )r(   rJ   s    rF   r?   zTopologySettings.fqdn   s    zzrH   c                    | 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*   rJ   s    rF   directzTopologySettings.direct   s     ||rH   c                    | j                   S )z@True if the client was configured to connect to a load balancer.)r+   rJ   s    rF   rA   zTopologySettings.load_balanced        """rH   c                    | j                   S )zThe srvServiceName.)r,   rJ   s    rF   rB   z!TopologySettings.srv_service_name   s     %%%rH   c                    | j                   S )zThe srvMaxHosts.)r-   rJ   s    rF   rC   zTopologySettings.srv_max_hosts   rZ   rH   c                    | j                   S )zThe serverMonitoringMode.)r.   rJ   s    rF   rD   z'TopologySettings.server_monitoring_mode   s     +++rH   c                    | j                   rt        j                  S | j                  rt        j                  S | j
                  t        j                  S t        j                  S rL   )rA   r   LoadBalancedrX   Singler6   ReplicaSetNoPrimaryUnknownrJ   s    rF   get_topology_typez"TopologySettings.get_topology_type   sN     ---[[ '''"". 444 (((rH   c                T    | j                   D ci c]  }|t        |       c}S c c}w )z;Initial dict of (address, ServerDescription) for all seeds.)r5   r   )r4   addresss     rF   get_server_descriptionsz(TopologySettings.get_server_descriptions   s%    CG::N*733NNNs   %)"r5   z%Optional[Collection[tuple[str, int]]]r6   Optional[str]r7   zOptional[Type[Pool]]r8   zOptional[PoolOptions]r9   zOptional[Type[monitor.Monitor]]r:   z#Optional[Type[threading.Condition]]r;   intr<   rh   r=   rh   r>   Optional[_ServerSelector]r?   rg   r@   Optional[bool]rA   rj   rB   strrC   rh   rD   rk   rE   zOptional[ObjectId])returnzCollection[tuple[str, int]])rl   rg   )rl   z
Type[Pool])rl   r   )rl   zType[monitor.Monitor])rl   zType[threading.Condition])rl   rh   )rl   ri   )rl   rj   )rl   rk   )rl   z4dict[Union[tuple[str, int], Any], ServerDescription])__name__
__module____qualname__r   r   r
   HEARTBEAT_FREQUENCYSRV_SERVICE_NAMESERVER_MONITORING_MODErG   propertyr5   r6   r7   r8   r9   r:   r;   r<   r>   r=   r?   rX   rA   rB   rC   rD   rc   rf    rH   rF   r   r   #   sB    8<*.+/.29=?C"4(@#)#=#=59",1(, & 7 7&,&C&C*.%4=44= (4= )	4=
 ,4= 74= =4=  4= #&4= !4= 34= 4= *4= &4= 4=  !4=" !$#4=$ (%4=l   & &     " " # # % % ( ( . . % % ) )     # # & & # # , ,)OrH   r   )"__doc__
__future__r   r"   r1   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   rt   rH   rF   <module>r      sG    - "   9 9 "  . * G - , 8 GLO LOrH   