
    hx                     P    d Z ddlZddlmZ ddlmZ ddlmZ d Z G d de	      Z
y)	z+Parse a response to the 'ismaster' command.    N)imap)common)SERVER_TYPEc                 8   | j                  d      st        j                  S | j                  d      rt        j                  S | j                  d      r| j                  d      rt        j                  S | j                  d      rt        j
                  S | j                  d      rt        j                  S | j                  d      rt        j                  S t        j                  S | j                  d      d	k(  rt        j                  S t        j                  S )
z4Determine the server type from an ismaster response.okisreplicasetsetNamehiddenismaster	secondaryarbiterOnlymsgisdbgrid)
getr   UnknownRSGhostRSOther	RSPrimaryRSSecondary	RSArbiterMongos
Standalone)docs    S/var/www/html/ranktracker/api/venv/lib/python3.12/site-packages/pymongo/ismaster.py_get_server_typer      s    774="""
ww~"""		778&&&WWZ (((WW[!***WW]#(((&&&	:	%!!!%%%    c                      e 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y)IsMaster)_doc_server_type_is_writable_is_readable
_awaitablec                     t        |      | _        || _        | j                  t        j                  t        j
                  t        j                  fv | _        | j                  t        j                  k(  xs | j                  | _
        || _        y)z+Parse an ismaster response from the server.N)r   r    r   r   r   r   r   r!   server_typer   r"   r#   )selfr   	awaitables      r   __init__zIsMaster.__init__4   s~    ,S1	 --!!""2     7 77 !   	 $r   c                 6    | j                   j                         S )zXThe complete ismaster command response document.

        .. versionadded:: 3.4
        )r   copyr&   s    r   documentzIsMaster.documentB   s     yy~~r   c                     | j                   S N)r    r+   s    r   r%   zIsMaster.server_typeJ          r   c                    t        t        t        j                  t	        j
                  | j                  j                  dg       | j                  j                  dg       | j                  j                  dg                         S )z;List of hosts, passives, and arbiters known to this server.hostspassivesarbiters)setr   r   
clean_node	itertoolschainr   r   r+   s    r   	all_hostszIsMaster.all_hostsN   sa     4))9??IIMM'2&IIMM*b)IIMM*b),+ , - 	-r   c                 :    | j                   j                  di       S )z&Replica set member tags or empty dict.tagsr   r   r+   s    r   r:   zIsMaster.tagsV   s     yy}}VR((r   c                 ~    | j                   j                  d      r"t        j                  | j                   d         S y)z8This server's opinion about who the primary is, or None.primaryN)r   r   r   partition_noder+   s    r   r=   zIsMaster.primary[   s1     99==#((9)=>>r   c                 8    | j                   j                  d      S )zReplica set name or None.r	   r;   r+   s    r   replica_set_namezIsMaster.replica_set_namec   s     yy}}Y''r   c                 V    | j                   j                  dt        j                        S )NmaxBsonObjectSize)r   r   r   MAX_BSON_SIZEr+   s    r   max_bson_sizezIsMaster.max_bson_sizeh   s    yy}}0&2F2FGGr   c                 T    | j                   j                  dd| j                  z        S )NmaxMessageSizeBytes   )r   r   rD   r+   s    r   max_message_sizezIsMaster.max_message_sizel   s#    yy}}2A8J8J4JKKr   c                 V    | j                   j                  dt        j                        S )NmaxWriteBatchSize)r   r   r   MAX_WRITE_BATCH_SIZEr+   s    r   max_write_batch_sizezIsMaster.max_write_batch_sizep   s    yy}}0&2M2MNNr   c                 V    | j                   j                  dt        j                        S )NminWireVersion)r   r   r   MIN_WIRE_VERSIONr+   s    r   min_wire_versionzIsMaster.min_wire_versiont       yy}}-v/F/FGGr   c                 V    | j                   j                  dt        j                        S )NmaxWireVersion)r   r   r   MAX_WIRE_VERSIONr+   s    r   max_wire_versionzIsMaster.max_wire_versionx   rQ   r   c                 8    | j                   j                  d      S )N
setVersionr;   r+   s    r   set_versionzIsMaster.set_version|       yy}}\**r   c                 8    | j                   j                  d      S )N
electionIdr;   r+   s    r   election_idzIsMaster.election_id   rY   r   c                 8    | j                   j                  d      S )Nz$clusterTimer;   r+   s    r   cluster_timezIsMaster.cluster_time   s    yy}}^,,r   c                 8    | j                   j                  d      S )NlogicalSessionTimeoutMinutesr;   r+   s    r   logical_session_timeout_minutesz(IsMaster.logical_session_timeout_minutes   s    yy}};<<r   c                     | j                   S r.   )r!   r+   s    r   is_writablezIsMaster.is_writable   r/   r   c                     | j                   S r.   )r"   r+   s    r   is_readablezIsMaster.is_readable   r/   r   c                 h    | j                   j                  d      }|rt        j                  |      S y )Nme)r   r   r   r5   )r&   rg   s     r   rg   zIsMaster.me   s-    YY]]4 $$R(( r   c                 X    | j                   j                  di       j                  d      S )N	lastWritelastWriteDater;   r+   s    r   last_write_datezIsMaster.last_write_date   s"    yy}}["-11/BBr   c                 8    | j                   j                  d      S )Ncompressionr;   r+   s    r   compressorszIsMaster.compressors   s    yy}}]++r   c                 :    | j                   j                  dg       S )zSupported authentication mechanisms for the current user.

        For example::

            >>> ismaster.sasl_supported_mechs
            ["SCRAM-SHA-1", "SCRAM-SHA-256"]

        saslSupportedMechsr;   r+   s    r   sasl_supported_mechszIsMaster.sasl_supported_mechs   s     yy}}1266r   c                 8    | j                   j                  d      S )z"The speculativeAuthenticate field.speculativeAuthenticater;   r+   s    r   speculative_authenticatez!IsMaster.speculative_authenticate   s     yy}}677r   c                 8    | j                   j                  d      S )NtopologyVersionr;   r+   s    r   topology_versionzIsMaster.topology_version   s    yy}}.//r   c                     | j                   S r.   )r#   r+   s    r   r'   zIsMaster.awaitable   s    r   N)F)__name__
__module____qualname__	__slots__r(   propertyr,   r%   r8   r:   r=   r@   rD   rH   rL   rP   rU   rX   r\   r^   ra   rc   re   rg   rk   rn   rq   rt   rw   r'    r   r   r   r   0   s   I$     ! ! - - ) )   ( ( H H L L O O H H H H + + + + - - = = ! ! ! ! ) )
 C C , , 	7 	7 8 8 0 0  r   r   )__doc__r6   bson.py3compatr   pymongor   pymongo.server_typer   r   objectr   r~   r   r   <module>r      s)    2    +&0Iv Ir   