ó
¥ –Qc           @   s™   d  Z  d d l Z d d l Z d d l m Z d d l m Z m Z e j	 e
 ƒ Z d „  Z d „  Z d d „ Z d „  Z d	 „  Z d
 „  Z d „  Z d S(   sP   
This module is for the miscellaneous routines which do not fit somewhere else.
iÿÿÿÿN(   t   log(   t   is_unixt   is_winc         C   s@   g  } x3 t  j |  ƒ D]" \ } } } | j t | ƒ ƒ q Wd S(   sE   Returns *.dll, *.so, *.dylib in given directories and subdirectories.N(   t   ost   walkt   extendt   dlls_in_dir(   t	   directoryt   filest   roott   dirs(    (    sY   C:\Users\Salopaasi\My Documents\pyinstaller-pyinstaller-275d4c9\PyInstaller\utils\misc.pyt   dlls_in_subdirs   s    c         C   sy   g  } | j  t j t j j |  d ƒ ƒ ƒ | j  t j t j j |  d ƒ ƒ ƒ | j  t j t j j |  d ƒ ƒ ƒ | S(   s0   Returns *.dll, *.so, *.dylib in given directory.s   *.sos   *.dlls   *.dylib(   R   t   globR   t   patht   join(   R   R   (    (    sY   C:\Users\Salopaasi\My Documents\pyinstaller-pyinstaller-275d4c9\PyInstaller\utils\misc.pyR      s
    %%%c   
      C   s2  | d k r t j d } n  | j t j ƒ } d g } t r½ t j j |  ƒ \ } } | sh |  d }  n  t j d j ƒ  j t j ƒ } t j j |  ƒ \ } } | j ƒ  | k r½ | } q½ n  xn | D]b } |  | } t j j	 | ƒ rê | Sx9 | D]1 } t j j
 | | ƒ }	 t j j	 |	 ƒ rñ |	 Sqñ WqÄ Wd Sd S(   s  
    Try to find 'executable' in the directories listed in 'path' (a
    string listing directories separated by 'os.pathsep'; defaults to
    os.environ['PATH']).

    Returns the complete filename or None if not found.

    Code from http://snippets.dzone.com/posts/show/6313
    t   PATHt    s   .exet   PATHEXTN(   t   NoneR   t   environt   splitt   pathsepR   R   t   splitextt   lowert   isfileR   (
   t
   executableR   t   pathst   extlistt   baset   extt   pathextt   execnamet   pt   f(    (    sY   C:\Users\Salopaasi\My Documents\pyinstaller-pyinstaller-275d4c9\PyInstaller\utils\misc.pyt   find_executable(   s*    
	
c          C   sa   g  }  y6 d d l  } |  j d ƒ d d l } |  j d ƒ Wn t k
 r\ t j d ƒ n X|  S(   s^   
    Try importing codecs and encodings to include unicode support
    in created binary.
    iÿÿÿÿNt   codecst	   encodingss/   Cannot detect modules 'codecs' and 'encodings'.(   R#   t   appendR$   t   ImportErrort   loggert   error(   t   modulesR#   R$   (    (    sY   C:\Users\Salopaasi\My Documents\pyinstaller-pyinstaller-275d4c9\PyInstaller\utils\misc.pyt   get_unicode_modulesO   s    c         C   sf   y3 t  |  d ƒ j ƒ  d } t | |  d ƒ } | SWn, t k
 ra } t j | ƒ t d ƒ ‚ n Xd S(   sE   
    Convert source code from Python source file to code object.
    t   rUs   
t   execi
   N(   t   opent   readt   compilet   SyntaxErrorR'   t	   exceptiont
   SystemExit(   t   filenamet   source_code_stringt   code_objectt   e(    (    sY   C:\Users\Salopaasi\My Documents\pyinstaller-pyinstaller-275d4c9\PyInstaller\utils\misc.pyt   get_code_objecta   s    c         C   s‘   t  j j t  j j |  ƒ ƒ } d } yU xN t d ƒ D]@ } t t  j | ƒ ƒ } | | k rp t  j j | ƒ } q4 | Sq4 WWn t k
 rŒ n Xd S(   s  
    Return the path to top-level directory that contains Python modules.

    It will look in parent directories for __init__.py files. The first parent
    directory without __init__.py is the top-level directory.

    Returned directory might be used to extend the PYTHONPATH.
    s   __init__.pyi
   N(	   R   R   t   dirnamet   abspatht   ranget   sett   listdirt   IOErrorR   (   R3   t   curr_dirt   patternt   iR   (    (    sY   C:\Users\Salopaasi\My Documents\pyinstaller-pyinstaller-275d4c9\PyInstaller\utils\misc.pyt   get_path_to_toplevel_modulesn   s    	c           C   sJ   t  rF t t d ƒ rF t j ƒ  d k rF t j d ƒ t d ƒ ‚ qF n  d S(   s€   
    Raise SystemExit error if the user is on unix and trying running
    PyInstaller or its utilities as superuser 'root'.
    t   getuidi    s@   You are running PyInstaller as user root. This is not supported.i
   N(   R   t   hasattrR   RB   R'   R(   R2   (    (    (    sY   C:\Users\Salopaasi\My Documents\pyinstaller-pyinstaller-275d4c9\PyInstaller\utils\misc.pyt   check_not_running_as_rootŠ   s    !(   t   __doc__R   R   t   PyInstallerR    t   loggingt   PyInstaller.compatR   R   t	   getLoggert   __name__R'   R   R   R   R"   R*   R7   RA   RD   (    (    (    sY   C:\Users\Salopaasi\My Documents\pyinstaller-pyinstaller-275d4c9\PyInstaller\utils\misc.pyt   <module>   s   			'			