From: DongHun Kwak Date: Mon, 14 Jan 2019 01:40:39 +0000 (+0900) Subject: Imported Upstream version 38.2.4 X-Git-Tag: upstream/38.2.4^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=dfe03341362725d1965828819425245455729c3d;p=platform%2Fupstream%2Fpython-setuptools.git Imported Upstream version 38.2.4 --- diff --git a/CHANGES.rst b/CHANGES.rst index 3886854..3694b15 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -1,3 +1,13 @@ +v38.2.4 +------- + +* #1220: Fix `data_files` handling when installing from wheel. + +v38.2.3 +------- + +* fix Travis' Python 3.3 job. + v38.2.2 ------- diff --git a/setup.cfg b/setup.cfg index b2e68c6..d6f1a19 100755 --- a/setup.cfg +++ b/setup.cfg @@ -1,5 +1,5 @@ [bumpversion] -current_version = 38.2.3 +current_version = 38.2.4 commit = True tag = True diff --git a/setup.py b/setup.py index 61d2cea..0e3e42c 100755 --- a/setup.py +++ b/setup.py @@ -89,7 +89,7 @@ def pypi_link(pkg_filename): setup_params = dict( name="setuptools", - version="38.2.3", + version="38.2.4", description="Easily download, build, install, upgrade, and uninstall " "Python packages", author="Python Packaging Authority", diff --git a/setuptools/tests/test_wheel.py b/setuptools/tests/test_wheel.py index 408c357..b6be6f1 100644 --- a/setuptools/tests/test_wheel.py +++ b/setuptools/tests/test_wheel.py @@ -444,6 +444,42 @@ WHEEL_INSTALL_TESTS = ( '''), ), + dict( + id='data_in_package', + file_defs={ + 'foo': { + '__init__.py': '', + 'data_dir': { + 'data.txt': DALS( + ''' + Some data... + ''' + ), + } + } + }, + setup_kwargs=dict( + packages=['foo'], + data_files=[('foo/data_dir', ['foo/data_dir/data.txt'])], + ), + install_tree=DALS( + ''' + foo-1.0-py{py_version}.egg/ + |-- EGG-INFO/ + | |-- DESCRIPTION.rst + | |-- PKG-INFO + | |-- RECORD + | |-- WHEEL + | |-- metadata.json + | |-- top_level.txt + |-- foo/ + | |-- __init__.py + | |-- data_dir/ + | | |-- data.txt + ''' + ), + ), + ) @pytest.mark.parametrize( diff --git a/setuptools/wheel.py b/setuptools/wheel.py index c232721..9ffe434 100644 --- a/setuptools/wheel.py +++ b/setuptools/wheel.py @@ -28,6 +28,28 @@ except ImportError: ''' +def unpack(src_dir, dst_dir): + '''Move everything under `src_dir` to `dst_dir`, and delete the former.''' + for dirpath, dirnames, filenames in os.walk(src_dir): + subdir = os.path.relpath(dirpath, src_dir) + for f in filenames: + src = os.path.join(dirpath, f) + dst = os.path.join(dst_dir, subdir, f) + os.renames(src, dst) + for n, d in reversed(list(enumerate(dirnames))): + src = os.path.join(dirpath, d) + dst = os.path.join(dst_dir, subdir, d) + if not os.path.exists(dst): + # Directory does not exist in destination, + # rename it and prune it from os.walk list. + os.renames(src, dst) + del dirnames[n] + # Cleanup. + for dirpath, dirnames, filenames in os.walk(src_dir, topdown=True): + assert not filenames + os.rmdir(dirpath) + + class Wheel(object): def __init__(self, filename): @@ -125,10 +147,7 @@ class Wheel(object): os.path.join(dist_data, d) for d in ('data', 'headers', 'purelib', 'platlib') )): - for entry in os.listdir(subdir): - os.rename(os.path.join(subdir, entry), - os.path.join(destination_eggdir, entry)) - os.rmdir(subdir) + unpack(subdir, destination_eggdir) if os.path.exists(dist_data): os.rmdir(dist_data) # Fix namespace packages.