ó
A¾^Yc           @   sÃ   d  Z  d d l Z d d l Z d d l Z d e f d „  ƒ  YZ i	 e j d 6e j d 6e j d 6e j d 6e j	 d	 6e j
 d
 6e j
 d 6e j
 d 6e j d 6Z d e f d „  ƒ  YZ e ƒ  Z d S(   s4   
create errno-specific classes for IO or os calls.

iÿÿÿÿNt   Errorc           B   s   e  Z d  „  Z d „  Z RS(   c         C   s;   d |  j  j |  j  j |  j  j d j t t |  j ƒ ƒ f S(   Ns   %s.%s %r: %s t    (   t	   __class__t
   __module__t   __name__t   __doc__t   joint   mapt   strt   args(   t   self(    (    s%   /tmp/pip-build-UnxK1c/py/py/_error.pyt   __repr__   s    		c         C   s/   d |  j  j d j t t |  j ƒ ƒ f } | S(   Ns   [%s]: %sR   (   R   R   R   R   R   R	   (   R
   t   s(    (    s%   /tmp/pip-build-UnxK1c/py/py/_error.pyt   __str__   s    (   R   R   R   R   (    (    (    s%   /tmp/pip-build-UnxK1c/py/py/_error.pyR       s   	i   i   i   i   i   i   i   i  i   t
   ErrorMakerc           B   s5   e  Z d  Z e Z i  Z d „  Z d „  Z d „  Z RS(   s©    lazily provides Exception classes for each possible POSIX errno
        (as defined per the 'errno' module).  All such instances
        subclass EnvironmentError.
    c         C   sQ   | d d k r t  | ƒ ‚ n  t t | ƒ } |  j | ƒ } t |  | | ƒ | S(   Ni    t   _(   t   AttributeErrort   getattrt   errnot   _geterrnoclasst   setattr(   R
   t   namet   enot   cls(    (    s%   /tmp/pip-build-UnxK1c/py/py/_error.pyt   __getattr__*   s    c         C   sƒ   y |  j  | SWnm t k
 r~ t j j | d | f ƒ } t t ƒ | t f i d d 6t j | ƒ d 6ƒ } | |  j  | <| SXd  S(   Ns   UnknownErrno%ds   py.errorR   R   (	   t   _errno2classt   KeyErrorR   t	   errorcodet   gett   typeR    t   ost   strerror(   R
   R   t   clsnamet   errorcls(    (    s%   /tmp/pip-build-UnxK1c/py/py/_error.pyR   2   s    
c   	      O   s  t  } y | | | Ž  SWnõ |  j k
 r0 ‚  nß t t f k
 rt j ƒ  \ } } } t | d ƒ sm ‚  n  t } | j } y t	 | t
 ƒ s— t ‚ n  Wn  t k
 rº |  j | ƒ } n2 Xy |  j t | ƒ } Wn t k
 rë | ‚ n X| d | j | f ƒ ‚ t  } n Xd S(   s=    call a function and raise an errno-exception if applicable. R   s   %s%rN(   t   TrueR    t   OSErrort   EnvironmentErrort   syst   exc_infot   hasattrt   FalseR   t
   isinstancet   WindowsErrort	   NameErrorR   t   _winerrnomapR   R   (	   R
   t   funcR	   t   kwargst   __tracebackhide__R   t   valuet   tbR   (    (    s%   /tmp/pip-build-UnxK1c/py/py/_error.pyt   checked_call=   s,    	
(   R   R   R   R    R   R   R   R2   (    (    (    s%   /tmp/pip-build-UnxK1c/py/py/_error.pyR   "   s   		(   R   R%   R   R   R$   R    t   ENOENTt   EEXISTt   EXDEVt   EBUSYt   ENOTDIRt   EACCESR,   t   objectR   t   error(    (    (    s%   /tmp/pip-build-UnxK1c/py/py/_error.pyt   <module>   s   $







7