Ñò
$8Zc           @   sž   d  Z  d Z d d k Z d d k Z d d k Td d k Z d d k l Z d d k l Z d d k	 Td d k
 l Z d d k l Z d	 e f d
 „  ƒ  YZ d S(   sH   distutils.command.build_py

Implements the Distutils 'build_py' command.s   $Id$iÿÿÿÿN(   t   *(   t   glob(   t   Command(   t   convert_path(   t   logt   build_pyc           B   sê   e  Z d  Z d# d$ d& d' d( g Z d d g Z h d d 6Z d „  Z d „  Z d „  Z	 d „  Z
 d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d d „ Z d „  Z d  „  Z d! „  Z d" „  Z RS()   s5   "build" pure Python modules (copy to build directory)s
   build-lib=t   ds   directory to "build" (copy) tot   compilet   cs   compile .py to .pycs
   no-compiles!   don't compile .py files [default]s	   optimize=t   Osl   also compile with optimization: -O1 for "python -O", -O2 for "python -OO", and -O0 to disable [default: -O0]t   forcet   fs2   forcibly build everything (ignore file timestamps)c         C   sL   d  |  _ d  |  _ d  |  _ d  |  _ d  |  _ d |  _ d |  _ d  |  _ d  S(   Ni    (	   t   Nonet	   build_libt
   py_modulest   packaget   package_datat   package_dirR   t   optimizeR
   (   t   self(    (    s0   /usr/lib/python2.6/distutils/command/build_py.pyt   initialize_options%   s    							c         C   s   |  i  d d d ƒ |  i i |  _ |  i i |  _ |  i i |  _ h  |  _ |  i i o: x7 |  i i i ƒ  D] \ } } t | ƒ |  i | <qi Wn |  i ƒ  |  _	 t
 |  i ƒ t j	 og y> t |  i ƒ |  _ d |  i j o
 d j n p t ‚ Wqt t f j
 o t d ‚ qXn d  S(	   Nt   buildR   R
   i    i   s   optimize must be 0, 1, or 2(   s	   build_libs	   build_lib(   s   forces   force(   t   set_undefined_optionst   distributiont   packagesR   R   R   t   itemsR   t   get_data_filest
   data_filest   typeR   t   IntTypet   intt   AssertionErrort
   ValueErrort   DistutilsOptionError(   R   t   namet   path(    (    s0   /usr/lib/python2.6/distutils/command/build_py.pyt   finalize_options/   s$    		 ,c         C   sW   |  i  o |  i ƒ  n |  i o |  i ƒ  |  i ƒ  n |  i |  i d d ƒ ƒ d  S(   Nt   include_bytecodei    (   R   t   build_modulesR   t   build_packagest   build_package_datat   byte_compilet   get_outputs(   R   (    (    s0   /usr/lib/python2.6/distutils/command/build_py.pyt   runH   s    


c   	      C   sÌ   g  } |  i  p | Sx° |  i  D]¥ } |  i | ƒ } t i i |  i g | i d ƒ Œ  } d } | o t | ƒ d } n g  } |  i | | ƒ D] } | | | q‘ ~ } | i	 | | | | f ƒ q W| S(   s?   Generate list of '(package,src_dir,build_dir,filenames)' tuplest   .i    i   (
   R   t   get_package_dirt   osR#   t   joinR   t   splitt   lent   find_data_filest   append(	   R   t   dataR   t   src_dirt	   build_dirt   plent   _[1]t   filet	   filenames(    (    s0   /usr/lib/python2.6/distutils/command/build_py.pyR   i   s    

 %1c   	      C   s   |  i  i d g  ƒ |  i  i | g  ƒ } g  } xh | D]` } t t i i | t | ƒ ƒ ƒ } | i g  } | D] } | | j o | | qm qm ~ ƒ q5 W| S(   s6   Return filenames for package's data files in 'src_dir't    (   R   t   getR   R.   R#   R/   R   t   extend(	   R   R   R5   t   globst   filest   patternt   filelistR8   t   fn(    (    s0   /usr/lib/python2.6/distutils/command/build_py.pyR2      s     !=c         C   sŽ   d } x |  i D]v \ } } } } xa | D]Y } t i i | | ƒ } |  i t i i | ƒ ƒ |  i t i i | | ƒ | d t ƒq) Wq Wd S(   s$   Copy data files into build directoryt   preserve_modeN(	   R   R   R.   R#   R/   t   mkpatht   dirnamet	   copy_filet   False(   R   t   lastdirR   R5   R6   R:   t   filenamet   target(    (    s0   /usr/lib/python2.6/distutils/command/build_py.pyR(      s    
  c         C   s  t  i | d ƒ } |  i p  | o t i i | Œ  Sd SnÓ g  } xÉ | or y |  i t  i | d ƒ } Wn. t j
 o" | i d | d ƒ | d =qE X| i d | ƒ t i i | Œ  SqE W|  i i d ƒ } | d j	 o | i d | ƒ n | o t i i | Œ  Sd Sd S(   s½   Return the directory, relative to the top of the source
           distribution, where package 'package' should be found
           (at least according to the 'package_dir' option, if any).R,   R;   i    iÿÿÿÿN(
   t   stringR0   R   R.   R#   R/   t   KeyErrort   insertR<   R   (   R   R   R#   t   tailt   pdir(    (    s0   /usr/lib/python2.6/distutils/command/build_py.pyR-   —   s*    
 	c         C   s­   | d j oP t  i i | ƒ p t d | ‚ n t  i i | ƒ p t d d | ‚ q] n | oE t  i i | d ƒ } t  i i | ƒ o | St i d d | ƒ n d  S(   NR;   s%   package directory '%s' does not exists(   supposed package directory '%s' exists, s   but is not a directorys   __init__.pys!   package init file '%s' not found s   (or not a regular file)(
   R.   R#   t   existst   DistutilsFileErrort   isdirR/   t   isfileR   t   warnR   (   R   R   R   t   init_py(    (    s0   /usr/lib/python2.6/distutils/command/build_py.pyt   check_packageÂ   s    	c         C   s3   t  i i | ƒ p t i d | | ƒ d Sd Sd  S(   Ns!   file %s (for module %s) not foundi    i   (   R.   R#   RS   R   RT   (   R   t   modulet   module_file(    (    s0   /usr/lib/python2.6/distutils/command/build_py.pyt   check_moduleá   s    c   	      C   sÊ   |  i  | | ƒ t t i i | d ƒ ƒ } g  } t i i |  i i ƒ } xz | D]r } t i i | ƒ } | | j o< t i i t i i	 | ƒ ƒ d } | i
 | | | f ƒ qP |  i d | ƒ qP W| S(   Ns   *.pyi    s   excluding %s(   RV   R   R.   R#   R/   t   abspathR   t   script_namet   splitextt   basenameR3   t   debug_print(	   R   R   R   t   module_filest   modulest   setup_scriptR   t   abs_fRW   (    (    s0   /usr/lib/python2.6/distutils/command/build_py.pyt   find_package_modulesë   s     "c      	   C   s/  h  } g  } x|  i  D]} t i | d ƒ } t i | d d !d ƒ } | d } y | | \ } } Wn( t j
 o |  i | ƒ } d } n X| pG |  i | | ƒ }	 | d f | | <|	 o | i | d |	 f ƒ qÞ n t i	 i | | d ƒ }
 |  i
 | |
 ƒ p q n | i | | |
 f ƒ q W| S(   sÈ  Finds individually-specified Python modules, ie. those listed by
        module name in 'self.py_modules'.  Returns a list of tuples (package,
        module_base, filename): 'package' is a tuple of the path through
        package-space to the module; 'module_base' is the bare (no
        packages, no dots) module name, and 'filename' is the path to the
        ".py" file (relative to the distribution root) that implements the
        module.
        R,   i    iÿÿÿÿi   t   __init__s   .py(   R   RK   R0   R/   RL   R-   RV   R3   R.   R#   RY   (   R   R   R`   RW   R#   R   t   module_baseR   t   checkedRU   RX   (    (    s0   /usr/lib/python2.6/distutils/command/build_py.pyt   find_modulesû   s,    
 
c         C   s{   g  } |  i  o | i |  i ƒ  ƒ n |  i oF xC |  i D]4 } |  i | ƒ } |  i | | ƒ } | i | ƒ q; Wn | S(   s4  Compute the list of all modules that will be built, whether
        they are specified one-module-at-a-time ('self.py_modules') or
        by whole packages ('self.packages').  Return a list of tuples
        (package, module, module_file), just like 'find_modules()' and
        'find_package_modules()' do.(   R   R=   Rg   R   R-   Rc   (   R   R`   R   R   t   m(    (    s0   /usr/lib/python2.6/distutils/command/build_py.pyt   find_all_modules4  s    


 c         C   s8   |  i  ƒ  } g  } x | D] } | i | d ƒ q W| S(   Niÿÿÿÿ(   Ri   R3   (   R   R`   R:   RW   (    (    s0   /usr/lib/python2.6/distutils/command/build_py.pyt   get_source_filesI  s     c         C   s.   | g t  | ƒ | d g } t i i | Œ  S(   Ns   .py(   t   listR.   R#   R/   (   R   R6   R   RW   t   outfile_path(    (    s0   /usr/lib/python2.6/distutils/command/build_py.pyt   get_module_outfileS  s    i   c      
   C   s  |  i  ƒ  } g  } x | D]• \ } } } t i | d ƒ } |  i |  i | | ƒ } | i | ƒ | oH |  i o | i | d ƒ n |  i d j o | i | d ƒ q® q q W| g  } |  i D]5 \ } }	 }
 } | D] } | t	 i
 i |
 | ƒ qÙ qÃ ~ 7} | S(   NR,   R   i    t   o(   Ri   RK   R0   Rm   R   R3   R   R   R   R.   R#   R/   (   R   R%   R`   t   outputsR   RW   RX   RI   R8   R5   R6   R:   (    (    s0   /usr/lib/python2.6/distutils/command/build_py.pyR*   X  s"     
-c         C   sœ   t  | ƒ t j o t i | d ƒ } n' t  | ƒ t t f j o t d ‚ n |  i |  i | | ƒ } t	 i
 i | ƒ } |  i | ƒ |  i | | d d ƒS(   NR,   s:   'package' must be a string (dot-separated), list, or tupleRC   i    (   R   t
   StringTypeRK   R0   t   ListTypet	   TupleTypet	   TypeErrorRm   R   R.   R#   RE   RD   RF   (   R   RW   RX   R   t   outfilet   dir(    (    s0   /usr/lib/python2.6/distutils/command/build_py.pyt   build_modulen  s    
c         C   s=   |  i  ƒ  } x* | D]" \ } } } |  i | | | ƒ q Wd  S(   N(   Rg   Rv   (   R   R`   R   RW   RX   (    (    s0   /usr/lib/python2.6/distutils/command/build_py.pyR&   ~  s     c         C   sz   xs |  i  D]h } |  i | ƒ } |  i | | ƒ } x> | D]6 \ } } } | | j p t ‚ |  i | | | ƒ q8 Wq
 Wd  S(   N(   R   R-   Rc   R   Rv   (   R   R   R   R`   t   package_RW   RX   (    (    s0   /usr/lib/python2.6/distutils/command/build_py.pyR'   Œ  s    
  c         C   sÓ   t  i o |  i d ƒ d  Sd d k l } |  i } | d t i j o | t i } n |  i o, | | d d d |  i	 d | d |  i
 ƒn |  i d j o/ | | d |  i d |  i	 d | d |  i
 ƒn d  S(	   Ns%   byte-compiling is disabled, skipping.iÿÿÿÿ(   R)   R   i    R
   t   prefixt   dry_run(   t   syst   dont_write_bytecodeRT   t   distutils.utilR)   R   R.   t   sepR   R
   Ry   R   (   R   R?   R)   Rx   (    (    s0   /usr/lib/python2.6/distutils/command/build_py.pyR)   ¥  s    
	
(   s
   build-lib=R   s   directory to "build" (copy) to(   s   compileR   s   compile .py to .pycN(   s
   no-compileNs!   don't compile .py files [default](   s	   optimize=R	   sl   also compile with optimization: -O1 for "python -O", -O2 for "python -OO", and -O0 to disable [default: -O0](   s   forceR   s2   forcibly build everything (ignore file timestamps)(   t   __name__t
   __module__t   descriptionR   t   user_optionst   boolean_optionst   negative_optR   R$   R+   R   R2   R(   R-   RV   RY   Rc   Rg   Ri   Rj   Rm   R*   Rv   R&   R'   R)   (    (    (    s0   /usr/lib/python2.6/distutils/command/build_py.pyR      s8    		
		!			
	+		
		9		
				(   t   __doc__t   __revision__RK   R.   t   typesRz   R   t   distutils.coreR   t   distutils.errorsR|   R   t	   distutilsR   R   (    (    (    s0   /usr/lib/python2.6/distutils/command/build_py.pyt   <module>   s   

