
    ae              
       f   d Z ddlmZ ddlZddlZddlZ G 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e      Z ed	      Zeej"                  ej$                  <   y)
z4
create errno-specific classes for IO or os calls.

    )
ModuleTypeNc                       e Zd Zd Zd Zy)Errorc                     | j                   j                  d| j                   j                  d| j                   j                  ddj	                  t        t        | j                              dS )N. z: )	__class__
__module____name____doc__joinmapstrargs)selfs    +/usr/lib/python3/dist-packages/py/_error.py__repr__zError.__repr__	   sJ    !%!:!:#~~66#~~55"xxC(;<" 	"    c           	          d| j                   j                  ddj                  t        t        | j
                              }|S )N[z]: r   )r	   r   r   r   r   r   )r   ss     r   __str__zError.__str__   s4    //((3sDII#67 r   N)r   r
   __qualname__r   r    r   r   r   r      s    "r   r   )	                     i     c                   *    e Zd ZdZeZi Zd Zd Zd Zy)
ErrorMakerz lazily provides Exception classes for each possible POSIX errno
        (as defined per the 'errno' module).  All such instances
        subclass EnvironmentError.
    c                     |d   dk(  rt        |      t        t        |      }| j                  |      }t	        | ||       |S )Nr   _)AttributeErrorgetattrerrno_geterrnoclasssetattr)r   nameenoclss       r   __getattr__zErrorMaker.__getattr__+   sE    7c> &&eT"!!#&dC 
r   c           	         	 | j                   |   S # t        $ rj t        j                  j	                  |d|fz        } t        t              |t        fdt        j                  |      d      }|| j                   |<   |cY S w xY w)NzUnknownErrno%dpy.error)r
   r   )	_errno2classKeyErrorr)   	errorcodegettyper   osstrerror)r   r-   clsnameerrorclss       r   r*   zErrorMaker._geterrnoclass3   s    	$$S)) 	oo))#/?#/GHG"tE{7UH", "C 023H &.Dc"O	s    A0BBc                    d}	  ||i |S # | j                   $ r  t        t        f$ r t        j                         \  }}}t        |d      s d}|j                  }	 t        |t              st        	 	 | j                  t        |         }n/# t        $ r |w xY w# t        $ r | j                  |      }Y nw xY w ||j                  |      w xY w)z= call a function and raise an errno-exception if applicable. Tr)   F)r   OSErrorEnvironmentErrorsysexc_infohasattrr)   
isinstanceWindowsError	NameErrorr*   _winerrnomapr3   r   )	r   funcr   kwargs__tracebackhide__r.   valuetbr)   s	            r   checked_callzErrorMaker.checked_call>   s     	%(((zz 	)* 	% \\^NC5'* %KKE
 !%6#O 7 --l5.ABC  K   1))%01 t455#	%s@    ACB6BCBCB;8C:B;;CN)	r   r
   r   r   r   r2   r/   r*   rJ   r   r   r   r$   r$   #   s"     EL	%r   r$   r1   )r   typesr   r>   r7   r)   r=   r   ENOENTEEXISTEXDEVEBUSYENOTDIREACCESrD   r$   errormodulesr   r   r   r   <module>rT      s         ||||	||
4% 4%n 	:#ENN r   