;
Ñâ"Ic               @   sÁ   d  Z  d Z d d l Z d d l Z d d l m Z d d l m Z d d l Td d l m	 Z	 d d l
 m Z Gd	 „  d
 e ƒ Z d d l m Z m Z Gd „  d e ƒ Z Gd „  d e ƒ Z d S(   uH   distutils.command.build_py

Implements the Distutils 'build_py' command.u=   $Id: build_py.py 66901 2008-10-15 05:58:17Z martin.v.loewis $i    N(   u   glob(   u   Command(   u   *(   u   convert_path(   u   logc             B   sð   |  Ee  Z d  Z d$ d% d& d' d( g Z d d g Z i 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 d# S()   u5   "build" pure Python modules (copy to build directory)u
   build-lib=u   du   directory to "build" (copy) tou   compileu   cu   compile .py to .pycu
   no-compileu!   don't compile .py files [default]u	   optimize=u   Oul   also compile with optimization: -O1 for "python -O", -O2 for "python -OO", and -O0 to disable [default: -O0]u   forceu   fu2   forcibly build everything (ignore file timestamps)c             C   sL   d  |  _ d  |  _ d  |  _ d  |  _ d  |  _ d |  _ d |  _ d  |  _ d  S(   Ni    (	   u   Noneu	   build_libu
   py_modulesu   packageu   package_datau   package_diru   compileu   optimizeu   force(   u   self(    (    u7   /mit/python/lib/python3.0/distutils/command/build_py.pyu   initialize_options    s    							c             C   sù   |  j  d d d ƒ |  j j |  _ |  j j |  _ |  j j |  _ i  |  _ |  j j o: x7 |  j j j ƒ  D] \ } } t | ƒ |  j | <qi Wn |  j ƒ  |  _	 t
 |  j t ƒ pC y t |  j ƒ |  _ Wqõ t t f k
 o t d ƒ ‚ Yqõ Xn d  S(   Nu   buildu	   build_libu   forceu   optimize must be 0, 1, or 2(   u	   build_libu	   build_lib(   u   forceu   force(   u   set_undefined_optionsu   distributionu   packagesu
   py_modulesu   package_datau   package_diru   itemsu   convert_pathu   get_data_filesu
   data_filesu
   isinstanceu   optimizeu   intu
   ValueErroru   AssertionErroru   DistutilsOptionError(   u   selfu   nameu   path(    (    u7   /mit/python/lib/python3.0/distutils/command/build_py.pyu   finalize_options*   s$    		 c             C   sW   |  j  o |  j ƒ  n |  j o |  j ƒ  |  j ƒ  n |  j |  j d d ƒ ƒ d  S(   Nu   include_bytecodei    (   u
   py_modulesu   build_modulesu   packagesu   build_packagesu   build_package_datau   byte_compileu   get_outputs(   u   self(    (    u7   /mit/python/lib/python3.0/distutils/command/build_py.pyu   runC   s    


c                s½   g  } |  j  p | Sx¡ |  j  D]– } |  j | ƒ } t j j |  j g | j d ƒ Œ  } d ‰  | o t | ƒ d ‰  n ‡  f d †  |  j | | ƒ Dƒ } | j	 | | | | f ƒ q W| S(   u?   Generate list of '(package,src_dir,build_dir,filenames)' tuplesu   .i    i   c                s%   g  } |  ] } | | ˆ  d  … q
 S(   N(    (   u   .0u   _[1]u   file(   u   plen(    u7   /mit/python/lib/python3.0/distutils/command/build_py.pyu
   <listcomp>t   s    (
   u   packagesu   get_package_diru   osu   pathu   joinu	   build_libu   splitu   lenu   find_data_filesu   append(   u   selfu   datau   packageu   src_diru	   build_diru	   filenames(    (   u   plenu7   /mit/python/lib/python3.0/distutils/command/build_py.pyu   get_data_filesa   s    

 %"c                s   |  j  j d g  ƒ |  j  j | g  ƒ } g  ‰  xL | D]D } t t j j | t | ƒ ƒ ƒ } ˆ  j ‡  f d †  | Dƒ ƒ q5 Wˆ  S(   u6   Return filenames for package's data files in 'src_dir'u    c                s,   g  } |  ] } | ˆ  k o | | q
 q
 S(    (    (   u   .0u   _[1]u   fn(   u   files(    u7   /mit/python/lib/python3.0/distutils/command/build_py.pyu
   <listcomp>‚   s    (   u   package_datau   getu   globu   osu   pathu   joinu   convert_pathu   extend(   u   selfu   packageu   src_diru   globsu   patternu   filelist(    (   u   filesu7   /mit/python/lib/python3.0/distutils/command/build_py.pyu   find_data_filesy   s     !!c             C   sŽ   d } x |  j D]v \ } } } } xa | D]Y } t j j | | ƒ } |  j t j j | ƒ ƒ |  j t j j | | ƒ | d d ƒq) Wq Wd S(   u$   Copy data files into build directoryu   preserve_modeNF(	   u   Noneu
   data_filesu   osu   pathu   joinu   mkpathu   dirnameu	   copy_fileu   False(   u   selfu   lastdiru   packageu   src_diru	   build_diru	   filenamesu   filenameu   target(    (    u7   /mit/python/lib/python3.0/distutils/command/build_py.pyu   build_package_data…   s    
  c          	   C   s  | j  d ƒ } |  j p  | o t j j | Œ  Sd SnÑ g  } xÇ | op y |  j d j | ƒ } Wn/ t k
 o# | j d | d ƒ | d =YqB X| j d | ƒ t j j | Œ  SqB W|  j j d ƒ } | d k	 o | j d | ƒ n | o t j j | Œ  Sd Sd S(   u½   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).u   .u    i    iÿÿÿÿN(	   u   splitu   package_diru   osu   pathu   joinu   KeyErroru   insertu   getu   None(   u   selfu   packageu   pathu   tailu   pdir(    (    u7   /mit/python/lib/python3.0/distutils/command/build_py.pyu   get_package_dir   s*    
 	c             C   s¯   | d k oR t  j j | ƒ p t d | ƒ ‚ n t  j j | ƒ p t d | ƒ ‚ q_ n | oE t  j j | d ƒ } t  j j | ƒ o | St j d d | ƒ n d  S(   Nu    u%   package directory '%s' does not existu>   supposed package directory '%s' exists, but is not a directoryu   __init__.pyu!   package init file '%s' not found u   (or not a regular file)(
   u   osu   pathu   existsu   DistutilsFileErroru   isdiru   joinu   isfileu   logu   warnu   None(   u   selfu   packageu   package_diru   init_py(    (    u7   /mit/python/lib/python3.0/distutils/command/build_py.pyu   check_package¶   s    	c             C   s3   t  j j | ƒ p t j d | | ƒ d Sd Sd  S(   Nu!   file %s (for module %s) not foundFT(   u   osu   pathu   isfileu   logu   warnu   Falseu   True(   u   selfu   moduleu   module_file(    (    u7   /mit/python/lib/python3.0/distutils/command/build_py.pyu   check_moduleÑ   s    c       	      C   sÊ   |  j  | | ƒ t t j j | d ƒ ƒ } g  } t j j |  j j ƒ } xz | D]r } t j j | ƒ } | | k o< t j j t j j	 | ƒ ƒ d } | j
 | | | f ƒ qP |  j d | ƒ qP W| S(   Nu   *.pyi    u   excluding %s(   u   check_packageu   globu   osu   pathu   joinu   abspathu   distributionu   script_nameu   splitextu   basenameu   appendu   debug_print(	   u   selfu   packageu   package_diru   module_filesu   modulesu   setup_scriptu   fu   abs_fu   module(    (    u7   /mit/python/lib/python3.0/distutils/command/build_py.pyu   find_package_modulesØ   s     "c             C   s-  i  } g  } x|  j  D]} | j d ƒ } d j | d d … ƒ } | d } y | | \ } } Wn) t k
 o |  j | ƒ } d } Yn X| pG |  j | | ƒ }	 | d f | | <|	 o | j | d |	 f ƒ qÜ n t j j | | d ƒ }
 |  j	 | |
 ƒ p q n | j | | |
 f ƒ q W| S(   uÈ  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.
        u   .i    iÿÿÿÿi   u   __init__u   .py(
   u
   py_modulesu   splitu   joinu   KeyErroru   get_package_diru   check_packageu   appendu   osu   pathu   check_module(   u   selfu   packagesu   modulesu   moduleu   pathu   packageu   module_baseu   package_diru   checkedu   init_pyu   module_file(    (    u7   /mit/python/lib/python3.0/distutils/command/build_py.pyu   find_modulesç   s,    
 
c             C   s{   g  } |  j  o | j |  j ƒ  ƒ n |  j oF xC |  j D]4 } |  j | ƒ } |  j | | ƒ } | j | ƒ q; Wn | S(   u4  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.(   u
   py_modulesu   extendu   find_modulesu   packagesu   get_package_diru   find_package_modules(   u   selfu   modulesu   packageu   package_diru   m(    (    u7   /mit/python/lib/python3.0/distutils/command/build_py.pyu   find_all_modules  s    


 c             C   s   d „  |  j  ƒ  Dƒ S(   Nc             S   s   g  } |  ] } | | d  q
 S(   iÿÿÿÿ(    (   u   .0u   _[1]u   module(    (    u7   /mit/python/lib/python3.0/distutils/command/build_py.pyu
   <listcomp>,  s    (   u   find_all_modules(   u   self(    (    u7   /mit/python/lib/python3.0/distutils/command/build_py.pyu   get_source_files+  s    c             C   s.   | g t  | ƒ | d g } t j j | Œ  S(   Nu   .py(   u   listu   osu   pathu   join(   u   selfu	   build_diru   packageu   moduleu   outfile_path(    (    u7   /mit/python/lib/python3.0/distutils/command/build_py.pyu   get_module_outfile.  s    i   c             C   sÊ   |  j  ƒ  } g  } xš | D]’ \ } } } | j d ƒ } |  j |  j | | ƒ } | j | ƒ | oH |  j o | j | d ƒ n |  j d k o | j | d ƒ q« q q W| d „  |  j Dƒ 7} | S(   Nu   .u   ci    u   oc             S   sC   g  } |  ]5 \ } } } } | D] } | t  j j | | ƒ q  q
 S(    (   u   osu   pathu   join(   u   .0u   _[1]u   packageu   src_diru	   build_diru	   filenamesu   filename(    (    u7   /mit/python/lib/python3.0/distutils/command/build_py.pyu
   <listcomp>@  s   (   u   find_all_modulesu   splitu   get_module_outfileu	   build_libu   appendu   compileu   optimizeu
   data_files(   u   selfu   include_bytecodeu   modulesu   outputsu   packageu   moduleu   module_fileu   filename(    (    u7   /mit/python/lib/python3.0/distutils/command/build_py.pyu   get_outputs2  s      
c             C   s–   t  | t ƒ o | j d ƒ } n' t  | t t f ƒ p t d ƒ ‚ n |  j |  j | | ƒ } t j	 j
 | ƒ } |  j | ƒ |  j | | d d ƒS(   Nu   .u:   'package' must be a string (dot-separated), list, or tupleu   preserve_modei    (   u
   isinstanceu   stru   splitu   listu   tupleu	   TypeErroru   get_module_outfileu	   build_libu   osu   pathu   dirnameu   mkpathu	   copy_file(   u   selfu   moduleu   module_fileu   packageu   outfileu   dir(    (    u7   /mit/python/lib/python3.0/distutils/command/build_py.pyu   build_moduleG  s    c             C   s=   |  j  ƒ  } x* | D]" \ } } } |  j | | | ƒ q Wd  S(   N(   u   find_modulesu   build_module(   u   selfu   modulesu   packageu   moduleu   module_file(    (    u7   /mit/python/lib/python3.0/distutils/command/build_py.pyu   build_modulesV  s     c             C   sf   x_ |  j  D]T } |  j | ƒ } |  j | | ƒ } x* | D]" \ } } } |  j | | | ƒ q8 Wq
 Wd  S(   N(   u   packagesu   get_package_diru   find_package_modulesu   build_module(   u   selfu   packageu   package_diru   modulesu   package_u   moduleu   module_file(    (    u7   /mit/python/lib/python3.0/distutils/command/build_py.pyu   build_packages_  s    
 
 c             C   s·   d d l  m } |  j } | d t j k o | t j } n |  j o, | | d d d |  j d | d |  j ƒn |  j d k o/ | | d |  j d |  j d | d |  j ƒn d  S(   Ni    (   u   byte_compileiÿÿÿÿu   optimizeu   forceu   prefixu   dry_run(	   u   distutils.utilu   byte_compileu	   build_libu   osu   sepu   compileu   forceu   dry_runu   optimize(   u   selfu   filesu   byte_compileu   prefix(    (    u7   /mit/python/lib/python3.0/distutils/command/build_py.pyu   byte_compiles  s    	
N(   u
   build-lib=u   du   directory to "build" (copy) to(   u   compileu   cu   compile .py to .pyc(   u
   no-compileNu!   don't compile .py files [default](   u	   optimize=u   Oul   also compile with optimization: -O1 for "python -O", -O2 for "python -OO", and -O0 to disable [default: -O0](   u   forceu   fu2   forcibly build everything (ignore file timestamps)(   u   __name__u
   __module__u   descriptionu   Noneu   user_optionsu   boolean_optionsu   negative_optu   initialize_optionsu   finalize_optionsu   runu   get_data_filesu   find_data_filesu   build_package_datau   get_package_diru   check_packageu   check_moduleu   find_package_modulesu   find_modulesu   find_all_modulesu   get_source_filesu   get_module_outfileu   get_outputsu   build_moduleu   build_modulesu   build_packagesu   byte_compile(   u
   __locals__(    (    u7   /mit/python/lib/python3.0/distutils/command/build_py.pyu   build_py   s8   
 		
					
	'				4							u   build_py(   u   RefactoringToolu   get_fixers_from_packagec             B   s)   |  Ee  Z d  „  Z d „  Z d „  Z d S(   c             O   s   t  j | | Œ d  S(   N(   u   logu   error(   u   selfu   msgu   argsu   kw(    (    u7   /mit/python/lib/python3.0/distutils/command/build_py.pyu	   log_error…  s    c             G   s   t  j | | Œ d  S(   N(   u   logu   info(   u   selfu   msgu   args(    (    u7   /mit/python/lib/python3.0/distutils/command/build_py.pyu   log_message‰  s    c             G   s   t  j | | Œ d  S(   N(   u   logu   debug(   u   selfu   msgu   args(    (    u7   /mit/python/lib/python3.0/distutils/command/build_py.pyu	   log_debugŒ  s    N(   u   __name__u
   __module__u	   log_erroru   log_messageu	   log_debug(   u
   __locals__(    (    u7   /mit/python/lib/python3.0/distutils/command/build_py.pyu   DistutilsRefactoringTool„  s   
		u   DistutilsRefactoringToolc             B   s    |  Ee  Z d  „  Z d „  Z d S(   c             C   s¸   g  |  _  |  j o |  j ƒ  n |  j o |  j ƒ  |  j ƒ  n t d ƒ } t d g  d g  d d	 d d	 d d
 ƒ } t
 | | ƒ } | j |  j  d d
 ƒ|  j |  j d d ƒ ƒ d  S(   Nu   lib2to3.fixesu   fixu
   list_fixesu   print_functionu   verboseu   writeu   include_bytecodei    FT(   u   updated_filesu
   py_modulesu   build_modulesu   packagesu   build_packagesu   build_package_datau   get_fixers_from_packageu   dictu   Falseu   Trueu   DistutilsRefactoringToolu   refactoru   byte_compileu   get_outputs(   u   selfu   fixersu   optionsu   r(    (    u7   /mit/python/lib/python3.0/distutils/command/build_py.pyu   run  s    	


	c             C   s?   t  j |  | | | ƒ } | d o |  j j | d ƒ n | S(   Ni   i    (   u   build_pyu   build_moduleu   updated_filesu   append(   u   selfu   moduleu   module_fileu   packageu   res(    (    u7   /mit/python/lib/python3.0/distutils/command/build_py.pyu   build_module¥  s    N(   u   __name__u
   __module__u   runu   build_module(   u
   __locals__(    (    u7   /mit/python/lib/python3.0/distutils/command/build_py.pyu   build_py_2to3  s   
	u   build_py_2to3(   u   __doc__u   __revision__u   sysu   osu   globu   distutils.coreu   Commandu   distutils.errorsu   distutils.utilu   convert_pathu	   distutilsu   logu   build_pyu   lib2to3.refactoru   RefactoringToolu   get_fixers_from_packageu   DistutilsRefactoringToolu   build_py_2to3(    (    (    u7   /mit/python/lib/python3.0/distutils/command/build_py.pyu   <module>   s   
ÿ u