ó
A¾^Yc           @   s{   d  Z  d d l Z d d l Z d d l m Z d Z d „  Z e ƒ  d „ Z d „  Z	 d e f d	 „  ƒ  YZ
 d d
 „ Z d S(   sŒ   
apipkg: control the exported namespace of a python package.

see http://pypi.python.org/pypi/apipkg

(c) holger krekel, 2009 - MIT license
iÿÿÿÿN(   t
   ModuleTypes   1.3.devc         C   s'   |  j  d ƒ r |  St j j |  ƒ Sd S(   sU   
    special version of abspath
    that will leave paths from jython jars alone
    t   __pyclasspath__N(   t
   startswitht   ost   patht   abspath(   R   (    (    s&   /tmp/pip-build-UnxK1c/py/py/_apipkg.pyt   _py_abspath   s    c         C   sH  t  j j |  ƒ } i  } t | d d	 ƒ } | r? t | ƒ } n  | | d <t | d ƒ rh | j | d <n  t | d ƒ r‡ | j | d <n  t | d ƒ r¿ g  | j	 D] } t | ƒ ^ q  | d <n  d | k rí t | d d	 ƒ rí | j
 | d <n  | j | ƒ t | d ƒ r| j j | ƒ n  t |  | d |  d | ƒ} | t  j |  <d	 S(
   s7    initialize given package from the export definitions. t   __file__t   __version__t
   __loader__t   __path__t   __doc__t   __dict__t
   implprefixt   attrN(   t   syst   modulest   gett   getattrt   NoneR   t   hasattrR   R	   R
   R   t   updateR   t	   ApiModule(   t   pkgnamet
   exportdefsR   t   oldmodt   dt   ft   pt   mod(    (    s&   /tmp/pip-build-UnxK1c/py/py/_apipkg.pyt   initpkg   s&    
)c         C   s[   t  |  d  d  d g ƒ } | s" | S| } | j d ƒ } x | D] } t | | ƒ } q> W| S(   NR   t   .(   t
   __import__R   t   splitR   (   t   modpatht   attrnamet   modulet   retvalt   namest   x(    (    s&   /tmp/pip-build-UnxK1c/py/py/_apipkg.pyt	   importobj/   s    R   c           B   se   e  Z d  „  Z d „  Z e e e ƒ Z d d d „ Z d „  Z d „  Z	 e	 Z
 d „  Z e e ƒ Z RS(   c         C   s?   y |  j  SWn- t k
 r: d |  j k r; |  j d ƒ Sn Xd  S(   NR   (   t   _ApiModule__doct   AttributeErrort   __map__t   _ApiModule__makeattr(   t   self(    (    s&   /tmp/pip-build-UnxK1c/py/py/_apipkg.pyt   __docget;   s
    c         C   s   | |  _  d  S(   N(   R)   (   R-   t   value(    (    s&   /tmp/pip-build-UnxK1c/py/py/_apipkg.pyt   __docsetA   s    c         C   s¯  | |  _  g  | D] } | d k r | ^ q |  _ i  |  _ | pC | |  _ | r x- | j ƒ  D] \ } } t |  | | ƒ q\ Wn  x)| j ƒ  D]\ } } t | t ƒ rì d |  j  | f } t | | | ƒ } | t	 j
 | <t |  | | ƒ qŒ | j d ƒ }	 |	 j d ƒ }
 |	 r|	 d pd } |
 d d k r=| |
 }
 n  | s”d |  j  | f } t | |
 ƒ } | t	 j
 | <d | k r§t |  | | ƒ q§qŒ |
 | f |  j | <qŒ Wd  S(   Nt   __onfirstaccess__s   %s.%st   :i    t    R   (   t   __name__t   __all__R+   t   __implprefix__t   itemst   setattrt
   isinstancet   dictR   R   R   R!   t   popt   AliasModule(   R-   t   namet
   importspecR   R   R'   t   valt   subnamet   apimodt   partsR"   R#   (    (    s&   /tmp/pip-build-UnxK1c/py/py/_apipkg.pyt   __init__E   s2    	(	c         C   sŒ   g  } t  |  d ƒ r2 | j d t |  j ƒ ƒ n  t  |  d ƒ r^ | j d t |  j ƒ ƒ n  | r~ d |  j d j | ƒ f Sd |  j f S(   NR   s   version=R   s   from s   <ApiModule %r %s>t    s   <ApiModule %r>(   R   t   appendt   reprR   R   R4   t   join(   R-   t   l(    (    s&   /tmp/pip-build-UnxK1c/py/py/_apipkg.pyt   __repr__d   s    c         C   sÜ   d } d |  j k r7 |  j j d ƒ } t | Œ  ƒ  n  y |  j | \ } } WnB t k
 r’ | d k	 rƒ | d k rƒ t |  | ƒ St | ƒ ‚ nF Xt | | ƒ } t |  | | ƒ y |  j | =Wn t k
 rÓ n X| Sd S(   sA   lazily compute value for name or raise AttributeError if unknown.R1   N(   R   R+   R;   R(   t   KeyErrorR   R*   R8   (   R-   R=   t   targetR"   R#   t   result(    (    s&   /tmp/pip-build-UnxK1c/py/py/_apipkg.pyt
   __makeattrn   s"    c         C   su   t  j d } | j |  ƒ } | d  k	 rq t |  d ƒ x9 |  j D]+ } y |  j | ƒ Wq? t k
 ri q? Xq? Wn  | S(   NR   t   some(   R    R   t   __get__R   R   R5   R,   R*   (   R-   t	   dictdescrR:   R=   (    (    s&   /tmp/pip-build-UnxK1c/py/py/_apipkg.pyR   ‡   s    N(   R4   t
   __module__t   _ApiModule__docgett   _ApiModule__docsett   propertyR   R   RC   RI   R,   t   __getattr__R   (    (    (    s&   /tmp/pip-build-UnxK1c/py/py/_apipkg.pyR   :   s   			
		c            sP   g  ‰ ‡  ‡ ‡ f d †  ‰ d t  f ‡  ‡ ‡ ‡ f d †  ƒ  Y} | t ˆ ƒ ƒ S(   Nc             sK   ˆ sC t  ˆ d  ƒ }  ˆ  d  k	 r3 t |  ˆ  ƒ }  n  ˆ j |  ƒ n  ˆ d S(   Ni    (   R(   R   R   RE   (   R'   (   R#   R   R"   (    s&   /tmp/pip-build-UnxK1c/py/py/_apipkg.pyt   getmod™   s    R<   c              sJ   e  Z ‡  ‡ ‡ f d  †  Z ‡ f d †  Z ‡ f d †  Z ‡ f d †  Z RS(   c            s+   ˆ } ˆ  r | d ˆ  7} n  d ˆ | f S(   NR   s   <AliasModule %r for %r>(    (   R-   R'   (   R#   t   modnameR"   (    s&   /tmp/pip-build-UnxK1c/py/py/_apipkg.pyRI   £   s    c            s-   y t  ˆ  ƒ  | ƒ SWn t k
 r( d  SXd  S(   N(   R   t   ImportErrorR   (   R-   R=   (   RV   (    s&   /tmp/pip-build-UnxK1c/py/py/_apipkg.pyt   __getattribute__©   s    c            s   t  ˆ  ƒ  | | ƒ d  S(   N(   R8   (   R-   R=   R/   (   RV   (    s&   /tmp/pip-build-UnxK1c/py/py/_apipkg.pyt   __setattr__¯   s    c            s   t  ˆ  ƒ  | ƒ d  S(   N(   t   delattr(   R-   R=   (   RV   (    s&   /tmp/pip-build-UnxK1c/py/py/_apipkg.pyt   __delattr__²   s    (   R4   RQ   RI   RY   RZ   R\   (    (   R#   RV   RW   R"   (    s&   /tmp/pip-build-UnxK1c/py/py/_apipkg.pyR<   ¡   s   (   R    t   str(   RW   R"   R#   R<   (    (   R#   RV   R   RW   R"   s&   /tmp/pip-build-UnxK1c/py/py/_apipkg.pyR<   –   s    %(   R   R   R   t   typesR    R   R   R:   R   R(   R   R   R<   (    (    (    s&   /tmp/pip-build-UnxK1c/py/py/_apipkg.pyt   <module>   s   		\