home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2010 November / maximum-cd-2010-11.iso / DiscContents / calibre-0.7.13.msi / file_2408 (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2010-08-06  |  6.6 KB  |  167 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. import os.path as os
  5. import sys
  6. import fnmatch
  7. from distutils.command.build_py import build_py as _build_py
  8. from distutils.util import convert_path
  9. from glob import glob
  10.  
  11. class build_py(_build_py):
  12.     
  13.     def finalize_options(self):
  14.         _build_py.finalize_options(self)
  15.         self.package_data = self.distribution.package_data
  16.         if not self.distribution.exclude_package_data:
  17.             pass
  18.         self.exclude_package_data = { }
  19.         if 'data_files' in self.__dict__:
  20.             del self.__dict__['data_files']
  21.         
  22.  
  23.     
  24.     def run(self):
  25.         if not (self.py_modules) and not (self.packages):
  26.             return None
  27.         if self.py_modules:
  28.             self.build_modules()
  29.         
  30.         if self.packages:
  31.             self.build_packages()
  32.             self.build_package_data()
  33.         
  34.         self.byte_compile(_build_py.get_outputs(self, include_bytecode = 0))
  35.  
  36.     
  37.     def __getattr__(self, attr):
  38.         if attr == 'data_files':
  39.             self.data_files = files = self._get_data_files()
  40.             return files
  41.         return _build_py.__getattr__(self, attr)
  42.  
  43.     
  44.     def _get_data_files(self):
  45.         self.analyze_manifest()
  46.         data = []
  47.         for package in ():
  48.             src_dir = self.get_package_dir(package)
  49.             build_dir = os.path.join(*[
  50.                 self.build_lib] + package.split('.'))
  51.             plen = len(src_dir) + 1
  52.             filenames = [ file[plen:] for file in self.find_data_files(package, src_dir) ]
  53.             data.append((package, src_dir, build_dir, filenames))
  54.         return data
  55.  
  56.     
  57.     def find_data_files(self, package, src_dir):
  58.         globs = self.package_data.get('', []) + self.package_data.get(package, [])
  59.         files = self.manifest_files.get(package, [])[:]
  60.         for pattern in globs:
  61.             files.extend(glob(os.path.join(src_dir, convert_path(pattern))))
  62.         
  63.         return self.exclude_data_files(package, src_dir, files)
  64.  
  65.     
  66.     def build_package_data(self):
  67.         lastdir = None
  68.         for package, src_dir, build_dir, filenames in self.data_files:
  69.             for filename in filenames:
  70.                 target = os.path.join(build_dir, filename)
  71.                 self.mkpath(os.path.dirname(target))
  72.                 self.copy_file(os.path.join(src_dir, filename), target)
  73.             
  74.         
  75.  
  76.     
  77.     def analyze_manifest(self):
  78.         self.manifest_files = mf = { }
  79.         if not self.distribution.include_package_data:
  80.             return None
  81.         src_dirs = { }
  82.         for package in ():
  83.             src_dirs[assert_relative(self.get_package_dir(package))] = package
  84.         self.run_command('egg_info')
  85.         ei_cmd = self.get_finalized_command('egg_info')
  86.         for path in ei_cmd.filelist.files:
  87.             (d, f) = os.path.split(assert_relative(path))
  88.             prev = None
  89.             oldf = f
  90.             while d and d != prev and d not in src_dirs:
  91.                 prev = d
  92.                 (d, df) = os.path.split(d)
  93.                 f = os.path.join(df, f)
  94.                 continue
  95.                 self.distribution.include_package_data
  96.             if d in src_dirs:
  97.                 if path.endswith('.py') and f == oldf:
  98.                     continue
  99.                 
  100.                 mf.setdefault(src_dirs[d], []).append(path)
  101.                 continue
  102.         
  103.  
  104.     
  105.     def get_data_files(self):
  106.         pass
  107.  
  108.     if sys.version < '2.4':
  109.         
  110.         def get_outputs(self, include_bytecode = 1):
  111.             return [] + [ os.path.join(build_dir, filename) for package, src_dir, build_dir, filenames in self.data_files for filename in filenames ]
  112.  
  113.     
  114.     
  115.     def check_package(self, package, package_dir):
  116.         
  117.         try:
  118.             return self.packages_checked[package]
  119.         except KeyError:
  120.             pass
  121.  
  122.         init_py = _build_py.check_package(self, package, package_dir)
  123.         self.packages_checked[package] = init_py
  124.         if not init_py or not (self.distribution.namespace_packages):
  125.             return init_py
  126.         for pkg in self.distribution.namespace_packages:
  127.             if pkg == package or pkg.startswith(package + '.'):
  128.                 break
  129.                 continue
  130.             not (self.distribution.namespace_packages)
  131.         else:
  132.             return init_py
  133.         f = None(init_py, 'rU')
  134.         if 'declare_namespace' not in f.read():
  135.             log = log
  136.             import distutils
  137.             log.warn('WARNING: %s is a namespace package, but its __init__.py does\nnot declare_namespace(); setuptools 0.7 will REQUIRE this!\n(See the setuptools manual under "Namespace Packages" for details.)\n', package)
  138.         
  139.         f.close()
  140.         return init_py
  141.  
  142.     
  143.     def initialize_options(self):
  144.         self.packages_checked = { }
  145.         _build_py.initialize_options(self)
  146.  
  147.     
  148.     def exclude_data_files(self, package, src_dir, files):
  149.         globs = self.exclude_package_data.get('', []) + self.exclude_package_data.get(package, [])
  150.         bad = []
  151.         for pattern in globs:
  152.             bad.extend(fnmatch.filter(files, os.path.join(src_dir, convert_path(pattern))))
  153.         
  154.         bad = dict.fromkeys(bad)
  155.         seen = { }
  156.         return _[1]
  157.  
  158.  
  159.  
  160. def assert_relative(path):
  161.     if not os.path.isabs(path):
  162.         return path
  163.     DistutilsSetupError = DistutilsSetupError
  164.     import distutils.errors
  165.     raise DistutilsSetupError('Error: setup script specifies an absolute path:\n\n    %s\n\nsetup() arguments must *always* be /-separated paths relative to the\nsetup.py directory, *never* absolute paths.\n' % path)
  166.  
  167.