ó
ØÆ÷Xc           @` s   d  d l  m Z m Z m Z d  d l Z d  d l Z d  d l Z d g Z d e f d „  ƒ  YZ	 d e	 f d „  ƒ  YZ
 e e j j d d ƒ ƒ r™ e
 Z	 n  d S(	   i    (   t   divisiont   absolute_importt   print_functionNt   PackageLoaderc           B` sŒ   e  Z e e d  „ Z d d „ Z d d „ Z d „  Z d „  Z d „  Z	 d „  Z
 d „  Z d „  Z d	 „  Z d
 „  Z d d „ Z d „  Z RS(   c         B` sÞ   | r d } n d } e  j | ƒ |  _ } e d | j | j ƒ |  _ e d | j | j ƒ } e | e ƒ ry | g } n  | |  _	 d | j k r¤ d | j | j Un  e d | j | j ƒ |  _
 i  |  _ g  |  _ d |  _ d S(   s#    Manages loading packages.
        i   i   t   __name__t   __path__t   __all__s   __all__ = []N(   t   syst	   _getframet   parent_framet   evalt	   f_globalst   f_localst   parent_namet
   isinstancet   strt   parent_patht   parent_export_namest   info_modulest   imported_packagest   Nonet   verbose(   t   selfR   t   infunct   _levelt   frameR   (    (    s2   /tmp/pip-build-X4mzal/numpy/numpy/_import_tools.pyt   __init__
   s    				c   	      C` s  d d l  m  } | t j j | | d ƒ ƒ } xF | t j j | | d ƒ ƒ D]& } | d  | k rM | j | ƒ qM qM Wg  } x | D]‡ } t j j | t | ƒ d ƒ j t j d ƒ } | rÐ | d | } n  | j | | f ƒ | j	 |  j
 d t j j | ƒ | ƒ ƒ q„ W| S(	   sU    Return list of (package name,info.py file) from parent_path subdirectories.
        i    (   t   globs   info.pys   info.pyciÿÿÿÿi   t   .t   *(   R   t   ost   patht   joint   appendt   dirnamet   lent   replacet   sept   extendt   _get_info_files(	   R   t   package_dirR   t   parent_packageR   t   filest	   info_filet
   info_filest   package_name(    (    s2   /tmp/pip-build-X4mzal/numpy/numpy/_import_tools.pyR'       s     % c         B` s  d d l  m } g  } |  j } | d k r[ xì |  j D] } | j |  j d | ƒ ƒ q5 Wn¿ x¼ | D]´ } e j j	 | j
 d ƒ Œ  } x |  j D]/ } |  j | | ƒ } | r | j | ƒ Pq q Wy d | d Ue | | <Wqb e k
 r}	 |  j d | d j	 |  j ƒ |	 f ƒ qb Xqb Wxí | D]å \ } }
 | | k r?q!n  |  j d | } |
 d	 d
 k rid } n d } y | | d |
 | ƒ } Wn& e k
 r±}	 |  j |	 ƒ d } n X| d k sÐe | d e ƒ rã| j | d ƒ q!|  j e | d g  ƒ ƒ | | | <q!Wd S(   sN   Initialize info_modules = {<package_name>: <package info.py module>}.
        i    (   t   npy_load_moduleR   R   s   import %s.info as infoNs6   No scipy-style subpackage %r found in %s. Ignoring: %st   :iÿÿÿÿt   cs   .pyct   rbi   s   .pyt   Ui   s   .infot   ignoret   depends(   s   .pycs   rbi   (   s   .pyR2   i   (   t   numpy.compatR.   R   R   R   R&   R'   R   R   R    t   splitt   infot   ImportErrort   warnR   t	   Exceptiont   errort   getattrt   Falset   popt   _init_info_modules(   R   t   packagesR.   R,   R   R   R-   R(   t   names_filest   msgR+   t   fullnamet   filedescriptort   info_module(    (    s2   /tmp/pip-build-X4mzal/numpy/numpy/_import_tools.pyR?   4   sL    	 	%	

c         C` s   i  } x3 |  j  j ƒ  D]" \ } } t | d g  ƒ | | <q Wg  } x; t | j ƒ  ƒ D]' } | | sU | j | ƒ | | =qU qU Wxy | rû xl t | j ƒ  ƒ D]X \ } } g  | D] } | | k r¯ | ^ q¯ } | sê | j | ƒ | | =qœ | | | <qœ Wqƒ W| S(   sƒ    Return package names sorted in the order as they should be
        imported due to dependence relations between packages.
        R4   (   R   t   itemsR<   t   listt   keysR!   (   R   t   depend_dictt   nameRE   t   package_namest   lstt   nt   new_lst(    (    s2   /tmp/pip-build-X4mzal/numpy/numpy/_import_tools.pyt   _get_sorted_namesh   s     
	%
c      	   O` s”  t  j d t d d ƒ|  j } i  |  _ | j d t ƒ rF g  |  _ n  | j d d ƒ |  _ } | j d d ƒ } |  j
 | p€ d ƒ |  j d |  j ƒ xõ|  j ƒ  D]ç} | |  j k rÀ q¥ n  |  j | } t | d	 g  ƒ } t | d
 t ƒ }	 | rþ | s¥ |	 r| d k	 rq¥ n  | j j | d ƒ }
 d | } |  j | ƒ rJq¥ n  |  j j | ƒ | d k rÂ| j j | ƒ } |
 d k	 rÂ|
 | k	 rÂ|  j d | |  j | ƒ |  j |
 ƒ f ƒ qÂn  d | k rá|  j j | ƒ n  x¨| D] } | d k rlt d | | j | j ƒ } | d k rut d | | j | j ƒ } g  | D] } | j d ƒ sE| ^ qE} qun	 | g } | d k r¾i  } x4 | D]) } | | j k rŽ| j | | | <qŽqŽWn  d | d | } |  j | ƒ råqèn  | d k rYxe | j ƒ  D]T \ } }
 | j | } | |
 k	 rþ|  j d | |  j | ƒ |  j |
 ƒ f ƒ qþqþWn  | d k rx|  j j | ƒ qè|  j j | ƒ qèWq¥ Wd S(   s  Load one or more packages into parent package top-level namespace.

       This function is intended to shorten the need to import many
       subpackages, say of scipy, constantly with statements such as

         import scipy.linalg, scipy.fftpack, scipy.etc...

       Instead, you can say:

         import scipy
         scipy.pkgload('linalg','fftpack',...)

       or

         scipy.pkgload()

       to load all of them in one call.

       If a name which doesn't exist in scipy's namespace is
       given, a warning is shown.

       Parameters
       ----------
        *packages : arg-tuple
             the names (one or more strings) of all the modules one
             wishes to load into the top-level namespace.
        verbose= : integer
             verbosity level [default: -1].
             verbose=-1 will suspend also warnings.
        force= : bool
             when True, force reloading loaded packages [default: False].
        postpone= : bool
             when True, don't load packages [default: False]

        sW   pkgload and PackageLoader are obsolete and will be removed in a future version of numpyt
   stackleveli   t   forceR   iÿÿÿÿt   postpones4   Imports to %r namespace
----------------------------t   global_symbolst   postpone_imports   import s   Overwriting %s=%s (was %s)R   R   s   getattr(%s,"__all__",None)s   dir(%s)t   _s   from s    import N(   t   warningsR9   t   DeprecationWarningR	   R   t   getR=   R   R   R   R?   t   logR   RO   R<   R   t   _execcmdR!   t	   _obj2reprR   R
   R   t
   startswithRF   R&   (   R   R@   t   optionsR   R   RR   R-   RE   RS   RT   t
   old_objectt   cmdstrt
   new_objectt   symbolt   symbolst   st   old_objects(    (    s2   /tmp/pip-build-X4mzal/numpy/numpy/_import_tools.pyt   __call__‚   s|    %				
	
.		c         B` s`   |  j  } y | | j | j UWn+ e k
 rJ } |  j d | | f ƒ e SX|  j d | ƒ d S(   s!    Execute command in parent_frame.s   %s -> failed: %ss   %s -> successN(   R	   R   R   R:   R;   t   TrueRY   (   R   R_   R   RB   (    (    s2   /tmp/pip-build-X4mzal/numpy/numpy/_import_tools.pyRZ   õ   s    	c         C` sj   t  | d d ƒ } t  | d d ƒ } | d k	 rB t | ƒ d | S| d k	 r` t | ƒ d | St | ƒ S(   s    Return repr(obj) witht
   __module__t   __file__s    from N(   R<   R   t   repr(   R   t   objt   modulet   file(    (    s2   /tmp/pip-build-X4mzal/numpy/numpy/_import_tools.pyR[     s    c         C` s/   |  j  d k r+ t t | ƒ d t j ƒn  d  S(   Ni   Rl   (   R   t   printR   R   t   stderr(   R   t   mess(    (    s2   /tmp/pip-build-X4mzal/numpy/numpy/_import_tools.pyRY     s    c         C` s/   |  j  d k r+ t t | ƒ d t j ƒn  d  S(   Ni    Rl   (   R   Rm   R   R   Rn   (   R   Ro   (    (    s2   /tmp/pip-build-X4mzal/numpy/numpy/_import_tools.pyR9     s    c         C` s/   |  j  d k r+ t t | ƒ d t j ƒn  d  S(   NiÿÿÿÿRl   (   R   Rm   R   R   Rn   (   R   Ro   (    (    s2   /tmp/pip-build-X4mzal/numpy/numpy/_import_tools.pyR;     s    c         C` sd   t  | d d ƒ } | d k	 r" | St  | d d ƒ } | d k	 r` | j ƒ  j d d ƒ d } | Sd S(   s4    Get the title from a package info.py file.
        t   __doc_title__t   __doc__s   
i   i    s   * Not Available *N(   R<   R   t   lstripR6   (   R   RE   t   title(    (    s2   /tmp/pip-build-X4mzal/numpy/numpy/_import_tools.pyt   _get_doc_title  s    s   ---c         C` s<  d } g  | D]) \ } } t  | ƒ | j d ƒ d ^ q d g } t | ƒ } g  } x× | D]Ï \ } } | | j d ƒ d } | t  | ƒ }	 | j ƒ  }
 d | |	 d | f } t  | ƒ d } xf |
 r|
 j d ƒ } t  | ƒ t  | ƒ | k r| j | ƒ | } n  | d | 7} qÅ W| j | ƒ q\ Wd j | ƒ S(   NiF   R   i   i    s   %s%s %st    s   
(   R#   t   findt   maxR6   R>   R!   R    (   R   t   titlest   colsept   display_window_widthRJ   Rs   t   lengthst
   max_lengtht   linest   wt   wordst   linet   tabt   word(    (    s2   /tmp/pip-build-X4mzal/numpy/numpy/_import_tools.pyt   _format_titles!  s$    =		c   
      C` s  d d l  } i  |  _ |  j d ƒ g  } g  } x£ |  j j ƒ  D]’ \ } } t | d g  ƒ } |  j d | } d } | | j k r‹ d } n  | j | |  j	 | ƒ | f ƒ | r> | j | d j
 | ƒ f ƒ q> q> W|  j | ƒ d }	 | r
|	 d	 |  j | d
 ƒ 7}	 n  |	 S(   s6    Return documentation summary of subpackages.
        i    NRS   R   t    s    [*]s   , s?   
  [*] - using a package requires explicit import (see pkgload)sB   

Global symbols from subpackages
-------------------------------
s   -->(   R   R   R?   R   RF   R<   R   t   modulesR!   Rt   R    Rƒ   (
   R   R   Rx   Rb   R-   RE   RS   RC   t   notet   retstr(    (    s2   /tmp/pip-build-X4mzal/numpy/numpy/_import_tools.pyt   get_pkgdocs6  s(    		 #N(   R   Rg   R=   R   R   R'   R?   RO   Re   RZ   R[   RY   R9   R;   Rt   Rƒ   Rˆ   (    (    (    s2   /tmp/pip-build-X4mzal/numpy/numpy/_import_tools.pyR   	   s   4		s		
				t   PackageLoaderDebugc           B` s   e  Z d  „  Z RS(   c         B` s]   |  j  } e d e | ƒ d d d ƒe j j ƒ  | | j | j Ue d ƒ e j j ƒ  d S(   s!    Execute command in parent_frame.t	   Executings   ...t   endRu   t   okN(   R	   Rm   Ri   R   t   stdoutt   flushR   R   (   R   R_   R   (    (    s2   /tmp/pip-build-X4mzal/numpy/numpy/_import_tools.pyRZ   U  s    	
(   R   Rg   RZ   (    (    (    s2   /tmp/pip-build-X4mzal/numpy/numpy/_import_tools.pyR‰   T  s   t   NUMPY_IMPORT_DEBUGt   0(   t
   __future__R    R   R   R   R   RV   R   t   objectR   R‰   t   intt   environRX   (    (    (    s2   /tmp/pip-build-X4mzal/numpy/numpy/_import_tools.pyt   <module>   s   	ÿ L