
    h                      N    d Z ddlmZ ddlmZ ddlmZ ddlm	Z	  G d de
      Zy)	z0Represent one server the driver is connected to.    )EPOCH_NAIVE)IsMaster)time)SERVER_TYPEc                   
   e Zd ZdZdZd&dZed        Zed        Zed        Z	ed        Z
ed	        Zed
        Zed        Zed        Zed        Zed        Zed        Zed        Zed        Zed        Zed        Zed        Zed        Zed        Zed        Zed        Zed        Zed        Zed        Zed        Zed        Zed        Z ed        Z!ed         Z"ed!        Z#d'd"Z$d# Z%d$ Z&d% Z'i Z(y)(ServerDescriptionae  Immutable representation of one server.

    :Parameters:
      - `address`: A (host, port) pair
      - `ismaster`: Optional Hello instance
      - `round_trip_time`: Optional float
      - `error`: Optional, the last error attempting to connect to the server

    .. warning:: The `ismaster` parameter will be renamed to `hello` in PyMongo
      4.0.
    )_address_server_type
_all_hosts_tags_replica_set_name_primary_max_bson_size_max_message_size_max_write_batch_size_min_wire_version_max_wire_version_round_trip_time_me_is_writable_is_readable_ls_timeout_minutes_error_set_version_election_id_cluster_time_last_write_date_last_update_time_topology_versionNc                    || _         |xs t        i       }|j                  | _        |j                  | _        |j                  | _        |j                  | _	        |j                  | _        |j                  | _        |j                  | _        |j                   | _        |j$                  | _        |j(                  | _        |j,                  | _        |j0                  | _        |j4                  | _        |j8                  | _        |j<                  | _        |j@                  | _!        || _"        |jF                  | _$        tK               | _&        || _'        |jP                  | _)        |rFtU        |d      r:tW        |jX                  tZ              r |jX                  j]                  d      | _)        |j^                  r)|j^                  t`        z
  }|jc                         | _2        y d | _2        y )NdetailstopologyVersion)3r	   r   server_typer
   	all_hostsr   tagsr   replica_set_namer   primaryr   max_bson_sizer   max_message_sizer   max_write_batch_sizer   min_wire_versionr   max_wire_versionr   set_versionr   election_idr   cluster_timer   is_writabler   is_readabler   logical_session_timeout_minutesr   r   mer   _timer   r   topology_versionr   hasattr
