o
    h                  
   @  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   I/var/www/html/zoom/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|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,   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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_callQ   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$   4   s   
 

r$   attrr   r
   r'   c                 C  s
   t t| S )N)r*   _error_maker)rI   r   r   r   r0   n   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