o
    ?8¾\¯  ã                   @   sL   d Z ddlZddlmZ ddlmZ ddlmZ dd„ ZG dd	„ d	e	ƒZ
dS )
z+Parse a response to the 'ismaster' command.é    N)Úimap)Úcommon)ÚSERVER_TYPEc                 C   sŠ   |   d¡stjS |   d¡rtjS |   d¡r8|   d¡rtjS |   d¡r%tjS |   d¡r-tjS |   d¡r5tjS tjS |   d¡d	krBt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)Údoc© r   úB/var/www/html/env/lib/python3.10/site-packages/pymongo/ismaster.pyÚ_get_server_type   s"   






r   c                   @   s  e Zd ZdZ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ed$d%„ ƒZed&d'„ ƒZed(d)„ ƒZed*d+„ ƒZd,S )-ÚIsMaster)Ú_docÚ_server_typeÚ_is_writableÚ_is_readablec                 C   s@   t |ƒ| _|| _| jtjtjtjfv | _| jtj	kp| j| _
dS )z+Parse an ismaster response from the server.N)r   r   r   r   r   r   r   r   Úserver_typer   r   )Úselfr   r   r   r   Ú__init__3   s   
ýþzIsMaster.__init__c                 C   s
   | j  ¡ S )zXThe complete ismaster command response document.

        .. versionadded:: 3.4
        )r   Úcopy©r!   r   r   r   Údocument@   s   
zIsMaster.documentc                 C   ó   | j S ©N)r   r$   r   r   r   r    H   ó   zIsMaster.server_typec                 C   s8   t ttjt | j dg ¡| j dg ¡| 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$   r   r   r   Ú	all_hostsL   s
   ýzIsMaster.all_hostsc                 C   s   | j  di ¡S )z&Replica set member tags or empty dict.Útags©r   r   r$   r   r   r   r1   T   s   zIsMaster.tagsc                 C   s    | j  d¡rt | j d ¡S dS )z8This server's opinion about who the primary is, or None.ÚprimaryN)r   r   r   Úpartition_noder$   r   r   r   r3   Y   s   zIsMaster.primaryc                 C   ó   | j  d¡S )zReplica set name or None.r   r2   r$   r   r   r   Úreplica_set_namea   s   zIsMaster.replica_set_namec                 C   ó   | j  dtj¡S )NÚmaxBsonObjectSize)r   r   r   ÚMAX_BSON_SIZEr$   r   r   r   Úmax_bson_sizef   ó   zIsMaster.max_bson_sizec                 C   s   | j  dd| j ¡S )NÚmaxMessageSizeBytesé   )r   r   r:   r$   r   r   r   Úmax_message_sizej   ó   zIsMaster.max_message_sizec                 C   r7   )NÚmaxWriteBatchSize)r   r   r   ÚMAX_WRITE_BATCH_SIZEr$   r   r   r   Úmax_write_batch_sizen   r;   zIsMaster.max_write_batch_sizec                 C   r7   )NÚminWireVersion)r   r   r   ÚMIN_WIRE_VERSIONr$   r   r   r   Úmin_wire_versionr   r;   zIsMaster.min_wire_versionc                 C   r7   )NÚmaxWireVersion)r   r   r   ÚMAX_WIRE_VERSIONr$   r   r   r   Úmax_wire_versionv   r;   zIsMaster.max_wire_versionc                 C   r5   )NÚ
setVersionr2   r$   r   r   r   Úset_versionz   ó   zIsMaster.set_versionc                 C   r5   )NÚ
electionIdr2   r$   r   r   r   Úelection_id~   rK   zIsMaster.election_idc                 C   r5   )Nz$clusterTimer2   r$   r   r   r   Úcluster_time‚   rK   zIsMaster.cluster_timec                 C   r5   )NÚlogicalSessionTimeoutMinutesr2   r$   r   r   r   Úlogical_session_timeout_minutes†   rK   z(IsMaster.logical_session_timeout_minutesc                 C   r&   r'   )r   r$   r   r   r   Úis_writableŠ   r(   zIsMaster.is_writablec                 C   r&   r'   )r   r$   r   r   r   Úis_readableŽ   r(   zIsMaster.is_readablec                 C   s   | j  d¡}|rt |¡S d S )NÚme)r   r   r   r-   )r!   rS   r   r   r   rS   ’   s   
ÿzIsMaster.mec                 C   s   | j  di ¡ d¡S )NÚ	lastWriteÚlastWriteDater2   r$   r   r   r   Úlast_write_date˜   r?   zIsMaster.last_write_datec                 C   r5   )NÚcompressionr2   r$   r   r   r   Úcompressorsœ   rK   zIsMaster.compressorsN)Ú__name__Ú
__module__Ú__qualname__Ú	__slots__r"   Úpropertyr%   r    r0   r1   r3   r6   r:   r>   rB   rE   rH   rJ   rM   rN   rP   rQ   rR   rS   rV   rX   r   r   r   r   r   0   sV    


















r   )Ú__doc__r.   Úbson.py3compatr   Úpymongor   Úpymongo.server_typer   r   Úobjectr   r   r   r   r   Ú<module>   s   