
    g              
         d Z ddlmZ ddlZddlZddlZddlmZ ddlmZ ddlm	Z	 erddl
mZ  ed      Z e	d	      Z G d
 de      Zej                   ej                   ej"                  ej$                  ej&                  ej(                  ej(                  ej(                  ej*                  d	Z G d d      Z e       Zej2                  ZddZy)z1create errno-specific classes for IO or os calls.    )annotationsN)Callable)TYPE_CHECKING)TypeVar)	ParamSpecPRc                      e Zd ZddZddZy)Errorc                    dj                  | j                  j                  | j                  j                  | j                  j                  dj                  t        t        | j                                    S )Nz{}.{} {!r}: {}  )	format	__class__
__module____name____doc__joinmapstrargs)selfs    F/var/www/openai/venv/lib/python3.12/site-packages/_pytest/_py/error.py__repr__zError.__repr__   sS     ''NN%%NN##NN""HHSdii()	
 	
    c           	         dj                  | j                  j                  dj                  t	        t
        | j                                    }|S )Nz[{}]: {}r   )r   r   r   r   r   r   r   )r   ss     r   __str__zError.__str__   s=    NN""HHSdii()
 r   N)returnr   )r   r   __qualname__r   r    r   r   r   r      s    
r   r   )	                     i     c                  H    e Zd ZU dZi Zded<   ddZd	dZ	 	 	 	 	 	 	 	 d
dZy)
ErrorMakerzlazily provides Exception classes for each possible POSIX errno
    (as defined per the 'errno' module).  All such instances
    subclass EnvironmentError.
    zdict[int, type[Error]]_errno2classc                    |d   dk(  rt        |      t        t        |      }| j                  |      }t	        | ||       |S )Nr   _)AttributeErrorgetattrerrno_geterrnoclasssetattr)r   nameenoclss       r   __getattr__zErrorMaker.__getattr__<   sE    7c> &&eT"!!#&dC 
r   c           	         	 | j                   |   S # t        $ r` t        j                  j	                  |d|fz        }t        |t        fdt        j                  |      d      }|| j                   |<   |cY S w xY w)NzUnknownErrno%dzpy.error)r   r   )	r+   KeyErrorr0   	errorcodegettyper   osstrerror)r   r4   clsnameerrorclss       r   r1   zErrorMaker._geterrnoclassD   s    
	$$S)) 	oo))#/?3&/HIG)bkk#6FGH
 &.Dc"O	s    A&A:9A:c                D   d}	  ||i |S # t         $ r  t        $ r}t        |d      s |j                  }t        j
                  dk(  r)	 | j                  t        |         }n # t        $ r |w xY w| j                  |      } ||j                   |      d}~ww xY w)z;Call a function and raise an errno-exception if applicable.Tr0   win32N)
r   OSErrorhasattrr0   sysplatformr1   _winerrnomapr8   r   )r   funcr   kwargs__tracebackhide__valuer0   r5   s           r   checked_callzErrorMaker.checked_callQ   s     !	2((( 	 	25'*KKE||w& --l5.ABC  K  ))%0x011	2s,    B,BA$#B$A00*BBN)r3   r   r   type[Error])r4   intr   rL   )rG   zCallable[P, R]r   zP.argsrH   zP.kwargsr   r	   )	r   r   r   r   r+   __annotations__r6   r1   rK   r    r   r   r*   r*   4   sC    
 ,.L(-2"2+12=E2	
2r   r*   c                "    t        t        |       S )N)r/   _error_maker)attrs    r   r6   r6   n   s    <&&r   )rQ   r   r   rL   )r   
__future__r   r0   r<   rD   typingr   r   r   typing_extensionsr   r   r	   EnvironmentErrorr   ENOENTEEXISTEXDEVEBUSYENOTDIREACCESrF   r*   rP   rK   r6   r    r   r   <module>r\      s    7 "  	 
     +#ACL & ||||	||
32 32l |(('r   