
"Pc           @   s  d  d l  Z  d  d l Z d  d l Z d  d l Z d   Z d e f d     YZ d d d     YZ d e f d     YZ d	 e f d
     YZ	 e	 e e g Z
 d e f d     YZ d e f d     YZ d e f d     YZ d   Z d  Z d e f d     YZ d d d     YZ d   Z d   Z d   Z d   Z d a a a a d a a a d a d   Z  e    d t k rd   Z! n	 d   Z! d S(    iNc         C   s   d  S(   N(    (   t   msg(    (    sF   /home/salopaasi/Documents/Moo/pyinstaller-2.0/PyInstaller/loader/iu.pyt   debug'   s    t
   OwnerErrorc           B   s   e  Z d    Z RS(   c         C   s   d |  j  S(   Ns   <OwnerError %s>(   t   message(   t   self(    (    sF   /home/salopaasi/Documents/Moo/pyinstaller-2.0/PyInstaller/loader/iu.pyt   __str__8   s    (   t   __name__t
   __module__R   (    (    (    sF   /home/salopaasi/Documents/Moo/pyinstaller-2.0/PyInstaller/loader/iu.pyR   7   s   t   Ownerc           B   s)   e  Z d  Z d   Z d   Z d   Z RS(   sG   
    Base class for loading Python bytecode from different places.
    c         C   s   | |  _  d  S(   N(   t   path(   R   R	   (    (    sF   /home/salopaasi/Documents/Moo/pyinstaller-2.0/PyInstaller/loader/iu.pyt   __init__@   s    c         C   s   |  j  S(   N(   R	   (   R   (    (    sF   /home/salopaasi/Documents/Moo/pyinstaller-2.0/PyInstaller/loader/iu.pyR   C   s    c         C   s   d  S(   N(   t   None(   R   t   nm(    (    sF   /home/salopaasi/Documents/Moo/pyinstaller-2.0/PyInstaller/loader/iu.pyt   getmodF   s    (   R   R   t   __doc__R
   R   R   (    (    (    sF   /home/salopaasi/Documents/Moo/pyinstaller-2.0/PyInstaller/loader/iu.pyR   <   s   		t   DirOwnerc           B   s2   e  Z d  Z d   Z e j e j e j d  Z	 RS(   s;   
    Load bytecode of Python modules from file system.
    c         C   sK   | d k r t    } n  t |  s7 t d |   n  t j |  |  d  S(   Nt    s   %s is not a directory(   t
   _os_getcwdt	   pathisdirR   R   R
   (   R   R	   (    (    sF   /home/salopaasi/Documents/Moo/pyinstaller-2.0/PyInstaller/loader/iu.pyR
   N   s
    c      
   C   s  t  |  j |  } | d d  f g } t |  ra t |  ra | j d t  | d  d | f  n  d  } } x0| D](\ } }	 }
 x|   D] \ } } } | | } y t |  } Wn( t k
 r } | j d k st	  q Xt |  s q n  | t
 j k r\t | d  } t
 j | | | | | | f  } t | d  rK| | _ n | | j d <| S| t
 j k rz| | f } q | | f } q W| s| rr Pqr qr W| d  k r| d  k rd  Sx | d  k s| rN| d d | d d k  rNy2 t t | d d	  j   d
 | d d  } PWqt k
 rJ} d | d GH| j GH  qXq| rt | d d  j   } y | | d  } PWqt t f k
 rd  } qXqd  Sq| |  } | j | _ |	 r|
 g | _ t | j  } | j | _ n  | | _ | S(   Ni    R
   i   i   t   rbt   __setattr__t   __file__i   t   rUs   
t   execs   Invalid syntax in %s(   t   _os_path_joinR	   R   R   t   caseOkt   insertt   _os_statt   OSErrort   errnot   AssertionErrort   impt   C_EXTENSIONt   opent   load_modulet   hasattrR   t   __dict__t	   PY_SOURCEt   compilet   readt   SyntaxErrort   argst
   ValueErrort   EOFErrort   co_filenamet   __path__t   PathImportDirectorR   t   __importsub__t   __co__(   R   R   t   getsuffixest   loadcot   newmodt   ptht	   possiblest   pyt   pyct   ispkgt   pkgptht   extt   modet   typt   attemptt   stt   et   fpt   modt   bytecodet   stufft   subimporter(    (    sF   /home/salopaasi/Documents/Moo/pyinstaller-2.0/PyInstaller/loader/iu.pyR   U   sj    %

!.-
	(
   R   R   R   R
   R   t   get_suffixest   marshalt   loadst
   new_moduleR   (    (    (    sF   /home/salopaasi/Documents/Moo/pyinstaller-2.0/PyInstaller/loader/iu.pyR   J   s   	t   ZipOwnerc           B   s&   e  Z d  Z d   Z e j d  Z RS(   s:   
    Load bytecode of Python modules from .egg files.
    c         C   s_   y t  j |  |  _ Wn2 t  j k
 rJ } t d t |  | f   n Xt j |  |  d  S(   Ns   %s: %s(   t	   zipimportt   zipimportert   _ZipOwner__zipt   ZipImportErrorR   t   strR   R
   (   R   R	   R?   (    (    sF   /home/salopaasi/Documents/Moo/pyinstaller-2.0/PyInstaller/loader/iu.pyR
      s
     c         C   s  t  d | |  j f  y |  j j |  } | |  } | j | _ |  j j |  r t |  j |  g | _ t	 | j  } | j
 | _ n  |  j j d  r t t |  j |  d  | _ |  j | _ n  | | _ | SWn# t j k
 r t  d |  d  SXd  S(   Ns   zipimport try: %s within %ss   .eggs   __init__.pys   zipimport not found %s(   R   RL   t   get_codeR,   R   t
   is_packageR   R	   R-   R.   R   R/   t   endswitht
   __loader__R0   RJ   RM   R   (   R   R   R3   RB   RA   RD   (    (    sF   /home/salopaasi/Documents/Moo/pyinstaller-2.0/PyInstaller/loader/iu.pyR      s$    	(   R   R   R   R
   R   RH   R   (    (    (    sF   /home/salopaasi/Documents/Moo/pyinstaller-2.0/PyInstaller/loader/iu.pyRI      s   	t   ImportDirectorc           B   s   e  Z RS(    (   R   R   (    (    (    sF   /home/salopaasi/Documents/Moo/pyinstaller-2.0/PyInstaller/loader/iu.pyRS      s   t   BuiltinImportDirectorc           B   s    e  Z d    Z e j d  Z RS(   c         C   s   d |  _  d  S(   Nt   Builtins(   R	   (   R   (    (    sF   /home/salopaasi/Documents/Moo/pyinstaller-2.0/PyInstaller/loader/iu.pyR
      s    c         C   s   t  j |  S(   N(   R   t   init_builtin(   R   R   t	   isbuiltin(    (    sF   /home/salopaasi/Documents/Moo/pyinstaller-2.0/PyInstaller/loader/iu.pyR      s    (   R   R   R
   R   t
   is_builtinR   (    (    (    sF   /home/salopaasi/Documents/Moo/pyinstaller-2.0/PyInstaller/loader/iu.pyRT      s   	R.   c           B   s5   e  Z d d d d   Z d   Z d   Z d   Z RS(   c         C   sR   | |  _  | d  k r! t |  _ n	 | |  _ | r< | |  _ n	 i  |  _ i  |  _ d  S(   N(   R	   R   t   _globalownertypest
   ownertypest
   shadowpatht   building(   R   t   pathlistt	   importersRZ   (    (    sF   /home/salopaasi/Documents/Moo/pyinstaller-2.0/PyInstaller/loader/iu.pyR
      s    			c         C   s   t  |  j p t j  S(   N(   RN   R	   t   sys(   R   (    (    sF   /home/salopaasi/Documents/Moo/pyinstaller-2.0/PyInstaller/loader/iu.pyR      s    c         C   s   d  } x |  j p t j D] } t | t  r |  j j | d  } | d k rl |  j |  } |  j | <n  | r | j |  } q n | j |  } | r Pq q W| S(   Ni(	   R   R	   R_   t
   isinstancet
   basestringR[   t   gett   _PathImportDirector__makeOwnerR   (   R   R   RA   t   thingt   owner(    (    sF   /home/salopaasi/Documents/Moo/pyinstaller-2.0/PyInstaller/loader/iu.pyR      s    c         C   sm   | |  j  k r d  Sd |  j  | <d  } x6 |  j D]+ } y | |  } Wn t k
 rY q0 XPq0 W|  j  | =| S(   Ni   (   R\   R   RZ   R   (   R   R	   Re   t   klass(    (    sF   /home/salopaasi/Documents/Moo/pyinstaller-2.0/PyInstaller/loader/iu.pyt   __makeOwner   s    
N(   R   R   R   R
   R   R   Rc   (    (    (    sF   /home/salopaasi/Documents/Moo/pyinstaller-2.0/PyInstaller/loader/iu.pyR.      s   		c         C   sI   t  |   } x6 t j   D]( \ } } } | | k r | | | f Sq Wd  S(   N(   t
   getpathextR   RE   (   t   fnmR:   t   suffixR;   R<   (    (    sF   /home/salopaasi/Documents/Moo/pyinstaller-2.0/PyInstaller/loader/iu.pyt   getDescr  s    t   ImportManagerExceptionc           B   s   e  Z d    Z d   Z RS(   c         C   s   | |  _  d  S(   N(   R)   (   R   R)   (    (    sF   /home/salopaasi/Documents/Moo/pyinstaller-2.0/PyInstaller/loader/iu.pyR
     s    c         C   s   d |  j  |  j f S(   Ns   <%s: %s>(   R   R)   (   R   (    (    sF   /home/salopaasi/Documents/Moo/pyinstaller-2.0/PyInstaller/loader/iu.pyt   __repr__"  s    (   R   R   R
   Rm   (    (    (    sF   /home/salopaasi/Documents/Moo/pyinstaller-2.0/PyInstaller/loader/iu.pyRl     s   	t   ImportManagerc           B   s_   e  Z d    Z d   Z d   Z d
 d
 d
 d d  Z d d  Z d   Z d   Z	 d	   Z
 RS(   c         C   s>   t    t   g |  _ d |  _ d  |  _ d  |  _ |  j   d  S(   Ni    (   RT   R.   t   metapatht   threadedR   t   rlockt   lockert   setThreaded(   R   (    (    sF   /home/salopaasi/Documents/Moo/pyinstaller-2.0/PyInstaller/loader/iu.pyR
   (  s    			c         C   sP   t  j j d d   } | rL |  j rL d |  _ | j   |  _ | j |  _ n  d  S(   Nt   threadi   (	   R_   t   modulesRb   R   Rp   t   allocate_lockRq   t	   get_identt
   _get_ident(   R   Rt   (    (    sF   /home/salopaasi/Documents/Moo/pyinstaller-2.0/PyInstaller/loader/iu.pyRs   2  s
    	c         C   s(   d d  l  } |  j | _ |  j | _ d  S(   Ni(   t   __builtin__t
   importHookt
   __import__t
   reloadHookt   reload(   R   Ry   (    (    sF   /home/salopaasi/Documents/Moo/pyinstaller-2.0/PyInstaller/loader/iu.pyt   install:  s    ic         C   s  d  } | r | j d  } n  t d | | | | f  t j j } |  j } |  j }	 t |  }
 | s d  g } | d k rt d   qn+| d k r d  g } n| j d d  } t	 | |  d  } t d |  | d k  r d  g } nT | s	t d   n  | d	 k r?| j
 d
  | d	  } d
 j |  } n  d  g } | r| r| t d  d k r| t d   } n  | j d |  qt |  } | r| j d |  qn  x| D] } | } d } x t |
  D] \ } } t d | | f  | r| d
 | } n | } |	 r0|  j   n  zK | | t  } | t k rzt d | | | f  | | | |  } n  Wd  |	 r|  j   n  X| r| } qPqW| d	 } | rPqqW| t |
  k  rK| rt	 t j | |
 |  rt d | | | f  t j |
 d Sy t j | =Wn t k
 r7n Xt d |   n  | st d | | | f  | rt j | d
 |
 d St j |
 d St j | } t	 | d  rt |  } d } x | t |  k  r| | } | d k r3t t | d g    | | | d	 +| t |  k r&Pn  | | } n  | d	 } t	 | |  s|	 r_|  j   n  z! |  j | | | d
 |  } Wd  |	 r|  j   n  XqqWn  t d | | | f  | S(   NR   s"   importHook(%s, %s, locals, %s, %s)i    s"   Relative import requires 'globals'R   R-   s   importernm %ss    Relative import requires packagei   t   .s	   .__init__s    importHook trying %s in %ss   trying %s %s %ss&   importHook done with %s %s %s (case 1)s   No module named %ss&   importHook done with %s %s %s (case 2)t   *t   __all__s&   importHook done with %s %s %s (case 3)(   R   Rb   R   R_   Ru   t   doimportRp   t	   namesplitt   RuntimeErrorR#   t   splitt   joint   lenR   t   packagenamet	   enumeratet   _acquiret   UNTRIEDt   _releaset   KeyErrort   ImportErrort   listt   getattr(   R   t   namet   globalst   localst   fromlistt   levelt   _ImportManager__globals_namet   _sys_modules_gett   _self_doimportRp   t   nmpartst   contextst
   importernmR8   t   pkgnmt   contextt   ctxt   iR   t   fqnameRA   t	   bottommod(    (    sF   /home/salopaasi/Documents/Moo/pyinstaller-2.0/PyInstaller/loader/iu.pyRz   ?  s    					
 
#
!i    c         B   sB  e  d | | | f  | r e j | } e | d  r e | d d   } | ss e | j  } | j } | _	 n  e  d |  | |  } | r | r e
 | | |  q q e  d  d  Sn3 d  } x* |  j D] }	 |	 j |  } | r Pq q W| re | d  r| | _ n | | j d <| rEe j | j j | j  n | e j | <e | d  r| j }
 | ` y* | r|
 e j | j Un |
 | j UWqe j d k r| se j j | d   e | |  re | |  qqn    qXn  | d k r*|  j r*|  j   q*n d  e j | <e  d | | f  | S(   Ns   doimport(%s, %s, %s)R-   R/   s   using parent's importfunc: %ss   ..parent not a packageR   R   R0   i   i   Rt   s   ..found %s when looking for %s(   i   i   (   R   R_   Ru   R#   R   R   R.   R-   R   R/   t   setattrRo   R   R$   t   updateR0   t   version_infot   popt   delattrRp   Rs   (   R   R   t   parentnmR   R}   t   parentt
   importfuncRD   RA   t   directort   co(    (    sF   /home/salopaasi/Documents/Moo/pyinstaller-2.0/PyInstaller/loader/iu.pyR     sZ    
	
c         C   sD   | j  } t |  d } t |  } |  j | | | d d } | S(   NiR}   i   (   R   R   R   R   (   R   RA   t   fqnmR   R   R3   (    (    sF   /home/salopaasi/Documents/Moo/pyinstaller-2.0/PyInstaller/loader/iu.pyR|     s
    	c         C   sd   |  j  j   r; |  j |  j   k r; |  j d |  _ d  Sn  |  j  j   |  j   |  _ d |  _ d  S(   Ni   i    (   Rq   t   lockedRr   Rx   t	   lockcountt   acquire(   R   (    (    sF   /home/salopaasi/Documents/Moo/pyinstaller-2.0/PyInstaller/loader/iu.pyR     s    c         C   s6   |  j  r |  j  d |  _  n d  |  _ |  j j   d  S(   Ni   (   R   R   Rr   Rq   t   release(   R   (    (    sF   /home/salopaasi/Documents/Moo/pyinstaller-2.0/PyInstaller/loader/iu.pyR     s    		N(   R   R   R
   Rs   R~   R   Rz   R   R|   R   R   (    (    (    sF   /home/salopaasi/Documents/Moo/pyinstaller-2.0/PyInstaller/loader/iu.pyRn   &  s   	
		wC		c         C   s+   |  j  d  } | d k r# |  |  Sd Sd S(   s   
    For package name like 'module.submodule.subsubmodule' returns
    'module.submodule'. If name does not contain any dots '.',
    empty string '' is returned.
    R   i    R   N(   t   rfind(   t   sR   (    (    sF   /home/salopaasi/Documents/Moo/pyinstaller-2.0/PyInstaller/loader/iu.pyR     s    c         C   s"   g  } |  r |  j  d  } n  | S(   s   
    Split package name at the position of dot '.'.

    Examples:
        'module.submodule' =>  ['module', 'submodule']
        'module'           =>  ['module']
        ''                 =>  []
    R   (   R   (   R   t   rslt(    (    sF   /home/salopaasi/Documents/Moo/pyinstaller-2.0/PyInstaller/loader/iu.pyR   %  s    	c         C   s+   |  j  d  } | d k r# |  | Sd Sd  S(   NR   i    R   (   R   (   Ri   R   (    (    sF   /home/salopaasi/Documents/Moo/pyinstaller-2.0/PyInstaller/loader/iu.pyRh   5  s    c         C   s7   y t  |   } Wn t k
 r$ d SX| d d @d k S(   s&   Local replacement for os.path.isdir().i    i   i @  N(   R   R   R   (   t   pathnameR   (    (    sF   /home/salopaasi/Documents/Moo/pyinstaller-2.0/PyInstaller/loader/iu.pyR   =  s
    c    	         sJ  t  j }  d } } }  } d } d |  k rf d d l m } m } m } m  d   a d } nM d |  k r d d l	 m } m } m } m  d   a d	 } n t
 d
   | d k r   d  } n  | d k r   | d  } n  | d k r
  f d   } n  d  f d  } | a | a | a | a | a | a | a d S(   sS   
    Set up 'os' module replacement functions for use during import bootstrap.
    i    t   posixi(   t   statt   getcwdt   environt   listdirt   /i   t   nts   \i   s   no os specific module foundc         S   sF   |  d k r | S|  d } | d k s2 | | k r: |  | S|  | | S(   NR   iR   (    (   t   at   bt   sept   lastchar(    (    sF   /home/salopaasi/Documents/Moo/pyinstaller-2.0/PyInstaller/loader/iu.pyR   f  s    
c         S   sm   xf t  t |   d d d  D]H } |  | } | d k sE | | k r | | k  r] |  | d  S|  |  Sq Wd S(   Ni   iR   R   (   t   rangeR   (   R   R   t	   mindirlenR   t   c(    (    sF   /home/salopaasi/Documents/Moo/pyinstaller-2.0/PyInstaller/loader/iu.pyt   dirnameo  s    #
c            s5   |  j     } | d k r |  S|  | t    Sd  S(   Ni(   R   R   (   t   pR   (   R   (    sF   /home/salopaasi/Documents/Moo/pyinstaller-2.0/PyInstaller/loader/iu.pyt   basenamey  s    c            s
     |   S(   N(    (   t   dirt   cache(   R   (    sF   /home/salopaasi/Documents/Moo/pyinstaller-2.0/PyInstaller/loader/iu.pyt   _listdir  s    N(   R_   t   builtin_module_namesR   R   R   R   R   R   t   _os_sepR   R   R   R   R   t   _os_path_dirnamet   _os_environt   _os_listdirt   _os_path_basename(	   t   namesR   R   R   R   R   R   R   R   (    (   R   R   sF   /home/salopaasi/Documents/Moo/pyinstaller-2.0/PyInstaller/loader/iu.pyt   _os_bootstrapK  s4    		"
	"
		t   PYTHONCASEOKc         C   s"   t  t |    } t |   | k S(   N(   R   R   R   (   t   filenamet   files(    (    sF   /home/salopaasi/Documents/Moo/pyinstaller-2.0/PyInstaller/loader/iu.pyR     s    c         C   s   t  S(   N(   t   True(   R   (    (    sF   /home/salopaasi/Documents/Moo/pyinstaller-2.0/PyInstaller/loader/iu.pyR     s    (    (    ("   R_   R   RF   RJ   R   t   IOErrorR   R   R   RI   RY   RS   RT   R.   Rk   R   t	   ExceptionRl   Rn   R   R   Rh   R   R   R   R   R   R   R   R   R   R   R   R   (    (    (    sF   /home/salopaasi/Documents/Moo/pyinstaller-2.0/PyInstaller/loader/iu.pyt   <module>!   s<   	K0	
1	
						F