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   J/var/www/html/olx_land/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   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   POOL_CREATED
POOL_READYPOOL_CLOSEDPOOL_CLEAREDCONN_CREATED
CONN_READYCONN_CLOSEDCHECKOUT_STARTEDCHECKOUT_SUCCEEDEDCHECKOUT_FAILED	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   START_TOPOLOGYSTOP_TOPOLOGYSTART_SERVERSTOP_SERVERTOPOLOGY_CHANGEHEARTBEAT_STARTHEARTBEAT_SUCCESSHEARTBEAT_FAILr   r   r   r   r!   8   s    r!     )	authenticate	saslStartsaslContinuegetnonce
createUser
updateUsercopydbgetnoncecopydbsaslstartcopydb)helloismasterisMaster)codecodeNameerrorLabels)commandreplyfailure)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   rC   rB   logging.Loggerfieldsr   c                 K     |  tdi | d S Nr   )debug
LogMessagerB   rE   r   r   r   
_debug_logk      rK   reasonstrc                 C  s   t | | S N)!_VERBOSE_CONNECTION_ERROR_REASONSget)rM   r   r   r    _verbose_connection_error_reasono   s   rR   c                 K  rF   rG   )inforI   rJ   r   r   r   	_info_logs   rL   rT   messagec                 C  s.   |  tjr| | d S tj|tdd d S )N   )
stacklevel)isEnabledForloggingINFOrS   warningswarnUserWarning)rB   rU   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 )rI   _kwargs	_redactedkwargsr   c                 K  s   || _ d| _d S )NFr_   )selfrb   r   r   r   __init__   s   
zLogMessage.__init__r>   rN   c                 C  s"   |    dtj| jtdd d S )Nz%sc                 S     |   S rO   __repr__or   r   r   <lambda>       z$LogMessage.__str__.<locals>.<lambda>json_optionsdefault)_redactr   dumpsr`   _JSON_OPTIONS)rc   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 )Nspeculative_authenticateFspeculativeAuthenticatecommandName)r`   pop_SENSITIVE_COMMANDSrQ   _HELLO_COMMANDS)rc   rs   is_speculative_authenticateis_sensitive_command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 rO   r   .0kvr   r   r   
<dictcomp>       z&LogMessage._redact.<locals>.<dictcomp>
durationMStotal_secondsr*   	serviceIdMONGOB_LOG_MAX_DOCUMENT_LENGTHr   isServerSideErrorFr<   c                 S  s   i | ]\}}|t v r||qS r   )_REDACTED_FAILURE_FIELDSr   r   r   r   r      r   c                 S  re   rO   rf   rh   r   r   r   rj      rk   z$LogMessage._redact.<locals>.<lambda>rl   zunicode-escapeignorez...T)ra   r`   itemshasattrr   rN   intosgetenv_DEFAULT_DOCUMENT_LENGTHrx   _DOCUMENT_NAMESrQ   r~   r   rp   r   rq   lenencodedecode)rc   document_lengthis_server_side_errorrs   doctruncated_docr   r   r   ro      s>   


zLogMessage._redactN)rb   r   )r>   rN   )rs   rN   r>   rt   r>   r?   )r   r   r   	__slots__rd   rr   r~   ro   r   r   r   r   rI      s    


rI   r   )rB   rD   rE   r   r>   r?   )rM   rN   r>   rN   )rB   rD   rU   rN   r>   r?   )1
__future__r   enumrY   r   r[   typingr   bsonr   r   bson.json_utilr   r   pymongo.monitoringr   r	   rN   Enumr
   r   r   r!   r   ry   rz   r   r   STANDARDrq   	getLogger_COMMAND_LOGGER_CONNECTION_LOGGER_SERVER_SELECTION_LOGGERr@   _SDAM_LOGGERr   STALEERROR
CONN_ERRORIDLETIMEOUTrP   rC   rK   rR   rT   r^   rI   r   r   r   r   <module>   sL   