isinstancer!   dictgetlast_write_dater   total_secondsr   )selfaddressismasterround_trip_timeerrorhellodeltas          X/var/www/html/eduruby.in/venv/lib/python3.12/site-packages/pymongo/server_description.py__init__zServerDescription.__init__>   s   (HRL!--//ZZ
!&!7!7#11!&!7!7%*%?%?"!&!7!7!&!7!7!--!--"//!--!--#(#H#H  /88!&!&!7!7ui(Zt-L).):):;L)M&  ))K7E$)$7$7$9D!$(D!    c                     | j                   S )z(The address (host, port) of this server.)r	   r<   s    rC   r=   zServerDescription.addressb        }}rE   c                     | j                   S )zThe type of this server.)r
   rG   s    rC   r#   zServerDescription.server_typeg   s        rE   c                 <    t         j                  | j                     S )zSThe server type as a human readable string.

        .. versionadded:: 3.4
        )r   _fieldsr
   rG   s    rC   server_type_namez"ServerDescription.server_type_namel   s     ""4#4#455rE   c                     | j                   S )z;List of hosts, passives, and arbiters known to this server.)r   rG   s    rC   r$   zServerDescription.all_hostst   s     rE   c                     | j                   S N)r   rG   s    rC   r%   zServerDescription.tagsy   s    zzrE   c                     | j                   S )zReplica set name or None.)r   rG   s    rC   r&   z"ServerDescription.replica_set_name}   s     %%%rE   c                     | j                   S )z8This server's opinion about who the primary is, or None.)r   rG   s    rC   r'   zServerDescription.primary   rH   rE   c                     | j                   S rO   )r   rG   s    rC   r(   zServerDescription.max_bson_size   s    """rE   c                     | j                   S rO   )r   rG   s    rC   r)   z"ServerDescription.max_message_size       %%%rE   c                     | j                   S rO   )r   rG   s    rC   r*   z&ServerDescription.max_write_batch_size   s    )))rE   c                     | j                   S rO   )r   rG   s    rC   r+   z"ServerDescription.min_wire_version   rT   rE   c                     | j                   S rO   r   rG   s    rC   r,   z"ServerDescription.max_wire_version   rT   rE   c                     | j                   S rO   )r   rG   s    rC   r-   zServerDescription.set_version          rE   c                     | j                   S rO   )r   rG   s    rC   r.   zServerDescription.election_id   rZ   rE   c                     | j                   S rO   )r   rG   s    rC   r/   zServerDescription.cluster_time   s    !!!rE   c                 2    | j                   | j                  fS rO   )r   r   rG   s    rC   election_tuplez ServerDescription.election_tuple   s      $"3"333rE   c                     | j                   S rO   )r   rG   s    rC   r3   zServerDescription.me   s    xxrE   c                     | j                   S rO   )r   rG   s    rC   r2   z1ServerDescription.logical_session_timeout_minutes   s    '''rE   c                     | j                   S rO   )r   rG   s    rC   r:   z!ServerDescription.last_write_date   s    $$$rE   c                     | j                   S rO   )r   rG   s    rC   last_update_timez"ServerDescription.last_update_time   rT   rE   c                 |    | j                   | j                  v r| j                  | j                      S | j                  S )z$The current average latency or None.)r	   _host_to_round_trip_timer   rG   s    rC   r?   z!ServerDescription.round_trip_time   s7     ==D99900??$$$rE   c                     | j                   S )z<The last error attempting to connect to the server, or None.)r   rG   s    rC   r@   zServerDescription.error   s     {{rE   c                     | j                   S rO   )r   rG   s    rC   r0   zServerDescription.is_writable   rZ   rE   c                     | j                   S rO   )r   rG   s    rC   r1   zServerDescription.is_readable   rZ   rE   c                 <    | j                   t        j                  k(  S rO   )r
   r   MongosrG   s    rC   mongoszServerDescription.mongos   s      K$6$666rE   c                 <    | j                   t        j                  k7  S rO   )r#   r   UnknownrG   s    rC   is_server_type_knownz&ServerDescription.is_server_type_known   s    ;#6#666rE   c                     | j                   duxr, | j                  t        j                  t        j                  fv xs | j                  t        j
                  k(  S )0Checks if this server supports retryable writes.N)r   r
   r   rj   	RSPrimaryLoadBalancerrG   s    rC   retryable_writes_supportedz,ServerDescription.retryable_writes_supported   sW     $$D0 Q!!k&8&8+:O:O%PP; +":"::	;rE   c                      | j                   dk\  S )rp      rX   rG   s    rC   retryable_reads_supportedz+ServerDescription.retryable_reads_supported   s     %%**rE   c                     | j                   S rO   )r   rG   s    rC   r5   z"ServerDescription.topology_version   rT   rE   c                 V    t        | j                  |      }| j                  |_        |S )N)r@   )r   r=   r5   r   )r<   r@   unknowns      rC   
to_unknownzServerDescription.to_unknown   s%    #DLL>$($9$9!rE   c                    t        |t              r`| j                  |j                  k(  xrD | j                  |j
                  k(  xr( | j                  |j                  k(  xr | j                  |j                  k(  xr | j                  |j                  k(  xr | j                  |j                  k(  xr | j                  |j                  k(  xr | j                   |j"                  k(  xr | j$                  |j&                  k(  xrj | j(                  |j*                  k(  xrO | j,                  |j.                  k(  xr4 | j0                  |j2                  k(  xr | j4                  |j6                  k(  S t8        S rO   )r7   r   r	   r=   r
   r#   r   r+   r   r,   r   r3   r   r$   r   r%   r   r&   r   r-   r   r.   r   r'   r   r2   r   r@   NotImplementedr<   others     rC   __eq__zServerDescription.__eq__   sV   e./%--/ 1&&%*;*;;1++u/E/EE1 ++u/E/EE1 XX)	1
 __71 ZZ5::-1 ++u/E/EE1 &&%*;*;;1 &&%*;*;;1 ]]emm31 --1V1VV1 [[EKK/  rE   c                     | |k(   S rO    r}   s     rC   __ne__zServerDescription.__ne__  s    5=  rE   c           
          d}| j                   rd| j                   }d| j                  j                  d| j                  d| j                  d| j
                  |d
S )N z, error=< z server_type: z, rtt: >)r@   	__class____name__r=   rL   r?   )r<   errmsgs     rC   __repr__zServerDescription.__repr__  sN    ::%)ZZ1FNN##LL!!  
 	
rE   )NNNrO   ))r   
__module____qualname____doc__	__slots__rD   propertyr=   r#   rL   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r^   r3   r2   r:   rc   r?   r@   r0   r1   rk   rn   rs   rv   r5   rz   r   r   r   re   r   rE   rC   r   r      st   
I4")H   ! ! 6 6     & &   # # & & * * & & & & ! ! ! ! " " 4 4   ( ( % % & & % %   ! ! ! ! 7 7 7 7 ; ; + + & &
(!

  "rE   r   N)r   bsonr   pymongo.ismasterr   pymongo.monotonicr   r4   pymongo.server_typer   objectr   r   rE   rC   <module>r      s$    7  % + +|" |"rE   