summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason R. Coombs <jaraco@jaraco.com>2014-02-11 22:55:49 -0500
committerJason R. Coombs <jaraco@jaraco.com>2014-02-11 22:55:49 -0500
commit9f1f9b144a408770a833cfbee786055dc34dd383 (patch)
tree1988b2923a8fc5d0464a6e203ffcc5238525a04a
parent4104aa38286858dd73eca1da6da25f2c8a170f1a (diff)
parent911fe5e498a58f1a05b2a7b3a34dfcaa7b9dd89d (diff)
downloadpython-setuptools-git-9f1f9b144a408770a833cfbee786055dc34dd383.tar.gz
Merge backout of namespace package __init__ module generation; ref #148.3.0b1
-rw-r--r--CHANGES.txt4
-rw-r--r--setuptools/command/bdist_egg.py30
2 files changed, 7 insertions, 27 deletions
diff --git a/CHANGES.txt b/CHANGES.txt
index 602d8269..52058d22 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -14,6 +14,10 @@ CHANGES
handled properly at runtime. In 2.x it was possible to get away without
including the declaration, but only at the cost of forcing namespace
packages to be imported early, which 3.0 no longer does.
+* Issue #148: When building (bdist_egg), setuptools no longer adds
+ ``__init__.py`` files to namespace packages. Any packages that rely on this
+ behavior will need to create ``__init__.py`` files and include the
+ ``declare_namespace()``.
* Issue #7: Setuptools itself is now distributed as a zip archive in addition to
tar archive. ez_setup.py now uses zip archive. This approach avoids the potential
security vulnerabilities presented by use of tar archives in ez_setup.py.
diff --git a/setuptools/command/bdist_egg.py b/setuptools/command/bdist_egg.py
index c5776158..8f4d44c3 100644
--- a/setuptools/command/bdist_egg.py
+++ b/setuptools/command/bdist_egg.py
@@ -46,8 +46,8 @@ def write_stub(resource, pyfile):
]))
f.close()
-# stub __init__.py for packages distributed without one
-NS_PKG_STUB = '__import__("pkg_resources").declare_namespace(__name__)'
+
+
class bdist_egg(Command):
@@ -198,7 +198,6 @@ class bdist_egg(Command):
to_compile.append(pyfile)
ext_outputs[p] = ext_name.replace(os.sep,'/')
- to_compile.extend(self.make_init_files())
if to_compile:
cmd.byte_compile(to_compile)
if self.distribution.data_files:
@@ -270,30 +269,7 @@ class bdist_egg(Command):
log.warn("zip_safe flag not set; analyzing archive contents...")
return analyze_egg(self.bdist_dir, self.stubs)
- def make_init_files(self):
- """Create missing package __init__ files"""
- init_files = []
- for base,dirs,files in walk_egg(self.bdist_dir):
- if base==self.bdist_dir:
- # don't put an __init__ in the root
- continue
- for name in files:
- if name.endswith('.py'):
- if '__init__.py' not in files:
- pkg = base[len(self.bdist_dir)+1:].replace(os.sep,'.')
- if self.distribution.has_contents_for(pkg):
- log.warn("Creating missing __init__.py for %s",pkg)
- filename = os.path.join(base,'__init__.py')
- if not self.dry_run:
- f = open(filename,'w'); f.write(NS_PKG_STUB)
- f.close()
- init_files.append(filename)
- break
- else:
- # not a package, don't traverse to subdirectories
- dirs[:] = []
-
- return init_files
+
def gen_header(self):
epm = EntryPoint.parse_map(self.distribution.entry_points or '')