summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGES.txt8
-rw-r--r--pkg_resources/__init__.py2
-rw-r--r--pkg_resources/tests/test_pkg_resources.py2
-rw-r--r--pkg_resources/tests/test_resources.py4
-rw-r--r--scripts/upload-old-releases-as-zip.py242
-rw-r--r--setuptools/__init__.py2
-rwxr-xr-xsetuptools/command/alias.py2
-rw-r--r--setuptools/command/build_py.py34
-rwxr-xr-xsetuptools/command/easy_install.py2
-rwxr-xr-xsetuptools/command/egg_info.py1
-rwxr-xr-xsetuptools/command/install_egg_info.py2
-rw-r--r--setuptools/command/test.py1
-rw-r--r--setuptools/dist.py1
-rw-r--r--setuptools/extension.py2
-rwxr-xr-xsetuptools/package_index.py2
-rwxr-xr-xsetuptools/sandbox.py2
-rw-r--r--setuptools/ssl_support.py2
-rw-r--r--setuptools/tests/test_dist_info.py2
-rw-r--r--setuptools/tests/test_egg_info.py2
-rw-r--r--setuptools/tests/test_sdist.py1
-rw-r--r--setuptools/version.py2
21 files changed, 51 insertions, 267 deletions
diff --git a/CHANGES.txt b/CHANGES.txt
index 339b137d..c8a9f8ab 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -2,6 +2,12 @@
CHANGES
=======
+19.3.1
+------
+
+* Issue #341: Correct error in path handling of package data
+ files in ``build_py`` command when package is empty.
+
----
19.3
----
@@ -235,6 +241,8 @@ CHANGES
parsed requirements.
* Pull Request #133: Removed ``setuptools.tests`` from the
installed packages.
+* Pull Request #129: Address deprecation warning due to usage
+ of imp module.
----
15.2
diff --git a/pkg_resources/__init__.py b/pkg_resources/__init__.py
index 46db5cc7..50b86cdb 100644
--- a/pkg_resources/__init__.py
+++ b/pkg_resources/__init__.py
@@ -46,7 +46,7 @@ except ImportError:
import imp as _imp
from pkg_resources.extern import six
-from pkg_resources.extern.six.moves import urllib
+from pkg_resources.extern.six.moves import urllib, map
# capture these to bypass sandboxing
from os import utime
diff --git a/pkg_resources/tests/test_pkg_resources.py b/pkg_resources/tests/test_pkg_resources.py
index 31eee635..8b276ffc 100644
--- a/pkg_resources/tests/test_pkg_resources.py
+++ b/pkg_resources/tests/test_pkg_resources.py
@@ -12,6 +12,8 @@ import stat
import distutils.dist
import distutils.command.install_egg_info
+from pkg_resources.extern.six.moves import map
+
import pytest
import pkg_resources
diff --git a/pkg_resources/tests/test_resources.py b/pkg_resources/tests/test_resources.py
index 7176cc70..6f68bf77 100644
--- a/pkg_resources/tests/test_resources.py
+++ b/pkg_resources/tests/test_resources.py
@@ -4,6 +4,8 @@ import tempfile
import shutil
import string
+from pkg_resources.extern.six.moves import map
+
import pytest
from pkg_resources.extern import packaging
@@ -158,7 +160,7 @@ class TestDistro:
for i in range(3):
targets = list(ws.resolve(parse_requirements("Foo"), ad))
assert targets == [Foo]
- list(map(ws.add,targets))
+ list(map(ws.add, targets))
with pytest.raises(VersionConflict):
ws.resolve(parse_requirements("Foo==0.9"), ad)
ws = WorkingSet([]) # reset
diff --git a/scripts/upload-old-releases-as-zip.py b/scripts/upload-old-releases-as-zip.py
deleted file mode 100644
index 38cfcd55..00000000
--- a/scripts/upload-old-releases-as-zip.py
+++ /dev/null
@@ -1,242 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-
-# declare and require dependencies
-__requires__ = [
- 'twine',
-]; __import__('pkg_resources')
-
-import errno
-import glob
-import hashlib
-import json
-import os
-import shutil
-import tarfile
-import codecs
-import urllib.request
-import urllib.parse
-import urllib.error
-from distutils.version import LooseVersion
-
-from twine.commands import upload
-
-
-OK = '\033[92m'
-FAIL = '\033[91m'
-END = '\033[0m'
-DISTRIBUTION = "setuptools"
-
-
-class SetuptoolsOldReleasesWithoutZip:
- """docstring for SetuptoolsOldReleases"""
-
- def __init__(self):
- self.dirpath = './dist'
- os.makedirs(self.dirpath, exist_ok=True)
- print("Downloading %s releases..." % DISTRIBUTION)
- print("All releases will be downloaded to %s" % self.dirpath)
- self.data_json_setuptools = self.get_json_data(DISTRIBUTION)
- self.valid_releases_numbers = sorted([
- release
- for release in self.data_json_setuptools['releases']
- # This condition is motivated by 13.0 release, which
- # comes as "13.0": [], in the json
- if self.data_json_setuptools['releases'][release]
- ], key=LooseVersion)
- self.total_downloaded_ok = 0
-
- def get_json_data(self, package_name):
- """
- "releases": {
- "0.7.2": [
- {
- "has_sig": false,
- "upload_time": "2013-06-09T16:10:00",
- "comment_text": "",
- "python_version": "source",
- "url": "https://pypi.python.org/packages/source/s/setuptools/setuptools-0.7.2.tar.gz", # NOQA
- "md5_digest": "de44cd90f8a1c713d6c2bff67bbca65d",
- "downloads": 159014,
- "filename": "setuptools-0.7.2.tar.gz",
- "packagetype": "sdist",
- "size": 633077
- }
- ],
- "0.7.3": [
- {
- "has_sig": false,
- "upload_time": "2013-06-18T21:08:56",
- "comment_text": "",
- "python_version": "source",
- "url": "https://pypi.python.org/packages/source/s/setuptools/setuptools-0.7.3.tar.gz", # NOQA
- "md5_digest": "c854adacbf9067d330a847f06f7a8eba",
- "downloads": 30594,
- "filename": "setuptools-0.7.3.tar.gz",
- "packagetype": "sdist",
- "size": 751152
- }
- ],
- "12.3": [
- {
- "has_sig": false,
- "upload_time": "2015-02-26T19:15:51",
- "comment_text": "",
- "python_version": "3.4",
- "url": "https://pypi.python.org/packages/3.4/s/setuptools/setuptools-12.3-py2.py3-none-any.whl", # NOQA
- "md5_digest": "31f51a38497a70efadf5ce8d4c2211ab",
- "downloads": 288451,
- "filename": "setuptools-12.3-py2.py3-none-any.whl",
- "packagetype": "bdist_wheel",
- "size": 501904
- },
- {
- "has_sig": false,
- "upload_time": "2015-02-26T19:15:43",
- "comment_text": "",
- "python_version": "source",
- "url": "https://pypi.python.org/packages/source/s/setuptools/setuptools-12.3.tar.gz", # NOQA
- "md5_digest": "67614b6d560fa4f240e99cd553ec7f32",
- "downloads": 110109,
- "filename": "setuptools-12.3.tar.gz",
- "packagetype": "sdist",
- "size": 635025
- },
- {
- "has_sig": false,
- "upload_time": "2015-02-26T19:15:47",
- "comment_text": "",
- "python_version": "source",
- "url": "https://pypi.python.org/packages/source/s/setuptools/setuptools-12.3.zip", # NOQA
- "md5_digest": "abc799e7db6e7281535bf342bfc41a12",
- "downloads": 67539,
- "filename": "setuptools-12.3.zip",
- "packagetype": "sdist",
- "size": 678783
- }
- ],
- """
- url = "https://pypi.python.org/pypi/%s/json" % (package_name,)
- resp = urllib.request.urlopen(urllib.request.Request(url))
- charset = resp.info().get_content_charset()
- reader = codecs.getreader(charset)(resp)
- data = json.load(reader)
-
- # Mainly for debug.
- json_filename = "%s/%s.json" % (self.dirpath, DISTRIBUTION)
- with open(json_filename, 'w') as outfile:
- json.dump(
- data,
- outfile,
- sort_keys=True,
- indent=4,
- separators=(',', ': '),
- )
-
- return data
-
- def get_setuptools_releases_without_zip_counterpart(self):
- # Get set(all_valid_releases) - set(releases_with_zip), so now we have
- # the releases without zip.
- return set(self.valid_releases_numbers) - set([
- release
- for release in self.valid_releases_numbers
- for same_version_release_dict in self.data_json_setuptools['releases'][release] # NOQA
- if 'zip' in same_version_release_dict['filename']
- ])
-
- def download_setuptools_releases_without_zip_counterpart(self):
- try:
- releases_without_zip = self.get_setuptools_releases_without_zip_counterpart() # NOQA
- failed_md5_releases = []
- # This is a "strange" loop, going through all releases and
- # testing only the release I need to download, but I thought it
- # would be mouch more readable than trying to iterate through
- # releases I need and get into traverse hell values inside dicts
- # inside dicts of the json to get the distribution's url to
- # download.
- for release in self.valid_releases_numbers:
- if release in releases_without_zip:
- for same_version_release_dict in self.data_json_setuptools['releases'][release]: # NOQA
- if 'tar.gz' in same_version_release_dict['filename']:
- print("Downloading %s..." % release)
- local_file = '%s/%s' % (
- self.dirpath,
- same_version_release_dict["filename"]
- )
- urllib.request.urlretrieve(
- same_version_release_dict["url"],
- local_file
- )
- targz = open(local_file, 'rb').read()
- hexdigest = hashlib.md5(targz).hexdigest()
- if (hexdigest != same_version_release_dict['md5_digest']): # NOQA
- print(FAIL + "FAIL: md5 for %s didn't match!" % release + END) # NOQA
- failed_md5_releases.append(release)
- else:
- self.total_downloaded_ok += 1
- print('Total releases without zip: %s' % len(releases_without_zip))
- print('Total downloaded: %s' % self.total_downloaded_ok)
- if failed_md5_releases:
- msg = FAIL + (
- "FAIL: these releases %s failed the md5 check!" %
- ','.join(failed_md5_releases)
- ) + END
- raise Exception(msg)
- elif self.total_downloaded_ok != len(releases_without_zip):
- msg = FAIL + (
- "FAIL: Unknown error occured. Please check the logs."
- ) + END
- raise Exception(msg)
- else:
- print(OK + "All releases downloaded and md5 checked." + END)
-
- except OSError as e:
- if e.errno != errno.EEXIST:
- raise e
-
- def convert_targz_to_zip(self):
- print("Converting the tar.gz to zip...")
- files = glob.glob('%s/*.tar.gz' % self.dirpath)
- total_converted = 0
- for targz in sorted(files, key=LooseVersion):
- # Extract and remove tar.
- tar = tarfile.open(targz)
- tar.extractall(path=self.dirpath)
- tar.close()
- os.remove(targz)
-
- # Zip the extracted tar.
- setuptools_folder_path = targz.replace('.tar.gz', '')
- setuptools_folder_name = setuptools_folder_path.split("/")[-1]
- print(setuptools_folder_name)
- shutil.make_archive(
- setuptools_folder_path,
- 'zip',
- self.dirpath,
- setuptools_folder_name
- )
- # Exclude extracted tar folder.
- shutil.rmtree(setuptools_folder_path.replace('.zip', ''))
- total_converted += 1
- print('Total converted: %s' % total_converted)
- if self.total_downloaded_ok != total_converted:
- msg = FAIL + (
- "FAIL: Total number of downloaded releases is different"
- " from converted ones. Please check the logs."
- ) + END
- raise Exception(msg)
- print("Done with the tar.gz->zip. Check folder %s." % main.dirpath)
-
- def upload_zips_to_pypi(self):
- print('Uploading to pypi...')
- zips = sorted(glob.glob('%s/*.zip' % self.dirpath), key=LooseVersion)
- print("simulated upload of", zips); return
- upload.upload(dists=zips)
-
-
-if __name__ == '__main__':
- main = SetuptoolsOldReleasesWithoutZip()
- main.download_setuptools_releases_without_zip_counterpart()
- main.convert_targz_to_zip()
- main.upload_zips_to_pypi()
diff --git a/setuptools/__init__.py b/setuptools/__init__.py
index ec0d5dc2..67b57e4f 100644
--- a/setuptools/__init__.py
+++ b/setuptools/__init__.py
@@ -8,7 +8,7 @@ from distutils.core import Command as _Command
from distutils.util import convert_path
from fnmatch import fnmatchcase
-from setuptools.extern.six.moves import filterfalse
+from setuptools.extern.six.moves import filterfalse, map
import setuptools.version
from setuptools.extension import Extension
diff --git a/setuptools/command/alias.py b/setuptools/command/alias.py
index 452a9244..4532b1cc 100755
--- a/setuptools/command/alias.py
+++ b/setuptools/command/alias.py
@@ -1,5 +1,7 @@
from distutils.errors import DistutilsOptionError
+from setuptools.extern.six.moves import map
+
from setuptools.command.setopt import edit_config, option_base, config_file
diff --git a/setuptools/command/build_py.py b/setuptools/command/build_py.py
index 8a50f032..8623c777 100644
--- a/setuptools/command/build_py.py
+++ b/setuptools/command/build_py.py
@@ -9,6 +9,7 @@ import distutils.errors
import collections
import itertools
+from setuptools.extern.six.moves import map
try:
from setuptools.lib2to3_ex import Mixin2to3
@@ -59,9 +60,10 @@ class build_py(orig.build_py, Mixin2to3):
self.byte_compile(orig.build_py.get_outputs(self, include_bytecode=0))
def __getattr__(self, attr):
- if attr == 'data_files': # lazily compute data files
- self.data_files = files = self._get_data_files()
- return files
+ "lazily compute data files"
+ if attr == 'data_files':
+ self.data_files = self._get_data_files()
+ return self.data_files
return orig.build_py.__getattr__(self, attr)
def build_module(self, module, module_file, package):
@@ -74,23 +76,21 @@ class build_py(orig.build_py, Mixin2to3):
def _get_data_files(self):
"""Generate list of '(package,src_dir,build_dir,filenames)' tuples"""
self.analyze_manifest()
- data = []
- for package in self.packages or ():
- # Locate package source directory
- src_dir = self.get_package_dir(package)
+ return list(map(self._get_pkg_data_files, self.packages or ()))
- # Compute package build directory
- build_dir = os.path.join(*([self.build_lib] + package.split('.')))
+ def _get_pkg_data_files(self, package):
+ # Locate package source directory
+ src_dir = self.get_package_dir(package)
- # Length of path to strip from found files
- plen = len(src_dir) + 1
+ # Compute package build directory
+ build_dir = os.path.join(*([self.build_lib] + package.split('.')))
- # Strip directory from globbed filenames
- filenames = [
- file[plen:] for file in self.find_data_files(package, src_dir)
- ]
- data.append((package, src_dir, build_dir, filenames))
- return data
+ # Strip directory from globbed filenames
+ filenames = [
+ os.path.relpath(file, src_dir)
+ for file in self.find_data_files(package, src_dir)
+ ]
+ return package, src_dir, build_dir, filenames
def find_data_files(self, package, src_dir):
"""Return filenames for package's data files in 'src_dir'"""
diff --git a/setuptools/command/easy_install.py b/setuptools/command/easy_install.py
index a11618d1..d3c0acfb 100755
--- a/setuptools/command/easy_install.py
+++ b/setuptools/command/easy_install.py
@@ -41,7 +41,7 @@ import shlex
import io
from setuptools.extern import six
-from setuptools.extern.six.moves import configparser
+from setuptools.extern.six.moves import configparser, map
from setuptools import Command
from setuptools.sandbox import run_setup
diff --git a/setuptools/command/egg_info.py b/setuptools/command/egg_info.py
index 18a3105f..d1bd9b04 100755
--- a/setuptools/command/egg_info.py
+++ b/setuptools/command/egg_info.py
@@ -15,6 +15,7 @@ import warnings
import time
from setuptools.extern import six
+from setuptools.extern.six.moves import map
from setuptools import Command
from setuptools.command.sdist import sdist
diff --git a/setuptools/command/install_egg_info.py b/setuptools/command/install_egg_info.py
index fd0f118b..f777538f 100755
--- a/setuptools/command/install_egg_info.py
+++ b/setuptools/command/install_egg_info.py
@@ -1,6 +1,8 @@
from distutils import log, dir_util
import os
+from setuptools.extern.six.moves import map
+
from setuptools import Command
from setuptools.archive_util import unpack_archive
import pkg_resources
diff --git a/setuptools/command/test.py b/setuptools/command/test.py
index 3a2a9b93..371e913b 100644
--- a/setuptools/command/test.py
+++ b/setuptools/command/test.py
@@ -3,6 +3,7 @@ from unittest import TestLoader
import sys
from setuptools.extern import six
+from setuptools.extern.six.moves import map
from pkg_resources import (resource_listdir, resource_exists, normalize_path,
working_set, _namespace_packages,
diff --git a/setuptools/dist.py b/setuptools/dist.py
index 4964a9e8..77855415 100644
--- a/setuptools/dist.py
+++ b/setuptools/dist.py
@@ -14,6 +14,7 @@ from distutils.errors import (DistutilsOptionError, DistutilsPlatformError,
DistutilsSetupError)
from setuptools.extern import six
+from setuptools.extern.six.moves import map
from pkg_resources.extern import packaging
from setuptools.depends import Require
diff --git a/setuptools/extension.py b/setuptools/extension.py
index 35eb7c7c..d10609b6 100644
--- a/setuptools/extension.py
+++ b/setuptools/extension.py
@@ -5,6 +5,8 @@ import distutils.core
import distutils.errors
import distutils.extension
+from setuptools.extern.six.moves import map
+
from .dist import _get_unpatched
from . import msvc9_support
diff --git a/setuptools/package_index.py b/setuptools/package_index.py
index ea136c09..c53343e4 100755
--- a/setuptools/package_index.py
+++ b/setuptools/package_index.py
@@ -15,7 +15,7 @@ except ImportError:
from urllib2 import splituser
from setuptools.extern import six
-from setuptools.extern.six.moves import urllib, http_client, configparser
+from setuptools.extern.six.moves import urllib, http_client, configparser, map
from pkg_resources import (
CHECKOUT_DIST, Distribution, BINARY_DIST, normalize_path, SOURCE_DIST,
diff --git a/setuptools/sandbox.py b/setuptools/sandbox.py
index 37035f37..668bcac7 100755
--- a/setuptools/sandbox.py
+++ b/setuptools/sandbox.py
@@ -9,7 +9,7 @@ import contextlib
import pickle
from setuptools.extern import six
-from setuptools.extern.six.moves import builtins
+from setuptools.extern.six.moves import builtins, map
import pkg_resources
diff --git a/setuptools/ssl_support.py b/setuptools/ssl_support.py
index 7baedd19..511d2fa8 100644
--- a/setuptools/ssl_support.py
+++ b/setuptools/ssl_support.py
@@ -3,7 +3,7 @@ import socket
import atexit
import re
-from setuptools.extern.six.moves import urllib, http_client
+from setuptools.extern.six.moves import urllib, http_client, map
import pkg_resources
from pkg_resources import ResolutionError, ExtractionError
diff --git a/setuptools/tests/test_dist_info.py b/setuptools/tests/test_dist_info.py
index 6d0ab587..abd0a763 100644
--- a/setuptools/tests/test_dist_info.py
+++ b/setuptools/tests/test_dist_info.py
@@ -4,6 +4,8 @@ import os
import shutil
import tempfile
+from setuptools.extern.six.moves import map
+
import pytest
import pkg_resources
diff --git a/setuptools/tests/test_egg_info.py b/setuptools/tests/test_egg_info.py
index 333d11d6..7d51585b 100644
--- a/setuptools/tests/test_egg_info.py
+++ b/setuptools/tests/test_egg_info.py
@@ -1,6 +1,8 @@
import os
import stat
+from setuptools.extern.six.moves import map
+
import pytest
from . import environment
diff --git a/setuptools/tests/test_sdist.py b/setuptools/tests/test_sdist.py
index 753b507d..d2a1f1bb 100644
--- a/setuptools/tests/test_sdist.py
+++ b/setuptools/tests/test_sdist.py
@@ -10,6 +10,7 @@ import contextlib
import io
from setuptools.extern import six
+from setuptools.extern.six.moves import map
import pytest
diff --git a/setuptools/version.py b/setuptools/version.py
index 09bbb730..7ff48baa 100644
--- a/setuptools/version.py
+++ b/setuptools/version.py
@@ -1 +1 @@
-__version__ = '19.3'
+__version__ = '19.4'