
    Xh                       d Z ddlmZ ddlZddlZddlZddlmZmZ ddl	Z	ddl
mZ e	j                  dd       Ze	j                  dd       Ze	j                  	 	 	 	 	 	 dd       Ze	j                  dd	       Ze	j                  dd
       Zy)z%Fixtures for use with jupyter events.    )annotationsN)AnyCallable)EventLoggerc                 *    t        j                         S )zA stream for capture events.)ioStringIO     P/var/www/html/myenv/lib/python3.12/site-packages/jupyter_events/pytest_plugin.pyjp_event_sinkr      s     ;;=r   c                ,    t        j                  |       S )zGA logging handler that captures any events emitted by the event handler)loggingStreamHandler)r   s    r   jp_event_handlerr      s       //r   c                     d fd}|S )z3Reads list of events since last time it was called.c                    j                          j                         j                         } | r2| j                  d      D cg c]  }t	        j
                  |       c}nd }j                  d       j                  d       |S c c}w )N
r   )flushgetvaluestripsplitjsonloadstruncateseek)	event_bufitemoutputr   r   s      r   _readz%jp_read_emitted_events.<locals>._read    st     !**,224	IRyt/DEt$**T"EX\q!1	 Fs   B
)returnzlist[str] | Noner
   )r   r   r    s   `` r   jp_read_emitted_eventsr"      s     Lr   c                     g S )zA list of schema references.

    Each item should be one of the following:
    - string of serialized JSON/YAML content representing a schema
    - a pathlib.Path object pointing to a schema file on disk
    - a dictionary with the schema data.
    r
   r
   r   r   jp_event_schemasr$   ,   s	     Ir   c                n    t               }|D ]  }|j                  |        |j                  |        |S )z(A pre-configured event logger for tests.)handler)r   register_event_schemaregister_handler)r   r$   loggerschemas       r   jp_event_loggerr+   8   s?     ]F" -$$V,-
$45Mr   )r!   io.StringIO)r   r,   r!   logging.Handler)r   r-   r   r,   r!   zCallable[..., list[str] | None])r!   	list[Any])r   r-   r$   r.   r!   r   )__doc__
__future__r   r   r   r   typingr   r   pytestjupyter_eventsr   fixturer   r   r"   r$   r+   r
   r   r   <module>r5      s    + " 	      &  
 0 0
 %6A$ "    r   