+
    8i$                        R t ^ RIHt ^ RIt^ RIHt  ! R R]P                  4      t ! R R]P                  4      t	 ! R R	]P                  4      t ! R
 R]P                  4      t ! R R]P                  4      tR# )aa  Example event logger classes.

.. versionadded:: 3.11

These loggers can be registered using :func:`register` or
:class:`~pymongo.mongo_client.MongoClient`.

``monitoring.register(CommandLogger())``

or

``MongoClient(event_listeners=[CommandLogger()])``

.. seealso:: This module is compatible with both the synchronous and asynchronous PyMongo APIs.

)annotationsN)
monitoringc                  >    ] tR t^'tRtR R ltR R ltR R ltRtR	# )
CommandLoggera1  A simple listener that logs command events.

Listens for :class:`~pymongo.monitoring.CommandStartedEvent`,
:class:`~pymongo.monitoring.CommandSucceededEvent` and
:class:`~pymongo.monitoring.CommandFailedEvent` events and
logs them at the `INFO` severity level using :mod:`logging`.
.. versionadded:: 3.11
c                    V ^8  d   QhRRRR/# )   eventzmonitoring.CommandStartedEventreturnNone )formats   "S/var/www/html/photoedit/myenv/lib/python3.14/site-packages/pymongo/event_loggers.py__annotate__CommandLogger.__annotate__1   s     
 
; 
 
    c                	    \         P                  ! R VP                   RVP                   RVP                   24       R# )Command  with request id z started on server N)logginginfocommand_name
request_idconnection_idselfr   s   &&r   startedCommandLogger.started1   s?    u))**;  3""#%	
r   c                    V ^8  d   QhRRRR/# )r   r   z monitoring.CommandSucceededEventr	   r
   r   )r   s   "r   r   r   8   s     
 
? 
D 
r   c                	    \         P                  ! R VP                   RVP                   RVP                   RVP
                   R2	4       R# )r   r    on server z succeeded in  microsecondsNr   r   r   r   r   duration_microsr   s   &&r   	succeededCommandLogger.succeeded8   sT    u))**; E,?,?+@ A!112 3	
r   c                    V ^8  d   QhRRRR/# )r   r   zmonitoring.CommandFailedEventr	   r
   r   )r   s   "r   r   r   @   s     
 
9 
d 
r   c                	    \         P                  ! R VP                   RVP                   RVP                   RVP
                   R2	4       R# )r   r   r   z failed in r    Nr!   r   s   &&r   failedCommandLogger.failed@   sT    u))**; E,?,?+@ A../ 0	
r   r   N	__name__
__module____qualname____firstlineno____doc__r   r#   r'   __static_attributes__r   r   r   r   r   '   s    


 
r   r   c                  >    ] tR t^ItRtR R ltR R ltR R ltRtR	# )
ServerLoggeraB  A simple listener that logs server discovery events.

Listens for :class:`~pymongo.monitoring.ServerOpeningEvent`,
:class:`~pymongo.monitoring.ServerDescriptionChangedEvent`,
and :class:`~pymongo.monitoring.ServerClosedEvent`
events and logs them at the `INFO` severity level using :mod:`logging`.

.. versionadded:: 3.11
c                    V ^8  d   QhRRRR/# )r   r   zmonitoring.ServerOpeningEventr	   r
   r   )r   s   "r   r   ServerLogger.__annotate__T   s     ] ]9 ]d ]r   c                	f    \         P                  ! R VP                   RVP                   24       R# )Server z added to topology N)r   r   server_addresstopology_idr   s   &&r   openedServerLogger.openedT   s*    wu3344GHYHYGZ[\r   c                    V ^8  d   QhRRRR/# )r   r   z(monitoring.ServerDescriptionChangedEventr	   r
   r   )r   s   "r   r   r3   W   s     	 	)Q 	VZ 	r   c                	   VP                   P                  pVP                  P                  pW28w  dT   \        P                  ! R VP
                   RVP                   P                   RVP                  P                   24       R# R# )r5    changed type from  to N)previous_descriptionserver_typenew_descriptionr   r   r6   server_type_name)r   r   previous_server_typenew_server_types   &&  r   description_changed ServerLogger.description_changedW   sx    $99EE//;;2LL%..//B-->>?t((99:< 3r   c                    V ^8  d   QhRRRR/# )r   r   zmonitoring.ServerClosedEventr	   r
   r   )r   s   "r   r   r3   b   s     d d8 dT dr   c                	f    \         P                  ! R VP                   RVP                   24       R# )r5   z removed from topology N)r   warningr6   r7   r   s   &&r   closedServerLogger.closedb   s*    '%"6"6!77NuO`O`Nabcr   r   N	r*   r+   r,   r-   r.   r8   rD   rI   r/   r   r   r   r1   r1   I   s    ]	d dr   r1   c                  >    ] tR t^ftRtR R ltR R ltR R ltRtR	# )
HeartbeatLoggeraT  A simple listener that logs server heartbeat events.

