Commit 9274fa3c authored by Fred Drake's avatar Fred Drake

remove excess blank lines, and apply whitespace more in line with the Python

style guidelines in PEP 8

--HG--
branch : setuptools
extra : convert_revision : svn%3A6015fed2-1504-0410-9fe1-9d1591cc4771/sandbox/trunk/setuptools%4040896
parent 1c904e7a
...@@ -8,4 +8,4 @@ __all__ = ['test', 'depends'] ...@@ -8,4 +8,4 @@ __all__ = ['test', 'depends']
distutils.command.__path__.extend(__path__) distutils.command.__path__.extend(__path__)
distutils.command.__all__.extend( distutils.command.__all__.extend(
[cmd for cmd in __all__ if cmd not in distutils.command.__all__] [cmd for cmd in __all__ if cmd not in distutils.command.__all__]
) )
import os.path
from distutils.command.build_py import build_py as _build_py from distutils.command.build_py import build_py as _build_py
from distutils.util import convert_path from distutils.util import convert_path
from glob import glob from glob import glob
import os.path
class build_py(_build_py):
class build_py(_build_py):
"""Enhanced 'build_py' command that includes data files with packages """Enhanced 'build_py' command that includes data files with packages
The data files are specified via a 'package_data' argument to 'setup()'. The data files are specified via a 'package_data' argument to 'setup()'.
...@@ -17,13 +18,10 @@ class build_py(_build_py): ...@@ -17,13 +18,10 @@ class build_py(_build_py):
def finalize_options(self): def finalize_options(self):
_build_py.finalize_options(self) _build_py.finalize_options(self)
self.package_data = self.distribution.package_data self.package_data = self.distribution.package_data
self.data_files = self.get_data_files() self.data_files = self.get_data_files()
def run(self): def run(self):
"""Build modules, packages, and copy data files to build directory""" """Build modules, packages, and copy data files to build directory"""
if not self.py_modules and not self.packages: if not self.py_modules and not self.packages:
return return
...@@ -36,21 +34,17 @@ class build_py(_build_py): ...@@ -36,21 +34,17 @@ class build_py(_build_py):
# Only compile actual .py files, using our base class' idea of what our # Only compile actual .py files, using our base class' idea of what our
# output files are. # output files are.
self.byte_compile(_build_py.get_outputs(self,include_bytecode=0)) self.byte_compile(_build_py.get_outputs(self, include_bytecode=0))
def get_data_files(self): def get_data_files(self):
"""Generate list of '(package,src_dir,build_dir,filenames)' tuples""" """Generate list of '(package,src_dir,build_dir,filenames)' tuples"""
data = [] data = []
for package in self.packages: for package in self.packages:
# Locate package source directory # Locate package source directory
src_dir = self.get_package_dir(package) src_dir = self.get_package_dir(package)
# Compute package build directory # Compute package build directory
build_dir = os.path.join(*([self.build_lib]+package.split('.'))) build_dir = os.path.join(*([self.build_lib] + package.split('.')))
# Length of path to strip from found files # Length of path to strip from found files
plen = len(src_dir)+1 plen = len(src_dir)+1
...@@ -58,44 +52,30 @@ class build_py(_build_py): ...@@ -58,44 +52,30 @@ class build_py(_build_py):
# Strip directory from globbed filenames # Strip directory from globbed filenames
filenames = [ filenames = [
file[plen:] for file in self.find_data_files(package, src_dir) file[plen:] for file in self.find_data_files(package, src_dir)
] ]
data.append( (package, src_dir, build_dir, filenames) ) data.append( (package, src_dir, build_dir, filenames) )
return data return data
def find_data_files(self, package, src_dir): def find_data_files(self, package, src_dir):
"""Return filenames for package's data files in 'src_dir'""" """Return filenames for package's data files in 'src_dir'"""
globs = (self.package_data.get('', [])
globs = self.package_data.get('',[])+self.package_data.get(package,[]) + self.package_data.get(package, []))
files = [] files = []
for pattern in globs: for pattern in globs:
# Each pattern has to be converted to a platform-specific path # Each pattern has to be converted to a platform-specific path
files.extend(glob(os.path.join(src_dir, convert_path(pattern)))) files.extend(glob(os.path.join(src_dir, convert_path(pattern))))
return files return files
def build_package_data(self): def build_package_data(self):
"""Copy data files into build directory""" """Copy data files into build directory"""
lastdir = None lastdir = None
for package, src_dir, build_dir, filenames in self.data_files: for package, src_dir, build_dir, filenames in self.data_files:
for filename in filenames: for filename in filenames:
target = os.path.join(build_dir,filename) target = os.path.join(build_dir, filename)
self.mkpath(os.path.dirname(target)) self.mkpath(os.path.dirname(target))
self.copy_file(os.path.join(src_dir,filename), target) self.copy_file(os.path.join(src_dir, filename), target)
def get_outputs(self, include_bytecode=1): def get_outputs(self, include_bytecode=1):
"""Return complete list of files copied to the build directory """Return complete list of files copied to the build directory
This includes both '.py' files and data files, as well as '.pyc' and This includes both '.py' files and data files, as well as '.pyc' and
...@@ -103,21 +83,8 @@ class build_py(_build_py): ...@@ -103,21 +83,8 @@ class build_py(_build_py):
the 'install_lib' command to do its job properly, and to generate a the 'install_lib' command to do its job properly, and to generate a
correct installation manifest.) correct installation manifest.)
""" """
return _build_py.get_outputs(self, include_bytecode) + [
return _build_py.get_outputs(self,include_bytecode) + [ os.path.join(build_dir, filename)
os.path.join(build_dir,filename) for package, src_dir, build_dir,filenames in self.data_files
for package,src_dir,build_dir,filenames in self.data_files for filename in filenames
for filename in filenames ]
]
import os
import sys
from distutils.cmd import Command from distutils.cmd import Command
import os, sys
class depends(Command): class depends(Command):
"""Download and install dependencies, if needed""" """Download and install dependencies, if needed"""
description = "download and install dependencies, if needed" description = "download and install dependencies, if needed"
...@@ -13,28 +14,27 @@ class depends(Command): ...@@ -13,28 +14,27 @@ class depends(Command):
"directory where dependencies will be downloaded and built"), "directory where dependencies will be downloaded and built"),
('ignore-extra-args', 'i', ('ignore-extra-args', 'i',
"ignore options that won't be passed to child setup scripts"), "ignore options that won't be passed to child setup scripts"),
] ]
path_attrs = [ path_attrs = [
# Note: these must be in *reverse* order, as they are pushed onto the # Note: these must be in *reverse* order, as they are pushed onto the
# *front* of a copy of sys.path. # *front* of a copy of sys.path.
('install','install_libbase'), # installation base if extra_path ('install', 'install_libbase'), # installation base if extra_path
('install_lib','install_dir'), # where modules are installed ('install_lib', 'install_dir'), # where modules are installed
] ]
# Command options that can be safely passed to dependencies' setup scripts # Command options that can be safely passed to dependencies' setup scripts
safe_opts = { safe_opts = {
'install': [ 'install': [
'prefix','exec-prefix','home','install-base','install-platbase', 'prefix', 'exec-prefix', 'home', 'install-base',
'root','optimize','force','verbose','quiet' 'install-platbase', 'root', 'optimize', 'force', 'verbose', 'quiet'
], ],
'build': ['compiler','debug','force','verbose','quiet'], 'build': ['compiler', 'debug', 'force', 'verbose', 'quiet'],
} }
# Options with string arguments that are *not* directories or files, and # Options with string arguments that are *not* directories or files, and
# so should *not* have absolute-path fixups applied. # so should *not* have absolute-path fixups applied.
non_fs_opts = {'build':['compiler'] } non_fs_opts = {'build': ['compiler']}
def initialize_options(self): def initialize_options(self):
self.temp = None; self.ignore_extra_args = None self.temp = None; self.ignore_extra_args = None
...@@ -85,7 +85,7 @@ class depends(Command): ...@@ -85,7 +85,7 @@ class depends(Command):
needed = [ needed = [
dep for dep in self.distribution.requires if self.is_needed(dep) dep for dep in self.distribution.requires if self.is_needed(dep)
] ]
if not needed: if not needed:
self.announce("all dependencies are present and up-to-date") self.announce("all dependencies are present and up-to-date")
...@@ -97,7 +97,7 @@ class depends(Command): ...@@ -97,7 +97,7 @@ class depends(Command):
self.announce( self.announce(
"dependencies will be installed using:\n "+' '.join(argv)+'\n' "dependencies will be installed using:\n "+' '.join(argv)+'\n'
) )
# Alert for unsupported commands/options, unless '-i' was used # Alert for unsupported commands/options, unless '-i' was used
if self.unsafe_options: if self.unsafe_options:
...@@ -109,31 +109,26 @@ class depends(Command): ...@@ -109,31 +109,26 @@ class depends(Command):
" force the build to proceed.\nOtherwise, you will need" " force the build to proceed.\nOtherwise, you will need"
" to omit the unsupported options,\nor install the" " to omit the unsupported options,\nor install the"
" dependencies manually." " dependencies manually."
) )
# Alert the user to missing items # Alert the user to missing items
fmt = "\t%s\t%s\n" fmt = "\t%s\t%s\n"
items = [fmt % (dep.full_name(),dep.homepage) for dep in needed] items = [fmt % (dep.full_name(), dep.homepage) for dep in needed]
items.insert(0,"Please install the following packages *first*:\n") items.insert(0,"Please install the following packages *first*:\n")
items.append('') items.append('')
raise SystemExit('\n'.join(items)) # dump msg to stderr and exit raise SystemExit('\n'.join(items)) # dump msg to stderr and exit
def warn_unsafe_options_used(self): def warn_unsafe_options_used(self):
lines = []; write = lines.append lines = []; write = lines.append
write("the following command options are not supported for building") write("the following command options are not supported for building")
write("dependencies, and will be IGNORED:") write("dependencies, and will be IGNORED:")
for cmd,line in self.unsafe_options.items(): for cmd,line in self.unsafe_options.items():
write('\t%s %s' % (cmd,' '.join(line))) write('\t%s %s' % (cmd, ' '.join(line)))
write('') write('')
self.warn('\n'.join(lines)) self.warn('\n'.join(lines))
def is_needed(self,dep): def is_needed(self,dep):
"""Does the specified dependency need to be installed/updated?""" """Does the specified dependency need to be installed/updated?"""
self.announce("searching for "+dep.full_name()) self.announce("searching for "+dep.full_name())
version = dep.get_version(self.search_path) version = dep.get_version(self.search_path)
...@@ -152,13 +147,3 @@ class depends(Command): ...@@ -152,13 +147,3 @@ class depends(Command):
else: else:
self.announce(status+" (update needed)") self.announce(status+" (update needed)")
return True return True
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment