Ë
    Ü_Ë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 ddl	m
Z
 ddlmZ ddlmZ ddlmZ dd	lmZmZ  G d
„ d«      Zy)z’Represent one server the driver is connected to.

.. seealso:: This module is compatible with both the synchronous and asynchronous PyMongo APIs.
é    )ÚannotationsN)ÚAnyÚMappingÚOptional)ÚEPOCH_NAIVE)ÚObjectId)ÚHello)ÚSERVER_TYPE)ÚClusterTimeÚ_Addressc                  óŠ  — e Zd ZU dZdZ	 	 	 	 d)	 	 	 	 	 	 	 	 	 	 	 d*d„Zed+d„«       Zed,d„«       Zed-d„«       Z	ed.d„«       Z
ed/d	„«       Zed0d
„«       Zed1d„«       Zed,d„«       Zed,d„«       Zed,d„«       Zed,d„«       Zed,d„«       Zed2d„«       Zed3d„«       Zed4d„«       Zed5d„«       Zed1d„«       Zed2d„«       Zed6d„«       Zed7d„«       Zed6d„«       Zed7d„«       Zed8d„«       Zed9d„«       Zed9d„«       Zed9d„«       Z ed9d„«       Z!ed9d „«       Z"ed9d!„«       Z#ed:d"„«       Z$d;d<d#„Z%d=d$„Z&d=d%„Z'd-d&„Z(i Z)d'e*d(<   y)>ÚServerDescriptionaR  Immutable representation of one server.

    :param address: A (host, port) pair
    :param hello: Optional Hello instance
    :param round_trip_time: Optional float
    :param error: Optional, the last error attempting to connect to the server
    :param round_trip_time: Optional float, the min latency from the most recent samples
    )Ú_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Ú_min_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                óÒ  — || _         |st        i «      }|j                  | _        |j                  | _        |j                  | _        |j                  | _	        |j                  | _        |j                  | _        |j                  | _        |j                   | _        |j$                  | _        |j(                  | _        |j,                  | _        |j0                  | _        |j4                  | _        |j8                  | _        |j<                  | _        |j@                  | _!        || _"        || _#        |jH                  | _%        tM        jN                  «       | _(        || _)        |jT                  | _+        |r3tY        |dd «      }t[        |t\        «      r|j_                  d«      | _+        |  |j`                  r)|j`                  tb        z
  }|je                  «       | _3        y d | _3        y )NÚdetailsÚtopologyVersion)4r   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   r   Úmer   ÚtimeÚ	monotonicr%   r    Útopology_versionr&   ÚgetattrÚ
isinstanceÚdictÚgetÚlast_write_dater   Útotal_secondsr$   )ÚselfÚaddressÚhelloÚround_trip_timeÚerrorÚmin_round_trip_timer(   Údeltas           ú]/var/www/pod-logistic/pod-api/venv/lib/python3.12/site-packages/pymongo/server_description.pyÚ__init__zServerDescription.__init__E   s�  € ð  ˆŒÙÜ˜"“IˆEà!×-Ñ-ˆÔØŸ/™/ˆŒØ—Z‘ZˆŒ
Ø!&×!7Ñ!7ˆÔØŸ™ˆŒØ#×1Ñ1ˆÔØ!&×!7Ñ!7ˆÔØ%*×%?Ñ%?ˆÔ"Ø!&×!7Ñ!7ˆÔØ!&×!7Ñ!7ˆÔØ!×-Ñ-ˆÔØ!×-Ñ-ˆÔØ"×/Ñ/ˆÔØ!×-Ñ-ˆÔØ!×-Ñ-ˆÔØ#(×#HÑ#HˆÔ Ø /ˆÔØ$7ˆÔ!Ø—8‘8ˆŒÜ!%§¡Ó!1ˆÔØˆŒØ!&×!7Ñ!7ˆÔÙÜ˜e Y°Ó5ˆGÜ˜'¤4Ô(Ø)0¯©Ð5FÓ)G�Ô&áØ× Ò à×)Ñ)¬KÑ7ˆEØ$)×$7Ñ$7Ó$9ˆDÕ!à$(ˆDÕ!ó    c                ó   — | j                   S )z(The address (host, port) of this server.)r   ©rD   s    rK   rE   zServerDescription.addresst   ó   € ð �}‰}ÐrM   c                ó   — | j                   S )zThe type of this server.)r   rO   s    rK   r*   zServerDescription.server_typey   s   € ð × Ñ Ð rM   c                ó<   — t         j                  | j                     S )zSThe server type as a human readable string.

        .. versionadded:: 3.4
        )r
   Ú_fieldsr   rO   s    rK   Úserver_type_namez"ServerDescription.server_type_name~   s   € ô ×"Ñ" 4×#4Ñ#4Ñ5Ð5rM   c                ó   — | j                   S )z;List of hosts, passives, and arbiters known to this server.)r   rO   s    rK   r+   zServerDescription.all_hosts†   s   € ð �‰ÐrM   c                ó   — | j                   S ©N)r   rO   s    rK   r,   zServerDescription.tags‹   s   € à�z‰zÐrM   c                ó   — | j                   S )zReplica set name or None.)r   rO   s    rK   r-   z"ServerDescription.replica_set_name�   s   € ð ×%Ñ%Ð%rM   c                ó   — | j                   S )z8This server's opinion about who the primary is, or None.)r   rO   s    rK   r.   zServerDescription.primary”   rP   rM   c                ó   — | j                   S rW   )r   rO   s    rK   r/   zServerDescription.max_bson_size™   s   € à×"Ñ"Ð"rM   c                ó   — | j                   S rW   )r   rO   s    rK   r0   z"ServerDescription.max_message_size�   ó   € à×%Ñ%Ð%rM   c                ó   — | j                   S rW   )r   rO   s    rK   r1   z&ServerDescription.max_write_batch_size¡   s   € à×)Ñ)Ð)rM   c                ó   — | j                   S rW   )r   rO   s    rK   r2   z"ServerDescription.min_wire_version¥   r\   rM   c                ó   — | j                   S rW   ©r   rO   s    rK   r3   z"ServerDescription.max_wire_version©   r\   rM   c                ó   — | j                   S rW   )r!   rO   s    rK   r4   zServerDescription.set_version­   ó   € à× Ñ Ð rM   c                ó   — | j                   S rW   )r"   rO   s    rK   r5   zServerDescription.election_id±   rb   rM   c                ó   — | j                   S rW   )r#   rO   s    rK   r6   zServerDescription.cluster_timeµ   s   € à×!Ñ!Ð!rM   c                ój   — t        j                  dt        d¬«       | j                  | j                  fS )NzL'election_tuple' is deprecated, use  'set_version' and 'election_id' insteadé   )Ú
