B
    é¹`e  ã            
   @   sŠ   d Z ddlmZ ddlZddlZddl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eƒZed	ƒZeejej< dS )
z4
create errno-specific classes for IO or os calls.

é    )Ú
ModuleTypeNc               @   s   e Zd Zdd„ Zdd„ ZdS )ÚErrorc          	   C   s*   d| j j| j j| j jd tt| jƒ¡f S )Nz%s.%s %r: %s ú )Ú	__class__Ú
__module__Ú__name__Ú__doc__ÚjoinÚmapÚstrÚargs)Úself© r   úQ/home/kop/projects/devel/pgwui/test_venv/lib/python3.7/site-packages/py/_error.pyÚ__repr__	   s    zError.__repr__c             C   s"   d| j jd tt| jƒ¡f }|S )Nz[%s]: %sr   )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               @   s0   e Zd ZdZeZi Zdd„ Zdd„ Z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.
    c             C   s8   |d dkrt |ƒ‚tt|ƒ}|  |¡}t| ||ƒ |S )Nr   Ú_)ÚAttributeErrorÚgetattrÚerrnoÚ_geterrnoclassÚsetattr)r   ÚnameÚenoÚclsr   r   r   Ú__getattr__+   s    

zErrorMaker.__getattr__c          
   C   s`   y
| j | S  tk
rZ   tj |d|f ¡}ttƒ|tfdt |¡dœƒ}|| j |< |S X d S )NzUnknownErrno%dzpy.error)r   r   )	Ú_errno2classÚKeyErrorr    Ú	errorcodeÚgetÚtyper   ÚosÚstrerror)r   r$   ZclsnameZerrorclsr   r   r   r!   3   s    

zErrorMaker._geterrnoclassc       	      O   sÚ   d}y
|||ŽS  | j k
r&   ‚ Y n° ttfk
rÔ   t ¡ \}}}t|dƒsR‚ d}|j}yt|tƒslt	‚W n t	k
rŒ   |  
|¡}Y n.X y|  
t| ¡}W n tk
r¸   |‚Y nX |d|j|f ƒ‚d}Y nX dS )z= call a function and raise an errno-exception if applicable. Tr    Fz%s%rN)r   ÚOSErrorÚEnvironmentErrorÚsysÚexc_infoÚhasattrr    Ú
isinstanceZWindowsErrorÚ	NameErrorr!   Ú_winerrnomapr(   r   )	r   Úfuncr   ÚkwargsZ__tracebackhide__r%   ÚvalueÚtbr    r   r   r   Úchecked_call>   s,    



zErrorMaker.checked_callN)	r   r   r   r   r   r'   r&   r!   r:   r   r   r   r   r   #   s   r   zpy.error)r   Útypesr   r0   r,   r    r/   r   ÚENOENTÚEEXISTÚEXDEVZEBUSYÚENOTDIRÚEACCESr5   r   ÚerrorÚmodulesr   r   r   r   r   Ú<module>   s   
7