Listens for :class:`~pymongo.monitoring.ServerHeartbeatStartedEvent`,
:class:`~pymongo.monitoring.ServerHeartbeatSucceededEvent`,
and :class:`~pymongo.monitoring.ServerHeartbeatFailedEvent`
events and logs them at the `INFO` severity level using :mod:`logging`.

.. versionadded:: 3.11
c                    V ^8  d   QhRRRR/# )r   r   z&monitoring.ServerHeartbeatStartedEventr	   r
   r   )r   s   "r   r   HeartbeatLogger.__annotate__q   s     H HC H Hr   c                	L    \         P                  ! R VP                   24       R# )zHeartbeat sent to server N)r   r   r   r   s   &&r   r   HeartbeatLogger.startedq   s    01D1D0EFGr   c                    V ^8  d   QhRRRR/# )r   r   z(monitoring.ServerHeartbeatSucceededEventr	   r
   r   )r   s   "r   r   rO   t   s     
 
G 
D 
r   c                	z    \         P                  ! R VP                   RVP                  P                   24       R# )Heartbeat to server z succeeded with reply N)r   r   r   replydocumentr   s   &&r   r#   HeartbeatLogger.succeededt   s6    "5#6#6"7 8${{##$&	
r   c                    V ^8  d   QhRRRR/# )r   r   z%monitoring.ServerHeartbeatFailedEventr	   r
   r   )r   s   "r   r   rO   |   s     
 
A 
d 
r   c                	f    \         P                  ! R VP                   RVP                   24       R# )rT   z failed with error N)r   rH   r   rU   r   s   &&r   r'   HeartbeatLogger.failed|   s*    "5#6#6"77J5;;-X	
r   r   Nr)   r   r   r   rM   rM   f   s    H

 
r   rM   c                  >    ] tR t^tRtR R ltR R ltR R ltRtR	# )
TopologyLoggeraF  A simple listener that logs server topology events.

Listens for :class:`~pymongo.monitoring.TopologyOpenedEvent`,
:class:`~pymongo.monitoring.TopologyDescriptionChangedEvent`,
and :class:`~pymongo.monitoring.TopologyClosedEvent`
events and logs them at the `INFO` severity level using :mod:`logging`.

.. versionadded:: 3.11
c                    V ^8  d   QhRRRR/# )r   r   zmonitoring.TopologyOpenedEventr	   r
   r   )r   s   "r   r   TopologyLogger.__annotate__        E E: Et Er   c                	N    \         P                  ! R VP                   R24       R# )Topology with id z openedNr   r   r7   r   s   &&r   r8   TopologyLogger.opened       ():):(;7CDr   c                    V ^8  d   QhRRRR/# )r   r   z*monitoring.TopologyDescriptionChangedEventr	   r
   r   )r   s   "r   r   r^      s     > >)S >X\ >r   c                	.   \         P                  ! R VP                   24       VP                  P                  pVP
                  P                  pW28w  dR   \         P                  ! RVP                   RVP                  P                   RVP
                  P                   24       VP
                  P                  4       '       g   \         P                  ! R4       VP
                  P                  4       '       g   \         P                  ! R4       R# R# )z-Topology description updated for topology id z	Topology r<   r=   zNo writable servers available.zNo readable servers available.N)
r   r   r7   r>   topology_typer@   topology_type_namehas_writable_serverrH   has_readable_server)r   r   previous_topology_typenew_topology_types   &&  r   rD   "TopologyLogger.description_changed   s    DUEVEVDWXY!&!;!;!I!I!11??6LLE--..A--@@A((;;<> $$88::OO<=$$88::OO<= ;r   c                    V ^8  d   QhRRRR/# )r   r   zmonitoring.TopologyClosedEventr	   r
   r   )r   s   "r   r   r^      r_   r   c                	N    \         P                  ! R VP                   R24       R# )ra   z closedNrb   r   s   &&r   rI   TopologyLogger.closed   rd   r   r   NrK   r   r   r   r\   r\      s    E>$E Er   r\   c                      ] tR t^tRtR R ltR R ltR R ltR R	 ltR
 R lt	R R lt
R R ltR R ltR R ltR R ltR R ltRtR# )ConnectionPoolLoggera  A simple listener that logs server connection pool events.

Listens for :class:`~pymongo.monitoring.PoolCreatedEvent`,
:class:`~pymongo.monitoring.PoolClearedEvent`,
:class:`~pymongo.monitoring.PoolClosedEvent`,
:~pymongo.monitoring.class:`ConnectionCreatedEvent`,
:class:`~pymongo.monitoring.ConnectionReadyEvent`,
:class:`~pymongo.monitoring.ConnectionClosedEvent`,
:class:`~pymongo.monitoring.ConnectionCheckOutStartedEvent`,
:class:`~pymongo.monitoring.ConnectionCheckOutFailedEvent`,
:class:`~pymongo.monitoring.ConnectionCheckedOutEvent`,
and :class:`~pymongo.monitoring.ConnectionCheckedInEvent`
events and logs them at the `INFO` severity level using :mod:`logging`.

