a
    !f                  
   @  s   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rdddl
mZ edZe	d	ZG d
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 dZe ZejZdddddZdS )z1create errno-specific classes for IO or os calls.    )annotationsN)Callable)TYPE_CHECKING)TypeVar)	ParamSpecPRc                   @  s(   e Zd ZddddZddddZdS )Errorstr)returnc              
   C  s*   d | jj| jj| jjdtt| jS )Nz{}.{} {!r}: {}  )	format	__class__
__module____name____doc__joinmapr
   args)self r   R/var/www/html/python-backend/venv/lib/python3.9/site-packages/_pytest/_py/error.py__repr__   s    zError.__repr__c                 C  s"   d | jjdtt| j}|S )Nz[{}]: {}r   )r   r   r   r   r   r
   r   )r   sr   r   r   __str__   s
    zError.__str__N)r   r   __qualname__r   r   r   r   r   r   r	      s   	r	   )	                     i     c                   @  sR   e Zd ZU dZi Zded< dddddZd	dd
ddZdddddddZdS )
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]]_errno2classr
   type[Error])namer   c                 C  s8   |d dkrt |tt|}| |}t| || |S )Nr   _)AttributeErrorgetattrerrno_geterrnoclasssetattr)r   r'   enoclsr   r   r   __getattr__:   s    

zErrorMaker.__getattr__int)r.   r   c              
   C  s`   z| j | W S  tyZ   tj|d|f }t|tfdt|d}|| j |< | Y S 0 d S )NzUnknownErrno%dzpy.error)r   r   )	r%   KeyErrorr+   	errorcodegettyper	   osstrerror)r   r.   clsnameZerrorclsr   r   r   r,   B   s    
zErrorMaker._geterrnoclasszCallable[P, R]zP.argszP.kwargsr   )funcr   kwargsr   c                 O  s   d}z||i |W S  t y(    Y n ty } zpt|dsB |j}tjdkr~z| t| }W q tyz   |Y q0 n
| |}||j	 |W Y d}~n
d}~0 0 dS )z;Call a function and raise an errno-exception if applicable.Tr+   win32N)
r	   OSErrorhasattrr+   sysplatformr,   _winerrnomapr2   r   )r   r9   r   r:   Z__tracebackhide__valuer+   r/   r   r   r   checked_callO   s     


zErrorMaker.checked_callN)	r   r   r   r   r%   __annotations__r0   r,   rB   r   r   r   r   r$   2   s
   
r$   r
   r&   )attrr   c                 C  s
   t t| S )N)r*   _error_maker)rD   r   r   r   r0   l   s    r0   )r   
__future__r   r+   r6   r>   typingr   r   r   Ztyping_extensionsr   r   r   EnvironmentErrorr	   ENOENTEEXISTEXDEVZEBUSYENOTDIREACCESr@   r$   rE   rB   r0   r   r   r   r   <module>   s4   6