o
    v&i                  
   @  s   d Z ddlm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
 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.    )annotations)CallableN)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   W/var/www/html/karishye-ai-python/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 )
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]]_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| }t|tfdt|d}|| j |< | Y S w )NUnknownErrnopy.errorr   r   )	r%   KeyErrorr+   	errorcodegettyper	   osstrerror)r   r.   clsnameerrorclsr   r   r   r,   D   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y[ } z>t|ds tjdkr8z
| t|j }W n ty7   |w |jdu rHt	dt fddd}n| |j}||j
 |d}~ww )z;Call a function and raise an errno-exception if applicable.Tr+   win32NUnknownErrnoNoner3   r4   )r	   OSErrorhasattrsysplatformr,   _winerrnomapr+   r5   r8   r   )r   r=   r   r@   __tracebackhide__valuer/   r   r   r   checked_callQ   s0   


zErrorMaker.checked_callN)r&   r   r
   r'   )r.   r1   r
   r'   )r=   r>   r   r?   r@   rA   r
   r   )	r   r   r   r   r%   __annotations__r0   r,   rK   r   r   r   r   r$   4   s   
 

r$   attrr   r
   r'   c                 C  s
   t t| S )N)r*   _error_maker)rM   r   r   r   r0   v   s   
r0   )rM   r   r
   r'   )r   
__future__r   collections.abcr   r+   r9   rF   typingr   r   typing_extensionsr   r   r   EnvironmentErrorr	   ENOENTEEXISTEXDEVEBUSYENOTDIREACCESrH   r$   rN   rK   r0   r   r   r   r   <module>   s6    >