Hello community,
here is the log from the commit of package python-devpi-client for
openSUSE:Factory checked in at 2020-01-12 23:25:00
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-devpi-client (Old)
and /work/SRC/openSUSE:Factory/.python-devpi-client.new.6675 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-devpi-client"
Sun Jan 12 23:25:00 2020 rev:3 rq:763395 version:5.1.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-devpi-client/python-devpi-client.changes
2019-09-30 15:58:32.257354158 +0200
+++
/work/SRC/openSUSE:Factory/.python-devpi-client.new.6675/python-devpi-client.changes
2020-01-12 23:26:26.674861850 +0100
@@ -1,0 +2,13 @@
+Sun Jan 12 00:54:29 CET 2020 - Matej Cepl <[email protected]>
+
+- Update to 5.1.1:
+ - Fix removing a range of versions with index inheritance.
+ - Add keyring support for devpi push to external repositories
+ like pypi.org. This is compatible with twine, see
+ https://twine.readthedocs.io/en/latest/#keyring-support
+ - fix #666: output nicer error message when section couldn’t be
+ found in pypirc.
+ - the 410 status for the register action isn’t marked as error
+ anymore for push to external repository.
+
+-------------------------------------------------------------------
Old:
----
devpi-client-5.0.0.tar.gz
New:
----
devpi-client-5.1.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-devpi-client.spec ++++++
--- /var/tmp/diff_new_pack.PXQmd4/_old 2020-01-12 23:26:27.070861996 +0100
+++ /var/tmp/diff_new_pack.PXQmd4/_new 2020-01-12 23:26:27.074861998 +0100
@@ -1,7 +1,7 @@
#
# spec file for package python-devpi-client
#
-# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2020 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -18,7 +18,7 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-devpi-client
-Version: 5.0.0
+Version: 5.1.1
Release: 0
Summary: Client for devpi
License: MIT
++++++ devpi-client-5.0.0.tar.gz -> devpi-client-5.1.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/devpi-client-5.0.0/CHANGELOG
new/devpi-client-5.1.1/CHANGELOG
--- old/devpi-client-5.0.0/CHANGELOG 2019-06-28 10:50:41.000000000 +0200
+++ new/devpi-client-5.1.1/CHANGELOG 2019-12-18 09:08:44.000000000 +0100
@@ -2,6 +2,49 @@
.. towncrier release notes start
+5.1.1 (2019-12-18)
+==================
+
+Bug Fixes
+---------
+
+- Fix removing a range of versions with index inheritance.
+
+
+5.1.0 (2019-10-31)
+==================
+
+Features
+--------
+
+- Add keyring support for ``devpi push`` to external repositories like
pypi.org. This is compatible with ``twine``, see
https://twine.readthedocs.io/en/latest/#keyring-support
+
+
+Bug Fixes
+---------
+
+- fix #666: output nicer error message when section couldn't be found in
pypirc.
+
+- the 410 status for the register action isn't marked as error anymore for
push to external repository.
+
+
+5.1.0 (2019-10-31)
+==================
+
+Features
+--------
+
+- Add keyring support for ``devpi push`` to external repositories like
pypi.org. This is compatible with ``twine``, see
https://twine.readthedocs.io/en/latest/#keyring-support
+
+
+Bug Fixes
+---------
+
+- fix #666: output nicer error message when section couldn't be found in
pypirc.
+
+- the 410 status for the register action isn't marked as error anymore for
push to external repository.
+
+
5.0.0 (2019-06-28)
==================
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/devpi-client-5.0.0/PKG-INFO
new/devpi-client-5.1.1/PKG-INFO
--- old/devpi-client-5.0.0/PKG-INFO 2019-06-28 10:50:42.000000000 +0200
+++ new/devpi-client-5.1.1/PKG-INFO 2019-12-18 09:08:48.000000000 +0100
@@ -1,11 +1,11 @@
Metadata-Version: 1.2
Name: devpi-client
-Version: 5.0.0
+Version: 5.1.1
Summary: devpi upload/install/... workflow commands for Python developers
Home-page: https://github.com/devpi/devpi
Maintainer: Holger Krekel
Maintainer-email: [email protected]
-License: UNKNOWN
+License: MIT
Description: ===============================================================
devpi-client: manage devpi-server, Python packaging and testing
===============================================================
@@ -39,87 +39,89 @@
.. towncrier release notes start
- 5.0.0 (2019-06-28)
+ 5.1.1 (2019-12-18)
==================
- Deprecations and Removals
- -------------------------
+ Bug Fixes
+ ---------
- - removed deprecated "quickstart" command.
+ - Fix removing a range of versions with index inheritance.
+ 5.1.0 (2019-10-31)
+ ==================
+
Features
--------
- - fix #636: support ``--ignore-bases`` option for project listings.
Requires devpi-server >= 5.0.0 to work, older versions will still include
releases from bases.
-
- - decoupled the functional tests from devpi-server and run
devpi-server in a Python 3 virtualenv when testing with Python 2.7.
-
- - support ``--no-projects`` option when showing indexes and use it
automatically when creating and modifying and index. Requires devpi-server >=
5.0.0 to work, older versions will still receive and show the projects.
+ - Add keyring support for ``devpi push`` to external repositories like
pypi.org. This is compatible with ``twine``, see
https://twine.readthedocs.io/en/latest/#keyring-support
- - sort output of ``index -l``, ``use -l`` and ``user -l``.
+ Bug Fixes
+ ---------
- Other Changes
- -------------
+ - fix #666: output nicer error message when section couldn't be found
in pypirc.
- - The selection of the Python interpreter used for ``devpi upload``
has changed. If used the new ``-p/--python`` option has priority, then a
currently activated virtualenv, lastly the ``sys.executable`` under which devpi
is running.
+ - the 410 status for the register action isn't marked as error anymore
for push to external repository.
- 4.4.0 (2019-04-26)
+ 5.1.0 (2019-10-31)
==================
Features
--------
- - implement #93: support setting password hash with devpi-server 4.9.0.
+ - Add keyring support for ``devpi push`` to external repositories like
pypi.org. This is compatible with ``twine``, see
https://twine.readthedocs.io/en/latest/#keyring-support
Bug Fixes
---------
- - fix #622: deletion of package with inherited versions failed.
+ - fix #666: output nicer error message when section couldn't be found
in pypirc.
+
+ - the 410 status for the register action isn't marked as error anymore
for push to external repository.
- 4.3.0 (2019-03-14)
+ 5.0.0 (2019-06-28)
==================
+ Deprecations and Removals
+ -------------------------
+
+ - removed deprecated "quickstart" command.
+
+
Features
--------
- - support for additional commands added by plugins via
``devpiclient_subcommands`` hook.
-
+ - fix #636: support ``--ignore-bases`` option for project listings.
Requires devpi-server >= 5.0.0 to work, older versions will still include
releases from bases.
- Bug Fixes
- ---------
+ - decoupled the functional tests from devpi-server and run
devpi-server in a Python 3 virtualenv when testing with Python 2.7.
- - Update import location for detox 0.18.
+ - support ``--no-projects`` option when showing indexes and use it
automatically when creating and modifying and index. Requires devpi-server >=
5.0.0 to work, older versions will still receive and show the projects.
+ - sort output of ``index -l``, ``use -l`` and ``user -l``.
- 4.2.0 (2018-11-16)
- ==================
- Features
- --------
+ Other Changes
+ -------------
- - Use server side operations for modifying indexes if the devpi-server
version supports it. This prevents overwriting changes if two clients modify
the same index concurrently.
+ - The selection of the Python interpreter used for ``devpi upload``
has changed. If used the new ``-p/--python`` option has priority, then a
currently activated virtualenv, lastly the ``sys.executable`` under which devpi
is running.
- 4.1.0 (2018-09-09)
+ 4.4.0 (2019-04-26)
==================
Features
--------
- - implement #565: To show toxresults with ``devpi list`` the new
``-t/--toxresults`` option is now required, the toxresults aren't shown by
default anymore.
-
- - implement #579: client can remove specific file with ``devpi remove
url_to_file``. This requires at least devpi-server 4.6.0
+ - implement #93: support setting password hash with devpi-server 4.9.0.
Bug Fixes
---------
- - fix #523: better error message when index does not support upload.
+ - fix #622: deletion of package with inherited versions failed.
Platform: UNKNOWN
@@ -133,3 +135,4 @@
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
+Classifier: Programming Language :: Python :: 3.7
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/devpi-client-5.0.0/devpi/__init__.py
new/devpi-client-5.1.1/devpi/__init__.py
--- old/devpi-client-5.0.0/devpi/__init__.py 2019-06-28 10:50:41.000000000
+0200
+++ new/devpi-client-5.1.1/devpi/__init__.py 2019-12-18 09:08:44.000000000
+0100
@@ -1,2 +1,2 @@
-__version__ = '5.0.0'
+__version__ = '5.1.1'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/devpi-client-5.0.0/devpi/list_remove.py
new/devpi-client-5.1.1/devpi/list_remove.py
--- old/devpi-client-5.0.0/devpi/list_remove.py 2019-06-28 10:50:41.000000000
+0200
+++ new/devpi-client-5.1.1/devpi/list_remove.py 2019-12-18 09:08:44.000000000
+0100
@@ -139,7 +139,7 @@
index_url = hub.current.get_index_url(indexname=args.index)
proj_url = hub.current.get_project_url(
req.project_name, indexname=args.index)
- reply = hub.http_api("get", proj_url, type="projectconfig")
+ reply = hub.http_api("get", proj_url.replace(query=dict(ignore_bases="")),
type="projectconfig")
ver_to_delete = get_versions_to_delete(index_url, reply, req)
if not ver_to_delete:
hub.error(
@@ -173,6 +173,8 @@
files_to_delete = [link for link in vv.get_links()
if link.href.startswith(index_url.url)]
ver_to_delete.append((version, files_to_delete))
+ # filter versions with no releases
+ ver_to_delete = [x for x in ver_to_delete if x[1]]
return ver_to_delete
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/devpi-client-5.0.0/devpi/login.py
new/devpi-client-5.1.1/devpi/login.py
--- old/devpi-client-5.0.0/devpi/login.py 2019-06-28 10:50:41.000000000
+0200
+++ new/devpi-client-5.1.1/devpi/login.py 2019-12-18 09:08:44.000000000
+0100
@@ -14,16 +14,16 @@
r = hub.http_api("post", hub.current.login, input, quiet=False)
hub.current.set_auth(user, r.result["password"])
hours = r.result["expiration"] / (60*60.0)
- hub.info("logged in %r at %r, credentials valid for %.2f hours" %
- (user, hub.current.index, hours))
- #else:
- # hub.error("server refused %r login, code=%s" %(user, r.status_code))
- # return 1
+ msg = "logged in %r" % user
+ if hub.current.index:
+ msg = "%s at %r" % (msg, hub.current.index)
+ msg = "%s, credentials valid for %.2f hours" % (msg, hours)
+ hub.info(msg)
@hookimpl(trylast=True)
def devpiclient_get_password(url, username):
- return getpass.getpass("password for user %s: " % username)
+ return getpass.getpass("password for user %s at %s: " % (username, url))
def logoff(hub, args):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/devpi-client-5.0.0/devpi/push.py
new/devpi-client-5.1.1/devpi/push.py
--- old/devpi-client-5.0.0/devpi/push.py 2019-06-28 10:50:41.000000000
+0200
+++ new/devpi-client-5.1.1/devpi/push.py 2019-12-18 09:08:44.000000000
+0100
@@ -1,6 +1,8 @@
import py
from devpi_common.metadata import parse_requirement, splitbasename
from . import pypirc
+import traceback
+
class PyPIPush:
def __init__(self, posturl, user, password):
@@ -12,9 +14,7 @@
req = dict(name=name, version=str(version), posturl=self.posturl,
username=self.user, password=self.password )
index = hub.current.index
- return hub.http_api("push", index, kvdict=req, fatal=True)
-
- #assert r.status_code == 200, r.content
+ return hub.http_api("push", index, kvdict=req, fatal=False)
class DevpiPush:
@@ -39,10 +39,17 @@
hub.fatal("no pypirc file found at: %s" %(pypirc_path))
hub.info("using pypirc", pypirc_path)
auth = pypirc.Auth(pypirc_path)
- posturl, (user, password) = auth.get_url_auth(posturl)
+ try:
+ posturl, (user, password) = auth.get_url_auth(posturl)
+ except KeyError as e:
+ hub.fatal("Error while trying to read section '%s': %s" % (
+ posturl, traceback.format_exception_only(e.__class__, e)))
if posturl is None:
posturl = "https://upload.pypi.org/legacy/"
hub.info("using default pypi url %s" % posturl)
+ if password is None:
+ password = hub.hook.devpiclient_get_password(
+ url=posturl, username=user)
return PyPIPush(posturl, user, password)
if args.target.count("/") != 1:
hub.fatal("target %r not of form USER/NAME or pypi:REPONAME" % (
@@ -73,8 +80,12 @@
"Old style package specification is deprecated, "
"use this form: your-pkg-name==your.version.specifier")
r = pusher.execute(hub, name, version)
+ failed = r.status_code not in (200, 201)
if r.type == "actionlog":
for action in r["result"]:
- red = int(action[0]) >= 400
+ red = int(action[0]) not in (200, 201, 410)
+ failed = failed or red
for line in (" ".join(map(str, action))).split("\n"):
hub.line(" " + line, red=red)
+ if failed:
+ hub.fatal("Failure during upload")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/devpi-client-5.0.0/devpi/pypirc.py
new/devpi-client-5.1.1/devpi/pypirc.py
--- old/devpi-client-5.0.0/devpi/pypirc.py 2019-06-28 10:50:41.000000000
+0200
+++ new/devpi-client-5.1.1/devpi/pypirc.py 2019-12-18 09:08:44.000000000
+0100
@@ -3,42 +3,17 @@
"""
import py
+
class Auth:
def __init__(self, path=None):
if path is None:
path = py.path.local._gethomedir().join(".pypirc")
- self.path = path
self.ini = py.iniconfig.IniConfig(path)
- def validate_user(self, url, user, password):
- indexservers = self.ini.get("distutils", "index-servers")
- assert indexservers, "no index-servers entry found in %s" %
(self.path,)
- url = url.rstrip("/")
- for indexserver in indexservers.split():
- section = self.ini[indexserver]
- repo = section.get("repository")
- repo = repo.rstrip("/")
- if repo == url:
- if user == section["username"] and \
- password == section["password"]:
- return True
- print ("auth failed", url, user, password)
-
- def get_userpass(self, url):
- indexservers = self.ini.get("distutils", "index-servers")
- assert indexservers, "no index-servers entry found in %s" %
(self.path,)
- url = url.rstrip("/")
- for indexserver in indexservers.split():
- section = self.ini[indexserver]
- repo = section.get("repository")
- if repo and repo.rstrip("/") == url:
- return (section["username"], section["password"])
- return None
-
def get_url_auth(self, secname):
section = self.ini[secname]
repo = section.get("repository")
- auth = (section["username"], section["password"])
+ username = section["username"]
+ password = section.get("password")
+ auth = (username, password)
return repo, auth
-
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/devpi-client-5.0.0/devpi_client.egg-info/PKG-INFO
new/devpi-client-5.1.1/devpi_client.egg-info/PKG-INFO
--- old/devpi-client-5.0.0/devpi_client.egg-info/PKG-INFO 2019-06-28
10:50:42.000000000 +0200
+++ new/devpi-client-5.1.1/devpi_client.egg-info/PKG-INFO 2019-12-18
09:08:48.000000000 +0100
@@ -1,11 +1,11 @@
Metadata-Version: 1.2
Name: devpi-client
-Version: 5.0.0
+Version: 5.1.1
Summary: devpi upload/install/... workflow commands for Python developers
Home-page: https://github.com/devpi/devpi
Maintainer: Holger Krekel
Maintainer-email: [email protected]
-License: UNKNOWN
+License: MIT
Description: ===============================================================
devpi-client: manage devpi-server, Python packaging and testing
===============================================================
@@ -39,87 +39,89 @@
.. towncrier release notes start
- 5.0.0 (2019-06-28)
+ 5.1.1 (2019-12-18)
==================
- Deprecations and Removals
- -------------------------
+ Bug Fixes
+ ---------
- - removed deprecated "quickstart" command.
+ - Fix removing a range of versions with index inheritance.
+ 5.1.0 (2019-10-31)
+ ==================
+
Features
--------
- - fix #636: support ``--ignore-bases`` option for project listings.
Requires devpi-server >= 5.0.0 to work, older versions will still include
releases from bases.
-
- - decoupled the functional tests from devpi-server and run
devpi-server in a Python 3 virtualenv when testing with Python 2.7.
-
- - support ``--no-projects`` option when showing indexes and use it
automatically when creating and modifying and index. Requires devpi-server >=
5.0.0 to work, older versions will still receive and show the projects.
+ - Add keyring support for ``devpi push`` to external repositories like
pypi.org. This is compatible with ``twine``, see
https://twine.readthedocs.io/en/latest/#keyring-support
- - sort output of ``index -l``, ``use -l`` and ``user -l``.
+ Bug Fixes
+ ---------
- Other Changes
- -------------
+ - fix #666: output nicer error message when section couldn't be found
in pypirc.
- - The selection of the Python interpreter used for ``devpi upload``
has changed. If used the new ``-p/--python`` option has priority, then a
currently activated virtualenv, lastly the ``sys.executable`` under which devpi
is running.
+ - the 410 status for the register action isn't marked as error anymore
for push to external repository.
- 4.4.0 (2019-04-26)
+ 5.1.0 (2019-10-31)
==================
Features
--------
- - implement #93: support setting password hash with devpi-server 4.9.0.
+ - Add keyring support for ``devpi push`` to external repositories like
pypi.org. This is compatible with ``twine``, see
https://twine.readthedocs.io/en/latest/#keyring-support
Bug Fixes
---------
- - fix #622: deletion of package with inherited versions failed.
+ - fix #666: output nicer error message when section couldn't be found
in pypirc.
+
+ - the 410 status for the register action isn't marked as error anymore
for push to external repository.
- 4.3.0 (2019-03-14)
+ 5.0.0 (2019-06-28)
==================
+ Deprecations and Removals
+ -------------------------
+
+ - removed deprecated "quickstart" command.
+
+
Features
--------
- - support for additional commands added by plugins via
``devpiclient_subcommands`` hook.
-
+ - fix #636: support ``--ignore-bases`` option for project listings.
Requires devpi-server >= 5.0.0 to work, older versions will still include
releases from bases.
- Bug Fixes
- ---------
+ - decoupled the functional tests from devpi-server and run
devpi-server in a Python 3 virtualenv when testing with Python 2.7.
- - Update import location for detox 0.18.
+ - support ``--no-projects`` option when showing indexes and use it
automatically when creating and modifying and index. Requires devpi-server >=
5.0.0 to work, older versions will still receive and show the projects.
+ - sort output of ``index -l``, ``use -l`` and ``user -l``.
- 4.2.0 (2018-11-16)
- ==================
- Features
- --------
+ Other Changes
+ -------------
- - Use server side operations for modifying indexes if the devpi-server
version supports it. This prevents overwriting changes if two clients modify
the same index concurrently.
+ - The selection of the Python interpreter used for ``devpi upload``
has changed. If used the new ``-p/--python`` option has priority, then a
currently activated virtualenv, lastly the ``sys.executable`` under which devpi
is running.
- 4.1.0 (2018-09-09)
+ 4.4.0 (2019-04-26)
==================
Features
--------
- - implement #565: To show toxresults with ``devpi list`` the new
``-t/--toxresults`` option is now required, the toxresults aren't shown by
default anymore.
-
- - implement #579: client can remove specific file with ``devpi remove
url_to_file``. This requires at least devpi-server 4.6.0
+ - implement #93: support setting password hash with devpi-server 4.9.0.
Bug Fixes
---------
- - fix #523: better error message when index does not support upload.
+ - fix #622: deletion of package with inherited versions failed.
Platform: UNKNOWN
@@ -133,3 +135,4 @@
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
+Classifier: Programming Language :: Python :: 3.7
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/devpi-client-5.0.0/devpi_client.egg-info/top_level.txt
new/devpi-client-5.1.1/devpi_client.egg-info/top_level.txt
--- old/devpi-client-5.0.0/devpi_client.egg-info/top_level.txt 2019-06-28
10:50:42.000000000 +0200
+++ new/devpi-client-5.1.1/devpi_client.egg-info/top_level.txt 2019-12-18
09:08:48.000000000 +0100
@@ -1,2 +1 @@
devpi
-testing
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/devpi-client-5.0.0/setup.py
new/devpi-client-5.1.1/setup.py
--- old/devpi-client-5.0.0/setup.py 2019-06-28 10:50:41.000000000 +0200
+++ new/devpi-client-5.1.1/setup.py 2019-12-18 09:08:44.000000000 +0100
@@ -1,12 +1,17 @@
#! /usr/bin/env python
import io
-import os, re
+import os
+import re
+import sys
-from setuptools import setup, find_packages
+from setuptools import setup
def get_changelog():
+ if 'bdist_rpm' in sys.argv:
+ # exclude changelog when building rpm
+ return ""
text = io.open(os.path.join(here, 'CHANGELOG'), encoding='utf-8').read()
header_matches = list(re.finditer('^=+$', text, re.MULTILINE))
# until fifth header
@@ -35,13 +40,14 @@
description="devpi upload/install/... workflow commands for Python "
"developers",
long_description="\n\n".join([README, CHANGELOG]),
- version='5.0.0',
- packages=find_packages(),
+ version='5.1.1',
+ packages=['devpi'],
install_requires=install_requires,
extras_require=extras_require,
url="https://github.com/devpi/devpi",
maintainer="Holger Krekel",
maintainer_email="[email protected]",
+ license="MIT",
classifiers=[
"Development Status :: 5 - Production/Stable",
"Environment :: Web Environment",
@@ -51,7 +57,7 @@
"Programming Language :: Python :: Implementation :: PyPy",
] + [
("Programming Language :: Python :: %s" % x) for x in
- "2.7 3.4 3.5 3.6".split()],
+ "2.7 3.4 3.5 3.6 3.7".split()],
entry_points = {
'console_scripts': [
"devpi = devpi.main:main"],
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/devpi-client-5.0.0/testing/conftest.py
new/devpi-client-5.1.1/testing/conftest.py
--- old/devpi-client-5.0.0/testing/conftest.py 2019-06-28 10:50:41.000000000
+0200
+++ new/devpi-client-5.1.1/testing/conftest.py 2019-12-18 09:08:44.000000000
+0100
@@ -112,8 +112,6 @@
def find_python3():
locations = [
- "C:\\Python34-x64\\python.exe",
- "C:\\Python34\\python.exe",
"C:\\Python35-x64\\python.exe",
"C:\\Python35\\python.exe",
"C:\\Python36-x64\\python.exe",
@@ -130,11 +128,10 @@
except subprocess.CalledProcessError:
continue
names = [
- 'python3',
- 'python3.4',
'python3.5',
'python3.6',
- 'python3.7']
+ 'python3.7',
+ 'python3']
for name in names:
path = py.path.local.sysfind(name)
if not path:
@@ -204,17 +201,22 @@
port = get_open_port(host)
try:
args = [
- server_executable, "--serverdir", str(clientdir), "--debug",
- "--host", host, "--port", str(port)]
- if server_version >= pkg_resources.parse_version('4.2.0.dev'):
- subprocess.check_call(args + ['--init'])
+ "--serverdir", str(clientdir)]
+ if server_version >= pkg_resources.parse_version('5.2.0.dev'):
+ init_executable = server_executable.replace(
+ "devpi-server", "devpi-init")
+ subprocess.check_call([init_executable] + args)
+ elif server_version >= pkg_resources.parse_version('4.2.0.dev'):
+ subprocess.check_call([server_executable] + args + [
+ '--debug', '--init'])
except subprocess.CalledProcessError as e:
# this won't output anything on Windows
print(
getattr(e, 'output', "Can't get process output on Windows"),
file=sys.stderr)
raise
- p = subprocess.Popen(args)
+ p = subprocess.Popen([server_executable] + args + [
+ "--debug", "--host", host, "--port", str(port)])
wait_for_port(host, port)
return (p, URL("http://%s:%s" % (host, port)))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/devpi-client-5.0.0/testing/functional.py
new/devpi-client-5.1.1/testing/functional.py
--- old/devpi-client-5.0.0/testing/functional.py 2019-06-28
10:50:41.000000000 +0200
+++ new/devpi-client-5.1.1/testing/functional.py 2019-12-18
09:08:44.000000000 +0100
@@ -201,7 +201,7 @@
def test_create_index_and_config_gets(self, mapp):
mapp.create_and_login_user("cuser2")
mapp.create_index("dev")
- res = mapp.getjson("/cuser2/dev")
+ res = mapp.getjson("/cuser2/dev")
assert res["type"] == "indexconfig"
assert res["result"]["projects"] == []
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/devpi-client-5.0.0/testing/test_list_remove.py
new/devpi-client-5.1.1/testing/test_list_remove.py
--- old/devpi-client-5.0.0/testing/test_list_remove.py 2019-06-28
10:50:41.000000000 +0200
+++ new/devpi-client-5.1.1/testing/test_list_remove.py 2019-12-18
09:08:44.000000000 +0100
@@ -205,6 +205,43 @@
with pytest.raises(ValueError):
out.stdout.fnmatch_lines_random("*/dev/*/dddttt-0.666.zip")
+ def test_delete_version_range_with_inheritance(self, initproj, devpi,
out_devpi, simpypi):
+ import re
+ # upload 0.666 to dev index
+ initproj("dddttt-0.666", {"doc": {
+ "conf.py": "",
+ "index.html": "<html/>"}})
+ assert py.path.local("setup.py").check()
+ devpi("upload", "--formats", "sdist.zip")
+ # remember username
+ out = out_devpi("use")
+ user = re.search(r'\(logged in as (.+?)\)', out.stdout.str()).group(1)
+ devpi("index", "-c", "dev2", "bases=%s/dev" % user)
+ devpi("use", "dev2")
+ # upload 1.0 to dev2 index
+ initproj("dddttt-1.0", {"doc": {
+ "conf.py": "",
+ "index.html": "<html/>"}})
+ assert py.path.local("setup.py").check()
+ devpi("upload", "--formats", "sdist.zip")
+ # upload 2.0 to dev2 index
+ initproj("dddttt-2.0", {"doc": {
+ "conf.py": "",
+ "index.html": "<html/>"}})
+ assert py.path.local("setup.py").check()
+ devpi("upload", "--formats", "sdist.zip")
+
+ out = out_devpi("list", "dddttt", "--all")
+ out.stdout.fnmatch_lines_random("*/dev/*/dddttt-0.666.zip")
+ out.stdout.fnmatch_lines_random("*/dev2/*/dddttt-1.0.zip")
+ out.stdout.fnmatch_lines_random("*/dev2/*/dddttt-2.0.zip")
+ out = out_devpi("remove", "dddttt<2.0", code=200)
+ out = out_devpi("list", "dddttt", "--all")
+ out.stdout.fnmatch_lines_random("*/dev/*/dddttt-0.666.zip")
+ with pytest.raises(ValueError):
+ out.stdout.fnmatch_lines_random("*/dev/*/dddttt-1.0.zip")
+ out.stdout.fnmatch_lines_random("*/dev2/*/dddttt-2.0.zip")
+
def test_delete_project_with_inheritance(self, initproj, devpi, out_devpi,
simpypi):
devpi("index", "bases=root/pypi", "mirror_whitelist=*")
initproj("dddttt-0.666", {"doc": {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/devpi-client-5.0.0/testing/test_push.py
new/devpi-client-5.1.1/testing/test_push.py
--- old/devpi-client-5.0.0/testing/test_push.py 2019-06-28 10:50:41.000000000
+0200
+++ new/devpi-client-5.1.1/testing/test_push.py 2019-12-18 09:08:44.000000000
+0100
@@ -85,7 +85,7 @@
@pytest.mark.parametrize("spec", ("pkg==1.0", "pkg-1.0"))
-def test_main_push_pypi(monkeypatch, tmpdir, spec):
+def test_main_push_pypi(capsys, monkeypatch, tmpdir, spec):
from devpi.push import main
l = []
def mypost(method, url, data, headers, auth=None, cert=None, verify=None):
@@ -136,6 +136,19 @@
assert req["username"] == "test"
assert req["password"] == "testp"
+ class args:
+ pypirc = str(p)
+ target = "pypi:notspecified"
+ pkgspec = spec
+ index = None
+
+ (out, err) = capsys.readouterr()
+ with pytest.raises(SystemExit):
+ main(hub, args)
+ (out, err) = capsys.readouterr()
+ assert "Error while trying to read section 'notspecified'" in out
+ assert "KeyError" in out
+
def test_fail_push(monkeypatch, tmpdir):
from devpi.push import main
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/devpi-client-5.0.0/testing/test_pypirc.py
new/devpi-client-5.1.1/testing/test_pypirc.py
--- old/devpi-client-5.0.0/testing/test_pypirc.py 2019-06-28
10:50:41.000000000 +0200
+++ new/devpi-client-5.1.1/testing/test_pypirc.py 2019-12-18
09:08:44.000000000 +0100
@@ -1,7 +1,7 @@
-
from devpi import pypirc
from textwrap import dedent
+
def test_pypirc(tmpdir):
p = tmpdir.join("pypirc")
p.write(dedent("""\n
@@ -18,21 +18,24 @@
repository: http://localhost:3141/
username: test2
password: test2
+
+ [nopassword]
+ repository: http://localhost:3141/
+ username: test3
"""))
rc = pypirc.Auth(p)
- assert rc.validate_user("http://pypi.testrun.org/", "test", "test")
- assert not rc.validate_user("http://pypi.testrun.org/", "test", "test2")
- assert rc.validate_user("http://localhost:3141/", "test2", "test2")
- assert not rc.validate_user("http://localhost:3141/", "test", "test")
-
- userpass = rc.get_userpass("http://pypi.testrun.org/")
- assert userpass == ("test", "test")
- userpass = rc.get_userpass("http://localhost:3141/")
- assert userpass == ("test2", "test2")
- userpass = rc.get_userpass("http://qwleklocalhost:3141/")
- assert userpass is None
url, (user, p) = rc.get_url_auth("local")
assert url == "http://pypi.testrun.org/"
assert user == "test"
assert p == "test"
+
+ url, (user, p) = rc.get_url_auth("testindex")
+ assert url == "http://localhost:3141/"
+ assert user == "test2"
+ assert p == "test2"
+
+ url, (user, p) = rc.get_url_auth("nopassword")
+ assert url == "http://localhost:3141/"
+ assert user == "test3"
+ assert p is None
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/devpi-client-5.0.0/tox.ini
new/devpi-client-5.1.1/tox.ini
--- old/devpi-client-5.0.0/tox.ini 2019-06-28 10:50:41.000000000 +0200
+++ new/devpi-client-5.1.1/tox.ini 2019-12-18 09:08:44.000000000 +0100
@@ -1,6 +1,6 @@
[pytest]
norecursedirs = attic .tox
-addopts = -ra --flake8
+addopts = -r a --flake8
flake8-ignore =
* E501
*.py E111 E117 E121 E122 E123 E124 E126 E127 E128 E131 E201 E202 E211 E222
E225 E226 E231 E251 E265 E271 E301 E302 E303 E305 E306 E401 E501 E711 E712 E722
E741 W291 W391 W504
@@ -15,7 +15,8 @@
[testenv]
passenv = LANG
-deps = pytest
+deps = py34: colorama<=0.4.1 ; sys_platform == 'win32'
+ pytest
pytest-flake8
pytest-instafail
!py27: devpi-server