o
    Ú­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r2d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„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„Zddd„ZdS )	ÚErrorÚreturnÚstrc              
   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   úN/var/www/html/CropPilot/venv/lib/python3.10/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   )r   r   Ú__qualname__r   r   r   r   r   r   r	      s    
	r	   )	é   é   é   é   é   é   é   i  é   c                   @  s<   e Zd ZU dZi Zded< ddd	„Zddd„Z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]]Ú_errno2classÚnamer   r
   útype[Error]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__r.   Úintc              
   C  s\   z| j | W S  ty-   tj |d|f ¡}t|tfdt |¡dœƒ}|| j |< | Y S w )NzUnknownErrno%dzpy.error)r   r   )	r%   ÚKeyErrorr+   Ú	errorcodeÚgetÚtyper	   ÚosÚstrerror)r   r.   ÚclsnameÚerrorclsr   r   r   r,   B   s   ý
øzErrorMaker._geterrnoclassÚfuncúCallable[P, R]r   úP.argsÚkwargsúP.kwargsr   c                 O  sš   d}z||i |¤ŽW S  t y   ‚  tyL } z/t|dƒs‚ |j}tjdkr:z	|  t| ¡}W n ty9   |‚w |  |¡}||j	› |›�ƒ‚d}~ww )z;Call a function and raise an errno-exception if applicable.Tr+   Úwin32N)
r	   ÚOSErrorÚhasattrr+   ÚsysÚplatformr,   Ú_winerrnomapr2   r   )r   r:   r   r=   Ú__tracebackhide__Úvaluer+   r/   r   r   r   Úchecked_callO   s&   

ÿ
€ózErrorMaker.checked_callN)r&   r   r
   r'   )r.   r1   r
   r'   )r:   r;   r   r<   r=   r>   r
   r   )	r   r   r   r   r%   Ú__annotations__r0   r,   rG   r   r   r   r   r$   2   s   
 

r$   Úattrr   r
   r'   c                 C  s
   t t| ƒS )N)r*   Ú_error_maker)rI   r   r   r   r0   l   s   
r0   )rI   r   r
   r'   )r   Ú
__future__r   r+   r6   rB   Útypingr   r   r   Útyping_extensionsr   r   r   ÚEnvironmentErrorr	   ÚENOENTÚEEXISTÚEXDEVÚEBUSYÚENOTDIRÚEACCESrD   r$   rJ   rG   r0   r   r   r   r   Ú<module>   s6    ÷6