]> git.rkrishnan.org Git - tahoe-lafs/zfec.git/blob - zfec/setuptools-0.6c15dev.egg/setuptools/command/install_lib.py
setup: install_requires argparse only if Python version is < 2.7
[tahoe-lafs/zfec.git] / zfec / setuptools-0.6c15dev.egg / setuptools / command / install_lib.py
1 from distutils.command.install_lib import install_lib as _install_lib
2 import os
3
4 class install_lib(_install_lib):
5     """Don't add compiled flags to filenames of non-Python files"""
6
7     def _bytecode_filenames (self, py_filenames):
8         bytecode_files = []
9         for py_file in py_filenames:
10             if not py_file.endswith('.py'):
11                 continue
12             if self.compile:
13                 bytecode_files.append(py_file + "c")
14             if self.optimize > 0:
15                 bytecode_files.append(py_file + "o")
16
17         return bytecode_files
18
19     def run(self):
20         self.build()
21         outfiles = self.install()
22         if outfiles is not None:
23             # always compile, in case we have any extension stubs to deal with
24             self.byte_compile(outfiles)
25
26     def get_exclusions(self):
27         exclude = {}
28         nsp = self.distribution.namespace_packages
29
30         if (nsp and self.get_finalized_command('install')
31                .single_version_externally_managed
32         ):
33             for pkg in nsp:
34                 parts = pkg.split('.')
35                 while parts:
36                     pkgdir = os.path.join(self.install_dir, *parts)
37                     for f in '__init__.py', '__init__.pyc', '__init__.pyo':
38                         exclude[os.path.join(pkgdir,f)] = 1
39                     parts.pop()
40         return exclude
41
42     def copy_tree(
43         self, infile, outfile,
44         preserve_mode=1, preserve_times=1, preserve_symlinks=0, level=1
45     ):
46         assert preserve_mode and preserve_times and not preserve_symlinks
47         exclude = self.get_exclusions()
48
49         if not exclude:
50             return _install_lib.copy_tree(self, infile, outfile)
51
52         # Exclude namespace package __init__.py* files from the output
53
54         from setuptools.archive_util import unpack_directory
55         from distutils import log
56
57         outfiles = []
58
59         def pf(src, dst):
60             if dst in exclude:
61                 log.warn("Skipping installation of %s (namespace package)",dst)
62                 return False
63
64             log.info("copying %s -> %s", src, os.path.dirname(dst))
65             outfiles.append(dst)
66             return dst
67
68         unpack_directory(infile, outfile, pf)
69         return outfiles
70
71     def get_outputs(self):
72         outputs = _install_lib.get_outputs(self)
73         exclude = self.get_exclusions()
74         if exclude:
75             return [f for f in outputs if f not in exclude]
76         return outputs