commit python-pip for openSUSE:Factory
Hello community, here is the log from the commit of package python-pip for openSUSE:Factory checked in at 2013-08-13 13:22:06 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-pip (Old) and /work/SRC/openSUSE:Factory/.python-pip.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Package is "python-pip" Changes: -------- --- /work/SRC/openSUSE:Factory/python-pip/python-pip.changes 2013-07-29 21:11:02.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.python-pip.new/python-pip.changes 2013-08-13 13:22:07.000000000 +0200 @@ -1,0 +2,11 @@ +Thu Aug 8 20:16:51 UTC 2013 - dmueller@suse.com + +- update to 1.4.1: + * Fixed issues with installing from pybundle files (Pull #1116). + * Fixed error when sysconfig module throws an exception (Pull #1095). + * Don't ignore already installed pre-releases (Pull #1076). + * Fixes related to upgrading setuptools (Pull #1092). + * Fixes so that --download works with wheel archives (Pull #1113). + * Fixes related to recognizing and cleaning global build dirs (Pull #1080) + +------------------------------------------------------------------- Old: ---- pip-1.4.tar.gz New: ---- pip-1.4.1.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-pip.spec ++++++ --- /var/tmp/diff_new_pack.TzP3Tk/_old 2013-08-13 13:22:08.000000000 +0200 +++ /var/tmp/diff_new_pack.TzP3Tk/_new 2013-08-13 13:22:08.000000000 +0200 @@ -17,7 +17,7 @@ Name: python-pip -Version: 1.4 +Version: 1.4.1 Release: 0 Url: http://www.pip-installer.org Summary: Pip installs packages. Python packages. An easy_install replacement ++++++ pip-1.4.tar.gz -> pip-1.4.1.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pip-1.4/CHANGES.txt new/pip-1.4.1/CHANGES.txt --- old/pip-1.4/CHANGES.txt 2013-07-23 22:50:43.000000000 +0200 +++ new/pip-1.4.1/CHANGES.txt 2013-08-08 02:54:14.000000000 +0200 @@ -1,6 +1,17 @@ Changelog ========= +1.4.1 (2013-08-07) +------------------ + +* **New Signing Key** Release 1.4.1 is using a different key than normal with fingerprint: 7C6B 7C5D 5E2B 6356 A926 F04F 6E3C BCE9 3372 DCFA +* Fixed issues with installing from pybundle files (Pull #1116). +* Fixed error when sysconfig module throws an exception (Pull #1095). +* Don't ignore already installed pre-releases (Pull #1076). +* Fixes related to upgrading setuptools (Pull #1092). +* Fixes so that --download works with wheel archives (Pull #1113). +* Fixes related to recognizing and cleaning global build dirs (Pull #1080). + 1.4 (2013-07-23) ---------------- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pip-1.4/PKG-INFO new/pip-1.4.1/PKG-INFO --- old/pip-1.4/PKG-INFO 2013-07-23 22:58:36.000000000 +0200 +++ new/pip-1.4.1/PKG-INFO 2013-08-08 03:11:56.000000000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 1.1 Name: pip -Version: 1.4 +Version: 1.4.1 Summary: A tool for installing and managing Python packages. Home-page: http://www.pip-installer.org Author: The pip developers diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pip-1.4/docs/cookbook.rst new/pip-1.4.1/docs/cookbook.rst --- old/pip-1.4/docs/cookbook.rst 2013-07-22 19:00:18.000000000 +0200 +++ new/pip-1.4.1/docs/cookbook.rst 2013-08-08 02:38:52.000000000 +0200 @@ -157,9 +157,6 @@ pypi, upload wheels as well. Unlike the older formats, wheels are compatible with virtual environments. -.. _Setuptools: http://pypi.python.org/pypi/setuptools/ -.. _Distribute: http://pypi.python.org/pypi/distribute/ - .. _`Downloading Archives`: @@ -277,3 +274,78 @@ allow_hosts = '' find_links = file:///path/to/local/archives + +Upgrading from distribute to setuptools +*************************************** + +`distribute`_ has now been merged into `setuptools`_, and it is recommended to upgrade to setuptools when possible. + +To upgrade from `distribute`_ to `setuptools`_ using pip, run:: + + pip install --upgrade setuptools + +"ImportError: No module named setuptools" +----------------------------------------- + +Although using the upgrade command above works in isolation, it's possible to get +"ImportError: No module named setuptools" when using pip<1.4 to upgrade a +package that depends on setuptools or distribute. + +e.g. when running a command like this: `pip install --upgrade pyramid` + +Solution +~~~~~~~~ + +To prevent the problem in *new* environments (that aren't broken yet): + +* Option 1: + + * *First* run `pip install -U setuptools`, + * *Then* run the command to upgrade your package (e.g. `pip install --upgrade pyramid`) + +* Option 2: + + * Upgrade pip using :ref:`get-pip <get-pip>` + * *Then* run the command to upgrade your package (e.g. `pip install --upgrade pyramid`) + +To fix the problem once it's occurred, you'll need to manually install the new +setuptools, then rerun the upgrade that failed. + +1. Download `ez_setup.py` (https://bitbucket.org/pypa/setuptools/downloads/ez_setup.py) +2. Run `python ez_setup.py` +3. Then rerun your upgrade (e.g. `pip install --upgrade pyramid`) + + +Cause +~~~~~ + +distribute-0.7.3 is just an empty wrapper that only serves to require the new +setuptools (setuptools>=0.7) so that it will be installed. (if you don't know +yet, the "new setuptools" is a merge of distribute and setuptools back into one +project) + +distribute-0.7.3 does it's job well, when the upgrade is done in isolation. +E.g. if you're currently on distribute-0.6.X, then running `pip install -U +setuptools` works fine to upgrade you to setuptools>=0.7. + +The problem occurs when: + +1. you are currently using an older distribute (i.e. 0.6.X) +2. and you try to use pip to upgrade a package that *depends* on setuptools or + distribute. + +As part of the upgrade process, pip builds an install list that ends up +including distribute-0.7.3 and setuptools>=0.7 , but they can end up being +separated by other dependencies in the list, so what can happen is this: + +1. pip uninstalls the existing distribute +2. pip installs distribute-0.7.3 (which has no importable setuptools, that pip + *needs* internally to function) +3. pip moves onto install another dependency (before setuptools>=0.7) and is + unable to proceed without the setuptools package + +Note that pip v1.4 has fixes to prevent this. distribute-0.7.3 (or +setuptools>=0.7) by themselves cannot prevent this kind of problem. + +.. _setuptools: https://pypi.python.org/pypi/setuptools +.. _distribute: https://pypi.python.org/pypi/distribute diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pip-1.4/docs/installing.rst new/pip-1.4.1/docs/installing.rst --- old/pip-1.4/docs/installing.rst 2013-07-23 20:10:42.000000000 +0200 +++ new/pip-1.4.1/docs/installing.rst 2013-08-08 02:38:52.000000000 +0200 @@ -85,6 +85,8 @@ .. _distribute: https://pypi.python.org/pypi/distribute +.. _`get-pip`: + Using get-pip +++++++++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pip-1.4/pip/__init__.py new/pip-1.4.1/pip/__init__.py --- old/pip-1.4/pip/__init__.py 2013-07-23 21:51:57.000000000 +0200 +++ new/pip-1.4.1/pip/__init__.py 2013-08-08 02:42:50.000000000 +0200 @@ -14,7 +14,7 @@ # The version as used in the setup.py and the docs conf.py -__version__ = "1.4" +__version__ = "1.4.1" def autocomplete(): """Command and option completion for the main option parser (and options) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pip-1.4/pip/cmdoptions.py new/pip-1.4.1/pip/cmdoptions.py --- old/pip-1.4/pip/cmdoptions.py 2013-07-23 20:10:54.000000000 +0200 +++ new/pip-1.4.1/pip/cmdoptions.py 2013-08-08 02:38:52.000000000 +0200 @@ -141,7 +141,7 @@ default=build_prefix, help='Directory to unpack packages into and build in. ' 'The default in a virtualenv is "<venv path>/build". ' - 'The default for global installs is "<OS temp dir>/pip-build-<username>".') + 'The default for global installs is "<OS temp dir>/pip_build_<username>".') install_options = make_option( '--install-option', diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pip-1.4/pip/commands/install.py new/pip-1.4.1/pip/commands/install.py --- old/pip-1.4/pip/commands/install.py 2013-07-23 20:10:54.000000000 +0200 +++ new/pip-1.4.1/pip/commands/install.py 2013-08-08 02:38:52.000000000 +0200 @@ -7,7 +7,7 @@ from pip.locations import src_prefix, virtualenv_no_global, distutils_scheme from pip.basecommand import Command from pip.index import PackageFinder -from pip.exceptions import InstallationError, CommandError +from pip.exceptions import InstallationError, CommandError, PreviousBuildDirError from pip import cmdoptions @@ -251,6 +251,8 @@ elif self.bundle: requirement_set.create_bundle(self.bundle_filename) logger.notify('Created bundle in %s' % self.bundle_filename) + except PreviousBuildDirError: + return finally: # Clean up if (not options.no_clean) and ((not options.no_install) or options.download_dir): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pip-1.4/pip/commands/wheel.py new/pip-1.4.1/pip/commands/wheel.py --- old/pip-1.4/pip/commands/wheel.py 2013-07-23 20:10:54.000000000 +0200 +++ new/pip-1.4.1/pip/commands/wheel.py 2013-08-08 02:38:52.000000000 +0200 @@ -6,7 +6,7 @@ from pip.basecommand import Command from pip.index import PackageFinder from pip.log import logger -from pip.exceptions import CommandError +from pip.exceptions import CommandError, PreviousBuildDirError from pip.req import InstallRequirement, RequirementSet, parse_requirements from pip.util import normalize_path from pip.wheel import WheelBuilder, wheel_setuptools_support, setuptools_requirement @@ -150,6 +150,8 @@ global_options = options.global_options or [] ) wb.build() + except PreviousBuildDirError: + return finally: if not options.no_clean: requirement_set.cleanup_files() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pip-1.4/pip/index.py new/pip-1.4.1/pip/index.py --- old/pip-1.4/pip/index.py 2013-07-23 20:10:54.000000000 +0200 +++ new/pip-1.4.1/pip/index.py 2013-08-08 02:38:52.000000000 +0200 @@ -278,8 +278,11 @@ % (link, version, ','.join([''.join(s) for s in req.req.specs]))) continue elif is_prerelease(version) and not (self.allow_all_prereleases or req.prereleases): - logger.info("Ignoring link %s, version %s is a pre-release (use --pre to allow)." % (link, version)) - continue + # If this version isn't the already installed one, then + # ignore it if it's a pre-release. + if link is not InfLink: + logger.info("Ignoring link %s, version %s is a pre-release (use --pre to allow)." % (link, version)) + continue applicable_versions.append((parsed_version, link, version)) applicable_versions = self._sort_versions(applicable_versions) existing_applicable = bool([link for parsed_version, link, version in applicable_versions if link is InfLink]) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pip-1.4/pip/locations.py new/pip-1.4.1/pip/locations.py --- old/pip-1.4/pip/locations.py 2013-06-25 14:41:09.000000000 +0200 +++ new/pip-1.4.1/pip/locations.py 2013-08-08 02:38:52.000000000 +0200 @@ -57,7 +57,7 @@ def _get_build_prefix(): """ Returns a safe build_prefix """ - path = os.path.join(tempfile.gettempdir(), 'pip-build-%s' % + path = os.path.join(tempfile.gettempdir(), 'pip_build_%s' % __get_username()) if sys.platform == 'win32': """ on windows(tested on 7) temp dirs are isolated """ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pip-1.4/pip/pep425tags.py new/pip-1.4.1/pip/pep425tags.py --- old/pip-1.4/pip/pep425tags.py 2013-07-22 19:00:18.000000000 +0200 +++ new/pip-1.4.1/pip/pep425tags.py 2013-08-08 02:38:52.000000000 +0200 @@ -1,6 +1,7 @@ """Generate and work with PEP 425 Compatibility Tags.""" import sys +import warnings try: import sysconfig @@ -25,10 +26,7 @@ def get_impl_ver(): """Return implementation version.""" - impl_ver = sysconfig.get_config_var("py_version_nodot") - if not impl_ver: - impl_ver = ''.join(map(str, sys.version_info[:2])) - return impl_ver + return ''.join(map(str, sys.version_info[:2])) def get_platform(): @@ -58,7 +56,12 @@ abis = [] - soabi = sysconfig.get_config_var('SOABI') + try: + soabi = sysconfig.get_config_var('SOABI') + except IOError as e: # Issue #1074 + warnings.warn("{0}".format(e), RuntimeWarning) + soabi = None + if soabi and soabi.startswith('cpython-'): abis[0:0] = ['cp' + soabi.split('-', 1)[-1]] @@ -74,7 +77,7 @@ if not noarch: arch = get_platform() - + # Current version, current API (built specifically for our Python): for abi in abis: supported.append(('%s%s' % (impl, versions[0]), abi, arch)) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pip-1.4/pip/req.py new/pip-1.4.1/pip/req.py --- old/pip-1.4/pip/req.py 2013-07-22 19:00:18.000000000 +0200 +++ new/pip-1.4.1/pip/req.py 2013-08-08 02:38:52.000000000 +0200 @@ -37,7 +37,8 @@ class InstallRequirement(object): def __init__(self, req, comes_from, source_dir=None, editable=False, - url=None, as_egg=False, update=True, prereleases=None): + url=None, as_egg=False, update=True, prereleases=None, + from_bundle=False): self.extras = () if isinstance(req, string_types): req = pkg_resources.Requirement.parse(req) @@ -65,6 +66,7 @@ self.uninstalled = None self.use_user_site = False self.target_dir = None + self.from_bundle = from_bundle # True if pre-releases are acceptable if prereleases: @@ -591,6 +593,7 @@ return if self.is_wheel: self.move_wheel_files(self.source_dir) + self.install_succeeded = True return temp_location = tempfile.mkdtemp('-record', 'pip-') @@ -713,9 +716,11 @@ if self.req is None: return False try: + # DISTRIBUTE TO SETUPTOOLS UPGRADE HACK (1 of 3 parts) # if we've already set distribute as a conflict to setuptools # then this check has already run before. we don't want it to # run again, and return False, since it would block the uninstall + # TODO: remove this later if (self.req.project_name == 'setuptools' and self.conflicts_with and self.conflicts_with.project_name == 'distribute'): @@ -773,12 +778,10 @@ url = None yield InstallRequirement( package, self, editable=True, url=url, - update=False, source_dir=dest_dir) + update=False, source_dir=dest_dir, from_bundle=True) for dest_dir in self._bundle_build_dirs: package = os.path.basename(dest_dir) - yield InstallRequirement( - package, self, - source_dir=dest_dir) + yield InstallRequirement(package, self,source_dir=dest_dir, from_bundle=True) def move_bundle_files(self, dest_build_dir, dest_src_dir): base = self._temp_build_dir @@ -1056,9 +1059,14 @@ unpack = True url = None - # If a checkout exists, it's unwise to keep going. - # Version inconsistencies are logged later, but do not fail the installation. - if os.path.exists(os.path.join(location, 'setup.py')): + # In the case where the req comes from a bundle, we should + # assume a build dir exists and move on + if req_to_install.from_bundle: + pass + # If a checkout exists, it's unwise to keep going. version + # inconsistencies are logged later, but do not fail the + # installation. + elif os.path.exists(os.path.join(location, 'setup.py')): msg = textwrap.dedent(""" pip can't proceed with requirement '%s' due to a pre-existing build directory. location: %s @@ -1099,6 +1107,13 @@ for subreq in req_to_install.bundle_requirements(): reqs.append(subreq) self.add_requirement(subreq) + elif self.is_download: + req_to_install.source_dir = location + if not is_wheel: + # FIXME: see https://github.com/pypa/pip/issues/1112 + req_to_install.run_egg_info() + if url and url.scheme in vcs.all_schemes: + req_to_install.archive(self.download_dir) elif is_wheel: req_to_install.source_dir = location req_to_install.url = url.url @@ -1114,11 +1129,6 @@ req_to_install) reqs.append(subreq) self.add_requirement(subreq) - elif self.is_download: - req_to_install.source_dir = location - req_to_install.run_egg_info() - if url and url.scheme in vcs.all_schemes: - req_to_install.archive(self.download_dir) else: req_to_install.source_dir = location req_to_install.run_egg_info() @@ -1235,10 +1245,11 @@ to_install = [r for r in self.requirements.values() if not r.satisfied_by] - # move distribute>=0.7 to the end because it does not contain an - # importable setuptools. by moving it to the end, we ensure it's - # setuptools dependency is handled first, which will provide an - # importable setuptools package + # DISTRIBUTE TO SETUPTOOLS UPGRADE HACK (1 of 3 parts) + # move the distribute-0.7.X wrapper to the end because it does not + # install a setuptools package. by moving it to the end, we ensure it's + # setuptools dependency is handled first, which will provide the + # setuptools package # TODO: take this out later distribute_req = pkg_resources.Requirement.parse("distribute>=0.7") for req in to_install: @@ -1252,17 +1263,27 @@ try: for requirement in to_install: - # when installing setuptools>=0.7.2 in py2, we need to force setuptools - # to uninstall distribute. In py3, which is always using distribute, this + # DISTRIBUTE TO SETUPTOOLS UPGRADE HACK (1 of 3 parts) + # when upgrading from distribute-0.6.X to the new merged + # setuptools in py2, we need to force setuptools to uninstall + # distribute. In py3, which is always using distribute, this # conversion is already happening in distribute's pkg_resources. + # It's ok *not* to check if setuptools>=0.7 because if someone + # were actually trying to ugrade from distribute to setuptools + # 0.6.X, then all this could do is actually help, although that + # upgade path was certainly never "supported" # TODO: remove this later - setuptools_req = pkg_resources.Requirement.parse("setuptools>=0.7.2") - if requirement.name == 'setuptools' and requirement.installed_version in setuptools_req: + if requirement.name == 'setuptools': try: + # only uninstall distribute<0.7. For >=0.7, setuptools + # will also be present, and that's what we need to + # uninstall + distribute_requirement = pkg_resources.Requirement.parse("distribute<0.7") existing_distribute = pkg_resources.get_distribution("distribute") - requirement.conflicts_with = existing_distribute - except: - # distribute wasn't installed + if existing_distribute in distribute_requirement: + requirement.conflicts_with = existing_distribute + except pkg_resources.DistributionNotFound: + # distribute wasn't installed, so nothing to do pass if requirement.conflicts_with: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pip-1.4/pip/wheel.py new/pip-1.4.1/pip/wheel.py --- old/pip-1.4/pip/wheel.py 2013-07-22 19:00:18.000000000 +0200 +++ new/pip-1.4.1/pip/wheel.py 2013-08-08 02:38:52.000000000 +0200 @@ -20,7 +20,7 @@ wheel_ext = '.whl' # don't use pkg_resources.Requirement.parse, to avoid the override in distribute, -# that converts 'setuptools' to 'distribute'. (The ==0.8dev does function as an OR) +# that converts 'setuptools' to 'distribute'. setuptools_requirement = list(pkg_resources.parse_requirements("setuptools>=0.8"))[0] def wheel_setuptools_support(): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pip-1.4/pip.egg-info/PKG-INFO new/pip-1.4.1/pip.egg-info/PKG-INFO --- old/pip-1.4/pip.egg-info/PKG-INFO 2013-07-23 22:58:36.000000000 +0200 +++ new/pip-1.4.1/pip.egg-info/PKG-INFO 2013-08-08 03:11:56.000000000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 1.1 Name: pip -Version: 1.4 +Version: 1.4.1 Summary: A tool for installing and managing Python packages. Home-page: http://www.pip-installer.org Author: The pip developers -- To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-commit+help@opensuse.org
participants (1)
-
root@hilbert.suse.de