Commit b546a1b3 by Sébastien Eustace

Fix duplicate entries in sdist and wheel

parent 99b4da0c
......@@ -19,6 +19,7 @@
- Fixed a memory leak in the resolver.
- Fixed a recursion error on duplicate dependencies with only different extras.
- Fixed handling of extras.
- Fixed duplicate entries in both sdist and wheel.
## [0.11.5] - 2018-09-04
......
......@@ -68,7 +68,6 @@ class Builder(object):
Finds all files to add to the tarball
"""
excluded = self.find_excluded_files()
src = self._module.path
to_add = []
for include in self._module.includes:
......@@ -87,6 +86,10 @@ class Builder(object):
if file.suffix == ".pyc":
continue
if file in to_add:
# Skip duplicates
continue
self._io.writeln(
" - Adding: <comment>{}</comment>".format(str(file)),
verbosity=self._io.VERBOSITY_VERY_VERBOSE,
......
......@@ -129,13 +129,16 @@ class SdistBuilder(Builder):
if pkg_dir is not None:
package_dir[""] = os.path.relpath(pkg_dir, str(self._path))
packages += _packages
packages += [p for p in _packages if p not in packages]
package_data.update(_package_data)
else:
if include.source is not None:
package_dir[""] = str(include.base.relative_to(self._path))
modules.append(include.elements[0].relative_to(include.base).stem)
module = include.elements[0].relative_to(include.base).stem
if module not in modules:
modules.append(module)
else:
pass
......
......@@ -109,7 +109,6 @@ class WheelBuilder(Builder):
def _copy_module(self, wheel):
excluded = self.find_excluded_files()
src = self._module.path
to_add = []
for include in self._module.includes:
......@@ -133,6 +132,10 @@ class WheelBuilder(Builder):
if file.suffix == ".pyc":
continue
if (file, rel_file) in to_add:
# Skip duplicates
continue
self._io.writeln(
" - Adding: <comment>{}</comment>".format(str(file)),
verbosity=self._io.VERBOSITY_VERY_VERBOSE,
......
......@@ -22,6 +22,7 @@ classifiers = [
packages = [
{ include = "extra_dir/**/*.py" },
{ include = "extra_dir/**/*.py" },
{ include = "my_module.py" },
{ include = "package_with_include" },
]
......
......@@ -416,6 +416,7 @@ def test_package_with_include(mocker):
with tarfile.open(str(sdist), "r") as tar:
names = tar.getnames()
assert len(names) == len(set(names))
assert "with-include-1.2.3/LICENSE" in names
assert "with-include-1.2.3/README.rst" in names
assert "with-include-1.2.3/extra_dir/__init__.py" in names
......
......@@ -114,6 +114,7 @@ def test_package_with_include(mocker):
with zipfile.ZipFile(str(whl)) as z:
names = z.namelist()
assert len(names) == len(set(names))
assert "with_include-1.2.3.dist-info/LICENSE" in names
assert "extra_dir/__init__.py" in names
assert "extra_dir/vcs_excluded.txt" in names
......
......@@ -116,6 +116,7 @@ def test_poetry_with_packages_and_includes():
assert package.packages == [
{"include": "extra_dir/**/*.py"},
{"include": "extra_dir/**/*.py"},
{"include": "my_module.py"},
{"include": "package_with_include"},
]
......
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