
    i                    z   d dl mZ d dlmZ d dlZd dlZd dlmZ d dlm	Z	 d dl
mZ d dlmZ d dlZ ee                     Z ee                     Zd dZd!dZd!dZd"dZd#dZd$dZ ej        dd          d%d            Z ej        d          d&d            Z ej        d          d&d            ZdS )'    )annotations)	GeneratorN)Config)Parser)Item)StashKeyparserr   returnNonec                p    d}d}|                      d|d           |                      d|dd	           d S )
NzUDump the traceback of all threads if a test takes more than TIMEOUT seconds to finishzVExit the test process if a test takes more than faulthandler_timeout seconds to finishfaulthandler_timeout        )defaultfaulthandler_exit_on_timeoutboolF)typer   )addini)r	   help_timeouthelp_exit_on_timeouts      Q/root/projects/qq-shell/venv/lib/python3.11/site-packages/_pytest/faulthandler.pypytest_addoptionr      sa    	. 
	1  MM(,MDDD
MM&(<6SX          configr   c                    dd l }t                      }|                                r|| j        t          <   t          j        |          | j        t          <   |                    | j        t                              d S )Nr   )file)	faulthandlerget_stderr_fileno
is_enabledstash$fault_handler_original_stderr_fd_keyosdupfault_handler_stderr_fd_keyenable)r   r   stderr_filenos      r   pytest_configurer&   !   sy     &''M   K=J9:02}0E0EFL,-V\*EFGGGGGr   c                8   dd l }|                                 t          | j        v r1t	          j        | j        t                              | j        t          = t          | j        v r4|                    | j        t                              | j        t          = d S d S )Nr   )r   disabler#   r   r!   closer    r$   )r   r   s     r   pytest_unconfigurer*   0   s    "fl22
9:;;;L45+v|;;FL)MNOOOL=>>> <;r   intc                     	 t           j                                        } | dk    rt                      | S # t          t          f$ r/ t           j        J t           j                                        cY S w xY w)N)sysstderrfilenoAttributeError
ValueError
__stderr__)r0   s    r   r   r   >   s    '""$$ R<< """J' ' ' ' ~)))~$$&&&&&'s   36 =A65A6floatc                J    t          |                     d          pd          S )Nr   r   )r4   getini)r   s    r   get_timeout_config_valuer7   N   s"    566=#>>>r   r   c                ^    |                      d          }t          |t                    sJ |S )Nr   )r6   
isinstancer   )r   exit_on_timeouts     r    get_exit_on_timeout_config_valuer;   R   s0    mm$BCCOot,,,,,r   T)wrappertrylastitemr   Generator[None, object, object]c              #  4  K   t          | j                  }t          | j                  }|dk    redd l}| j        j        t
                   }|                    |||           	 d V |                                 S # |                                 w xY wd V S )Nr   )r   exit)r7   r   r;   r   r   r#   dump_traceback_latercancel_dump_traceback_later)r>   timeoutr:   r   r/   s        r   pytest_runtest_protocolrE   X   s      &t{33G6t{CCO{{"#>?))'_)UUU	7EE446666L446666s   %A= =B)tryfirstc                 6    ddl } |                                  dS )z@Cancel any traceback dumping due to timeout before entering pdb.r   Nr   rC   r   s    r   pytest_enter_pdbrJ   i   s(     ,,.....r   c                 6    ddl } |                                  dS )zNCancel any traceback dumping due to an interactive exception being
    raised.r   NrH   rI   s    r   pytest_exception_interactrL   q   s(     ,,.....r   )r	   r   r
   r   )r   r   r
   r   )r
   r+   )r   r   r
   r4   )r   r   r
   r   )r>   r   r
   r?   )r
   r   )
__future__r   collections.abcr   r!   r.   _pytest.configr   _pytest.config.argparsingr   _pytest.nodesr   _pytest.stashr   pytestr+   r    r#   r   r&   r*   r   r7   r;   hookimplrE   rJ   rL    r   r   <module>rV      s   " " " " " " % % % % % % 				 



 ! ! ! ! ! ! , , , , , ,       " " " " " "  (5x} $+hsmoo    H H H H? ? ? ?' ' ' ' ? ? ? ?    t,,,   -,  $/ / /  / $/ / /  / / /r   