o
    h                     @  s  d dl mZ d dlZd dlZd dlZd dlZd dlmZ d dlm	Z	m
Z
 d dlmZmZ d dlmZmZ G dd deejZG d	d
 d
eejZG dd deejZG dd deejZdZg dZg dZg dZg dZee	jdZedZedZ edZ!edZ"edZ#ej$dej$dej%dej&dej'dej(dej)diZ*d5d"d#Z+d6d(d)Z,d7d,d-Z-d6d.d/Z.d8d1d2Z/G d3d4 d4Z0dS )9    )annotationsN)Any)UuidRepresentation	json_util)JSONOptions_truncate_documents)ConnectionCheckOutFailedReasonConnectionClosedReasonc                   @  s   e Zd ZdZdZdZdS )_CommandStatusMessagezCommand startedzCommand succeededzCommand failedN)__name__
__module____qualname__STARTED	SUCCEEDEDFAILED r   r   A/var/www/html/venv/lib/python3.10/site-packages/pymongo/logger.pyr
      s    r
   c                   @  s   e Zd ZdZdZdZdZdS )_ServerSelectionStatusMessagezServer selection startedzServer selection succeededzServer selection failedz/Waiting for suitable server to become availableN)r   r   r   r   r   r   ZWAITINGr   r   r   r   r   !   s
    r   c                   @  s8   e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdS )_ConnectionStatusMessagezConnection pool createdzConnection pool readyzConnection pool closedzConnection pool clearedzConnection createdzConnection readyzConnection closedzConnection checkout startedzConnection checked outzConnection checkout failedzConnection checked inN)r   r   r   ZPOOL_CREATEDZ
POOL_READYPOOL_CLOSEDZPOOL_CLEAREDZCONN_CREATEDZ
CONN_READYZCONN_CLOSEDZCHECKOUT_STARTEDZCHECKOUT_SUCCEEDEDZCHECKOUT_FAILEDZ	CHECKEDINr   r   r   r   r   (   s    r   c                   @  s,   e Zd ZdZdZdZdZdZdZdZ	dZ
d	S )
_SDAMStatusMessagezStarting topology monitoringzStopped topology monitoringzStarting server monitoringzStopped server monitoringzTopology description changedzServer heartbeat startedzServer heartbeat succeededzServer heartbeat failedN)r   r   r   ZSTART_TOPOLOGYZSTOP_TOPOLOGYZSTART_SERVERZSTOP_SERVERZTOPOLOGY_CHANGEZHEARTBEAT_STARTZHEARTBEAT_SUCCESSZHEARTBEAT_FAILr   r   r   r   r   8   s    r     )	ZauthenticateZ	saslStartZsaslContinueZgetnonceZ
createUserZ
updateUserZcopydbgetnonceZcopydbsaslstartZcopydb)ZhelloZismasterZisMaster)codeZcodeNameZerrorLabels)commandZreplyfailure)Zuuid_representationzpymongo.commandzpymongo.connectionzpymongo.serverSelectionzpymongo.clientzpymongo.topologyzConnection pool was closedzConnection pool was stalez,An error occurred while using the connectionz<An error occurred while trying to establish a new connectionzConnection was idle too longz)Connection exceeded the specified timeoutreturnNonec                  C  s   t } | r| d d S d S )Nz1MongoClient background task encountered an error:)_CLIENT_LOGGER	exception)loggerr   r   r   _log_client_errorc   s   r    r   logging.Loggerfieldsr   c                 K     |  tdi | d S Nr   )debug
LogMessager   r"   r   r   r   
_debug_logk      r(   reasonstrc                 C  s   t | | S N)!_VERBOSE_CONNECTION_ERROR_REASONSget)r*   r   r   r    _verbose_connection_error_reasono   s   r/   c                 K  r#   r$   )infor&   r'   r   r   r   	_info_logs   r)   r1   messagec                 C  s.   |  tjr| | d S tj|tdd d S )N   )
stacklevel)isEnabledForloggingINFOr0   warningswarnUserWarning)r   r2   r   r   r   _log_or_warnw   s   r;   c                   @  s8   e Zd ZdZdddZddd	ZdddZdddZdS )r&   _kwargs	_redactedkwargsr   c                 K  s   || _ d| _d S )NFr<   )selfr?   r   r   r   __init__   s   
zLogMessage.__init__r   r+   c                 C  s"   |    dtj| jtdd d S )Nz%sc                 S     |   S r,   __repr__or   r   r   <lambda>       z$LogMessage.__str__.<locals>.<lambda>Zjson_optionsdefault)_redactr   dumpsr=   _JSON_OPTIONS)r@   r   r   r   __str__   s   zLogMessage.__str__doc_nameboolc                 C  sR   | j ddpd| j | v }d| j v o| j d tv }| j dd tv o$|}|p(|S )NZspeculative_authenticateFZspeculativeAuthenticateZcommandName)r=   pop_SENSITIVE_COMMANDSr.   _HELLO_COMMANDS)r@   rO   Zis_speculative_authenticateZis_sensitive_commandZis_sensitive_hellor   r   r   _is_sensitive   s   zLogMessage._is_sensitiver   c                 C  sN  | j rd S dd | j D | _d| jv r)t| jd dr)| jd  d | jd< d| jv r8t| jd | jd< ttdt	}|dk rFt	}| j
d	d
}tD ]R}| j|}|r|dkrh|rhdd | D }|dkrw| |rwti }nt||d }tj|tdd d}t||kr| d | ddd }|| j|< qOd| _ d S )Nc                 S  s   i | ]\}}|d ur||qS r,   r   .0kvr   r   r   
<dictcomp>       z&LogMessage._redact.<locals>.<dictcomp>Z
durationMStotal_secondsr   Z	serviceIdZMONGOB_LOG_MAX_DOCUMENT_LENGTHr   ZisServerSideErrorFr   c                 S  s   i | ]\}}|t v r||qS r   )_REDACTED_FAILURE_FIELDSrU   r   r   r   rY      rZ   c                 S  rB   r,   rC   rE   r   r   r   rG      rH   z$LogMessage._redact.<locals>.<lambda>rI   zunicode-escapeignorez...T)r>   r=   itemshasattrr[   r+   intosgetenv_DEFAULT_DOCUMENT_LENGTHrQ   _DOCUMENT_NAMESr.   rT   r   rL   r   rM   lenencodedecode)r@   Zdocument_lengthZis_server_side_errorrO   docZtruncated_docr   r   r   rK      s>   


zLogMessage._redactN)r?   r   )r   r+   )rO   r+   r   rP   r   r   )r   r   r   	__slots__rA   rN   rT   rK   r   r   r   r   r&      s    


r&   ri   )r   r!   r"   r   r   r   )r*   r+   r   r+   )r   r!   r2   r+   r   r   )1
__future__r   enumr6   ra   r8   typingr   Zbsonr   r   Zbson.json_utilr   r   Zpymongo.monitoringr   r	   r+   Enumr
   r   r   r   rc   rR   rS   r\   rd   STANDARDrM   	getLoggerZ_COMMAND_LOGGERZ_CONNECTION_LOGGERZ_SERVER_SELECTION_LOGGERr   Z_SDAM_LOGGERr   ZSTALEERRORZ
CONN_ERRORZIDLETIMEOUTr-   r    r(   r/   r1   r;   r&   r   r   r   r   <module>   sL   