stacklevel)ÚwarningsÚwarnÚDeprecationWarningr!   r"   rO   s    rK   Úelection_tuplez ServerDescription.election_tuple¹   s0   € ä�‰ØZÜØõ	
ð
 × Ñ  $×"3Ñ"3Ð3Ð3rM   c                ó   — | j                   S rW   )r   rO   s    rK   r:   zServerDescription.meÂ   s   € à�x‰xˆrM   c                ó   — | j                   S rW   )r   rO   s    rK   r9   z1ServerDescription.logical_session_timeout_minutesÆ   s   € à×'Ñ'Ð'rM   c                ó   — | j                   S rW   )r$   rO   s    rK   rB   z!ServerDescription.last_write_dateÊ   s   € à×$Ñ$Ð$rM   c                ó   — | j                   S rW   )r%   rO   s    rK   Úlast_update_timez"ServerDescription.last_update_timeÎ   r\   rM   c                ó|   — | j                   | j                  v r| j                  | j                      S | j                  S )z$The current average latency or None.)r   Ú_host_to_round_trip_timer   rO   s    rK   rG   z!ServerDescription.round_trip_timeÒ   s7   € ð �=‰=˜D×9Ñ9Ñ9Ø×0Ñ0°·±Ñ?Ð?à×$Ñ$Ð$rM   c                ó   — | j                   S )z-The min latency from the most recent samples.)r   rO   s    rK   rI   z%ServerDescription.min_round_trip_timeÛ   s   € ð ×(Ñ(Ð(rM   c                ó   — | j                   S )z<The last error attempting to connect to the server, or None.)r    rO   s    rK   rH   zServerDescription.errorà   s   € ð �{‰{ÐrM   c                ó   — | j                   S rW   )r   rO   s    rK   r7   zServerDescription.is_writableå   rb   rM   c                ó   — | j                   S rW   )r   rO   s    rK   r8   zServerDescription.is_readableé   rb   rM   c                ó<   — | j                   t        j                  k(  S rW   )r   r
   ÚMongosrO   s    rK   ÚmongoszServerDescription.mongosí   s   € à× Ñ ¤K×$6Ñ$6Ñ6Ð6rM   c                ó<   — | j                   t        j                  k7  S rW   )r*   r
   ÚUnknownrO   s    rK   Úis_server_type_knownz&ServerDescription.is_server_type_knownñ   s   € à×Ñ¤;×#6Ñ#6Ñ6Ð6rM   c                ó˜   — | j                   t        j                  t        j                  fv xs | j                   t        j                  k(  S )ú0Checks if this server supports retryable writes.)r   r
   rx   Ú	RSPrimaryÚLoadBalancerrO   s    rK   Úretryable_writes_supportedz,ServerDescription.retryable_writes_supportedõ   sA   € ð ×Ñ¤+×"4Ñ"4´k×6KÑ6KÐ!LÐLò;à×Ñ¤+×":Ñ":Ñ:ð	;rM   c                ó    — | j                   dk\  S )r~   é   r`   rO   s    rK   Úretryable_reads_supportedz+ServerDescription.retryable_reads_supportedü   s   € ð ×%Ñ%¨Ñ*Ð*rM   c                ó   — | j                   S rW   )r&   rO   s    rK   r=   z"ServerDescription.topology_version  r\   rM   c                óV   — t        | j                  |¬«      }| j                  |_        |S )N)rH   )r   rE   r=   r&   )rD   rH   Úunknowns      rK   Ú
to_unknownzServerDescription.to_unknown  s%   € Ü# D§L¡L¸Ô>ˆØ$(×$9Ñ$9ˆÔ!ØˆrM   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 rW   )r?   r   r   rE   r   r*   r   r2   r   r3   r   r:   r   r+   r   r,   r   r-   r!   r4   r"   r5   r   r.   r   r9   r    rH   ÚNotImplemented©rD   Úothers     rK   Ú__eq__zServerDescription.__eq__
  sV  € Ü�eÔ.Õ/à—‘ %§-¡-Ñ/ó 1Ø×&Ñ&¨%×*;Ñ*;Ñ;ó1à×+Ñ+¨u×/EÑ/EÑEó1ð ×+Ñ+¨u×/EÑ/EÑEò1ð —X‘X §¡Ñ)ò	1ð
 —_‘_¨¯©Ñ7ò1ð —Z‘Z 5§:¡:Ñ-ò1ð ×+Ñ+¨u×/EÑ/EÑEò1ð ×&Ñ&¨%×*;Ñ*;Ñ;ò1ð ×&Ñ&¨%×*;Ñ*;Ñ;ò1ð —]‘] e§m¡mÑ3ò1ð ×-Ñ-°×1VÑ1VÑVò1ð —[‘[ E§K¡KÑ/ðô  ÐrM   c                ó   — | |k(   S rW   © r‹   s     rK   Ú__ne__zServerDescription.__ne__  s   € Ø˜5‘=Ð Ð rM   c                óÊ   — d}| j                   rd| j                   ›�}dj                  | j                  j                  | j                  | j
                  | j                  |«      S )NÚ z, error=z"<{} {} server_type: {}, rtt: {}{}>)rH   ÚformatÚ	__class__Ú__name__rE   rT   rG   )rD   Úerrmsgs     rK   Ú__repr__zServerDescription.__repr__!  sZ   € ØˆØ�:Š:Ø §
¡
˜~Ð.ˆFØ3×:Ñ:Ø�N‰N×#Ñ#Ø�L‰LØ×!Ñ!Ø× Ñ Øó
ð 	
rM   r@   rr   )NNNg        )rE   r   rF   zOptional[Hello[dict[str, Any]]]rG   úOptional[float]rH   úOptional[Exception]rI   ÚfloatÚreturnÚNone)r›   r   )r›   Úint)r›   Ústr)r›   zset[tuple[str, int]])r›   zMapping[str, Any])r›   zOptional[str])r›   zOptional[tuple[str, int]])r›   zOptional[int])r›   zOptional[ObjectId])r›   zOptional[ClusterTime])r›   z(tuple[Optional[int], Optional[ObjectId]])r›   r˜   )r›   rš   )r›   r™   )r›   Úbool)r›   zOptional[Mapping[str, Any]]rW   )rH   r™   r›   r   )rŒ   r   r›   rŸ   )+r•   Ú
__module__Ú__qualname__Ú__doc__Ú	__slots__rL   ÚpropertyrE   r*   rT   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   rk   r:   r9   rB   rp   rG   rI   rH   r7   r8   ry   r|   r�   r„   r=   rˆ   r�   r�   r—   rr   Ú__annotations__r�   rM   rK   r   r       sÕ  … ñð€Ið< 26Ø+/Ø%)Ø%(ð-)àð-)ð /ð-)ð )ð	-)ð
 #ð-)ð #ð-)ð 
ó-)ð^ òó ðð ò!ó ð!ð ò6ó ð6ð òó ðð òó ðð ò&ó ð&ð òó ðð ò#ó ð#ð ò&ó ð&ð ò*ó ð*ð ò&ó ð&ð ò&ó ð&ð ò!ó ð!ð ò!ó ð!ð ò"ó ð"ð ò4ó ð4ð òó ðð ò(ó ð(ð ò%ó ð%ð ò&ó ð&ð ò%ó ð%ð ò)ó ð)ð òó ðð ò!ó ð!ð ò!ó ð!ð ò7ó ð7ð ò7ó ð7ð ò;ó ð;ð ò+ó ð+ð ò&ó ð&ôó
ó(!ó

ð &(Ð˜dÔ'rM   r   )r¢   Ú
__future__r   r;   rh   Útypingr   r   r   Úbsonr   Úbson.objectidr   Úpymongo.hellor	   Úpymongo.server_typer
   Úpymongo.typingsr   r   r   r�   rM   rK   ú<module>r­      s6   ðñõ #ã Û ß )Ñ )å Ý "Ý Ý +ß 1÷N(ò N(rM   