.. versionadded:: 3.11
c                    V ^8  d   QhRRRR/# )r   r   zmonitoring.PoolCreatedEventr	   r
   r   )r   s   "r   r   !ConnectionPoolLogger.__annotate__        = ="= =$ =r   c                	N    \         P                  ! R VP                   R24       R# )[pool z] pool createdNr   r   addressr   s   &&r   pool_created!ConnectionPoolLogger.pool_created       vemm_N;<r   c                    V ^8  d   QhRRRR/# )r   r   zmonitoring.PoolReadyEventr	   r
   r   )r   s   "r   r   rt      s     ; ; 9 ;d ;r   c                	N    \         P                  ! R VP                   R24       R# )rw   z] pool readyNrx   r   s   &&r   
pool_readyConnectionPoolLogger.pool_ready   s    vemm_L9:r   c                    V ^8  d   QhRRRR/# )r   r   zmonitoring.PoolClearedEventr	   r
   r   )r   s   "r   r   rt      ru   r   c                	N    \         P                  ! R VP                   R24       R# )rw   z] pool clearedNrx   r   s   &&r   pool_cleared!ConnectionPoolLogger.pool_cleared   r|   r   c                    V ^8  d   QhRRRR/# )r   r   zmonitoring.PoolClosedEventr	   r
   r   )r   s   "r   r   rt      s     < <!; < <r   c                	N    \         P                  ! R VP                   R24       R# )rw   z] pool closedNrx   r   s   &&r   pool_closed ConnectionPoolLogger.pool_closed   s    vemm_M:;r   c                    V ^8  d   QhRRRR/# )r   r   z!monitoring.ConnectionCreatedEventr	   r
   r   )r   s   "r   r   rt      s     ` `(I `d `r   c                	h    \         P                  ! R VP                   RVP                   R24       R# )rw   ][conn #z] connection createdNr   r   ry   r   r   s   &&r   connection_created'ConnectionPoolLogger.connection_created   s)    vemm_HU5H5H4II]^_r   c                    V ^8  d   QhRRRR/# )r   r   zmonitoring.ConnectionReadyEventr	   r
   r   )r   s   "r   r   rt      s     
 
&E 
$ 
r   c                	h    \         P                  ! R VP                   RVP                   R24       R# )rw   r   z] connection setup succeededNr   r   s   &&r   connection_ready%ConnectionPoolLogger.connection_ready   s,    U]]O8E,?,?+@@\]	
r   c                    V ^8  d   QhRRRR/# )r   r   z monitoring.ConnectionClosedEventr	   r
   r   )r   s   "r   r   rt      s     
 
'G 
D 
r   c           	     	    \         P                  ! R VP                   RVP                   RVP                   R24       R# )rw   r   z] connection closed, reason: ""N)r   r   ry   r   reasonr   s   &&r   connection_closed&ConnectionPoolLogger.connection_closed   s<    U]]O8E,?,?+@ A++0<<.;	
r   c                    V ^8  d   QhRRRR/# )r   r   z)monitoring.ConnectionCheckOutStartedEventr	   r
   r   )r   s   "r   r   rt      s      M M>M	Mr   c                	N    \         P                  ! R VP                   R24       R# )rw   z] connection check out startedNrx   r   s   &&r   connection_check_out_started1ConnectionPoolLogger.connection_check_out_started   s     	vemm_,JKLr   c                    V ^8  d   QhRRRR/# )r   r   z(monitoring.ConnectionCheckOutFailedEventr	   r
   r   )r   s   "r   r   rt      s      d d1Y d^b dr   c                	f    \         P                  ! R VP                   RVP                   24       R# )rw   z'] connection check out failed, reason: N)r   r   ry   r   r   s   &&r   connection_check_out_failed0ConnectionPoolLogger.connection_check_out_failed   s(    vemm_,STYT`T`Sabcr   c                    V ^8  d   QhRRRR/# )r   r   z$monitoring.ConnectionCheckedOutEventr	   r
   r   )r   s   "r   r   rt      s     
 
,P 
UY 
r   c                	h    \         P                  ! R VP                   RVP                   R24       R# )rw   r   z ] connection checked out of poolNr   r   s   &&r   connection_checked_out+ConnectionPoolLogger.connection_checked_out   s,    U]]O8E,?,?+@@`a	
r   c                    V ^8  d   QhRRRR/# )r   r   z#monitoring.ConnectionCheckedInEventr	   r
   r   )r   s   "r   r   rt      s     
 
+N 
SW 
r   c                	h    \         P                  ! R VP                   RVP                   R24       R# )rw   r   z] connection checked into poolNr   r   s   &&r   connection_checked_in*ConnectionPoolLogger.connection_checked_in   s,    U]]O8E,?,?+@@^_	
r   r   N)r*   r+   r,   r-   r.   rz   r   r   r   r   r   r   r   r   r   r   r/   r   r   r   rr   rr      sF    "=;=<`


M
d


 
r   rr   )r.   
__future__r   r   pymongor   CommandListenerr   ServerListenerr1   ServerHeartbeatListenerrM   TopologyListenerr\   ConnectionPoolListenerrr   r   r   r   <module>r      su      #  
J.. 
Dd:,, d:
j88 
8!EZ00 !EH<
:<< <
r   