Commit f01c17e9 authored by PJ Eby's avatar PJ Eby

Allow .py files found by the include_package_data option to be

automatically included.  Remove duplicate data file matches if both
include_package_data and package_data are used to refer to the same
files.
(merge from trunk)

--HG--
branch : setuptools-0.6
extra : convert_revision : svn%3A6015fed2-1504-0410-9fe1-9d1591cc4771/sandbox/branches/setuptools-0.6%4046791
parent 977692d0
...@@ -2501,6 +2501,11 @@ Release Notes/Change History ...@@ -2501,6 +2501,11 @@ Release Notes/Change History
0.6b3 0.6b3
* Fix bdist_egg not including files in .egg-info subdirectories. * Fix bdist_egg not including files in .egg-info subdirectories.
* Allow .py files found by the include_package_data option to be
automatically included. Remove duplicate data file matches if both
include_package_data and package_data are used to refer to the same
files.
0.6b1 0.6b1
* Strip ``module`` from the end of compiled extension modules when computing * Strip ``module`` from the end of compiled extension modules when computing
the name of a ``.py`` loader/wrapper. (Python's import machinery ignores the name of a ``.py`` loader/wrapper. (Python's import machinery ignores
......
...@@ -92,18 +92,18 @@ class build_py(_build_py): ...@@ -92,18 +92,18 @@ class build_py(_build_py):
self.run_command('egg_info') self.run_command('egg_info')
ei_cmd = self.get_finalized_command('egg_info') ei_cmd = self.get_finalized_command('egg_info')
for path in ei_cmd.filelist.files: for path in ei_cmd.filelist.files:
if path.endswith('.py'):
continue
d,f = os.path.split(assert_relative(path)) d,f = os.path.split(assert_relative(path))
prev = None prev = None
oldf = f
while d and d!=prev and d not in src_dirs: while d and d!=prev and d not in src_dirs:
prev = d prev = d
d, df = os.path.split(d) d, df = os.path.split(d)
f = os.path.join(df, f) f = os.path.join(df, f)
if d in src_dirs: if d in src_dirs:
if path.endswith('.py') and f==oldf:
continue # it's a module, not data
mf.setdefault(src_dirs[d],[]).append(path) mf.setdefault(src_dirs[d],[]).append(path)
def get_data_files(self): pass # kludge 2.4 for lazy computation def get_data_files(self): pass # kludge 2.4 for lazy computation
if sys.version<"2.4": # Python 2.4 already has this code if sys.version<"2.4": # Python 2.4 already has this code
...@@ -167,14 +167,18 @@ class build_py(_build_py): ...@@ -167,14 +167,18 @@ class build_py(_build_py):
globs = (self.exclude_package_data.get('', []) globs = (self.exclude_package_data.get('', [])
+ self.exclude_package_data.get(package, [])) + self.exclude_package_data.get(package, []))
bad = [] bad = []
for pattern in globs: for pattern in globs:
bad.extend( bad.extend(
fnmatch.filter( fnmatch.filter(
files, os.path.join(src_dir, convert_path(pattern)) files, os.path.join(src_dir, convert_path(pattern))
) )
) )
bad = dict.fromkeys(bad) bad = dict.fromkeys(bad)
return [f for f in files if f not in bad] seen = {}
return [
f for f in files if f not in bad
and f not in seen and seen.setdefault(f,1) # ditch dupes
]
def assert_relative(path): def assert_relative(path):
...@@ -199,7 +203,3 @@ setup.py directory, *never* absolute paths. ...@@ -199,7 +203,3 @@ setup.py directory, *never* absolute paths.
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