
    nh#                        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      Z!y)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                     e Zd Zddddddeeej                  ddddej                  dej                  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                T   |	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| _        || _        t5               | _        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_moder	   _topology_id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_modes                    /var/www/html/SchoolMeal/SchoolMeal/pds_admin_SchoolMeal/Backend/venv/lib/python3.12/site-packages/pymongo/synchronous/settings.py__init__zTopologySettings.__init__$   s   . !>!>>$=00479: 
 493R=Q<R!1'1'>TYY*6*G+-5B5Ugoo;J;aiNaNa#5 )A& /
$7!(+!1+0q'=$$J ggi446s;<    c                    | j                   S )zList of server addresses.)r   r4   s    rE   r5   zTopologySettings.seedsW   s     {{rG   c                    | j                   S N)r   rI   s    rE   r6   z!TopologySettings.replica_set_name\   s    %%%rG   c                    | j                   S rK   )r   rI   s    rE   r7   zTopologySettings.pool_class`   s    rG   c                    | j                   S rK   )r   rI   s    rE   r8   zTopologySettings.pool_optionsd   s    !!!rG   c                    | j                   S rK   )r!   rI   s    rE   r9   zTopologySettings.monitor_classh   s    """rG   c                    | j                   S rK   )r$   rI   s    rE   r:   z TopologySettings.condition_classl       $$$rG   c                    | j                   S rK   )r%   rI   s    rE   r;   z#TopologySettings.local_threshold_msp   s    '''rG   c                    | j                   S rK   )r&   rI   s    rE   r<   z)TopologySettings.server_selection_timeoutt   s    ---rG   c                    | j                   S rK   )r'   rI   s    rE   r>   z TopologySettings.server_selectorx   rP   rG   c                    | j                   S rK   )r)   rI   s    rE   r=   z$TopologySettings.heartbeat_frequency|   s    (((rG   c                    | j                   S rK   )r(   rI   s    rE   r?   zTopologySettings.fqdn   s    zzrG   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*   rI   s    rE   directzTopologySettings.direct   s     ||rG   c                    | j                   S )z@True if the client was configured to connect to a load balancer.)r+   rI   s    rE   rA   zTopologySettings.load_balanced        """rG   c                    | j                   S )zThe srvServiceName.)r,   rI   s    rE   rB   z!TopologySettings.srv_service_name   s     %%%rG   c                    | j                   S )zThe srvMaxHosts.)r-   rI   s    rE   rC   zTopologySettings.srv_max_hosts   rY   rG   c                    | j                   S )zThe serverMonitoringMode.)r.   rI   s    rE   rD   z'TopologySettings.server_monitoring_mode   s     +++rG   c                    | j                   rt        j                  S | j                  rt        j                  S | j
                  t        j                  S t        j                  S rK   )rA   r   LoadBalancedrW   Singler6   ReplicaSetNoPrimaryUnknownrI   s    rE   get_topology_typez"TopologySettings.get_topology_type   sN     ---[[ '''"". 444 (((rG   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     rE   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<   rg   r=   rg   r>   Optional[_ServerSelector]r?   rf   r@   Optional[bool]rA   ri   rB   strrC   rg   rD   rj   )returnzCollection[tuple[str, int]])rk   rf   )rk   z
Type[Pool])rk   r   )rk   zType[monitor.Monitor])rk   zType[threading.Condition])rk   rg   )rk   rh   )rk   ri   )rk   rj   )rk   z4dict[Union[tuple[str, int], Any], ServerDescription])__name__
__module____qualname__r   r   r
   HEARTBEAT_FREQUENCYSRV_SERVICE_NAMESERVER_MONITORING_MODErF   propertyr5   r6   r7   r8   r9   r:   r;   r<   r>   r=   r?   rW   rA   rB   rC   rD   rb   re    rG   rE   r   r   #   s5    8<*.+/.29=?C"4(@#)#=#=59",1(, & 7 7&,&C&C#1=41= (1= )	1=
 ,1= 71= =1=  1= #&1= !1= 31= 1= *1= &1= 1=  !1=" !$#1=f   & &     " " # # % % ( ( . . % % ) )     # # & & # # , ,)OrG   r   )"__doc__
__future__r   r"   r1   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   rs   rG   rE   <module>r      sG    - "   9 9 "  G - , 8 - ) GIO IOrG   