U
    `»{jÇ  ã                
   @  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   úP/var/www/html/bwave/python/venv/lib/python3.8/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 )Ú
ErrorMakerz lazily 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  sb   z| j | W S  tk
r\   tj |d|f ¡}t|tfdt |¡dœƒ}|| j |< | Y S X d S )NzUnknownErrno%dzpy.error)r   r   )	r%   ÚKeyErrorr+   Ú	errorcodeÚgetÚtyper	   ÚosÚstrerror)r   r.   ZclsnameZerrorclsr   r   r   r,   D   s    ý
zErrorMaker._geterrnoclasszCallable[P, R]zP.argszP.kwargsr   )Úfuncr   Úkwargsr   c                 O  s²   d}z|||ŽW S  t k
r&   ‚ Y nˆ tk
r¬ } zjt|dƒsB‚ |j}tjdkr€z|  t| ¡}W qŠ tk
r|   |‚Y qŠX n
|  |¡}||j	› |›�ƒ‚W 5 d}~X Y nX dS )z;Call a function and raise an errno-exception if applicable.Tr+   Úwin32N)
r	   ÚOSErrorÚhasattrr+   ÚsysÚplatformr,   Ú_winerrnomapr2   r   )r   r8   r   r9   Z__tracebackhide__Úvaluer+   r/   r   r   r   Úchecked_callQ   s     


zErrorMaker.checked_callN)	r   r   r   r   r%   Ú__annotations__r0   r,   rA   r   r   r   r   r$   4   s
   
r$   r
   r&   )Úattrr   c                 C  s
   t t| ƒS )N)r*   Ú_error_maker)rC   r   r   r   r0   n   s    r0   )r   Ú
__future__r   r+   r6   r=   Útypingr   r   r   Útyping_extensionsr   r   r   ÚEnvironmentErrorr	   ÚENOENTÚEEXISTÚEXDEVZEBUSYÚENOTDIRÚEACCESr?   r$   rD   rA   r0   r   r   r   r   Ú<module>   s4   ÷6