Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-devpi-client for openSUSE:Factory checked in at 2023-07-05 15:30:49 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-devpi-client (Old) and /work/SRC/openSUSE:Factory/.python-devpi-client.new.23466 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-devpi-client" Wed Jul 5 15:30:49 2023 rev:11 rq:1096804 version:6.0.5 Changes: -------- --- /work/SRC/openSUSE:Factory/python-devpi-client/python-devpi-client.changes 2023-06-12 15:26:44.671156035 +0200 +++ /work/SRC/openSUSE:Factory/.python-devpi-client.new.23466/python-devpi-client.changes 2023-07-05 15:31:02.618738445 +0200 @@ -1,0 +2,16 @@ +Tue Jul 4 10:32:15 UTC 2023 - Torsten Gruner <simmpho...@opensuse.org> + +- update to 6.0.5 + * Remember URL when ``devpi use`` causes a 403, so one can + use ``devpi login`` afterwards. + * Fix #978: Quote username and password when adding to URL. + * Fix #980: Remove long deprecated backward compatibility for + old pluggy versions to fix error with pluggy 1.1.0. +- split package to prevent build dependency with python-tox (multibuild) + +------------------------------------------------------------------- +Mon Jul 3 13:00:13 UTC 2023 - Matej Cepl <mc...@suse.com> + +- Add missing dependency + +------------------------------------------------------------------- Old: ---- devpi-client-6.0.4.tar.gz New: ---- _multibuild devpi-client-6.0.5.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-devpi-client.spec ++++++ --- /var/tmp/diff_new_pack.upCwjt/_old 2023-07-05 15:31:03.250742194 +0200 +++ /var/tmp/diff_new_pack.upCwjt/_new 2023-07-05 15:31:03.258742242 +0200 @@ -1,5 +1,5 @@ # -# spec file for package python-devpi-client +# spec file # # Copyright (c) 2023 SUSE LLC # @@ -16,9 +16,17 @@ # +%global flavor @BUILD_FLAVOR@%{nil} +%if "%{flavor}" == "test" +%define psuffix -test +%bcond_without test +%else +%define psuffix %{nil} +%bcond_with test +%endif %{?sle15_python_module_pythons} -Name: python-devpi-client -Version: 6.0.4 +Name: python-devpi-client%{psuffix} +Version: 6.0.5 Release: 0 Summary: Client for devpi License: MIT @@ -34,7 +42,9 @@ Requires: python-build Requires: python-check-manifest >= 0.28 Requires: python-devpi-common >= 3.6.0 +Requires: python-iniconfig Requires: python-pkginfo >= 1.4.2 +Requires: python-platformdirs Requires: python-pluggy >= 0.6.0 Requires: python-py >= 1.4.31 Requires: python-tox >= 3.1.0 @@ -45,9 +55,12 @@ Recommends: python-Sphinx BuildArch: noarch # SECTION test requirements +%if %{with test} BuildRequires: %{python_module Sphinx} BuildRequires: %{python_module build} BuildRequires: %{python_module check-manifest >= 0.28} +BuildRequires: %{python_module colorama} +BuildRequires: %{python_module devpi-client = %{version}} BuildRequires: %{python_module devpi-common >= 3.6.0} BuildRequires: %{python_module devpi-server} BuildRequires: %{python_module pkginfo >= 1.4.2} @@ -57,6 +70,7 @@ BuildRequires: %{python_module tox >= 3.1.0} BuildRequires: %{python_module wheel} BuildRequires: git-core +%endif # /SECTION %python_subpackages @@ -77,11 +91,14 @@ %pyproject_wheel %install +%if !%{with test} %pyproject_install %python_clone -a %{buildroot}%{_bindir}/devpi %python_expand %fdupes %{buildroot}%{$python_sitelib} +%endif %check +%if %{with test} export LANG=en_US.UTF-8 export PYTHONDONTWRITEBYTECODE=1 export PATH=$PATH:%{buildroot}/%{_bindir} @@ -96,6 +113,7 @@ # error deleting VIRTUAL_ENV donttest+=" or test_simple_install_missing_venvdir" %pytest -k "not ($donttest)" +%endif %post %python_install_alternative devpi @@ -103,11 +121,13 @@ %postun %python_uninstall_alternative devpi +%if !%{with test} %files %{python_files} %doc AUTHORS CHANGELOG README.rst %license LICENSE %python_alternative %{_bindir}/devpi %{python_sitelib}/devpi %{python_sitelib}/devpi_client-%{version}*-info +%endif %changelog ++++++ _multibuild ++++++ <multibuild> <package>test</package> </multibuild> ++++++ devpi-client-6.0.4.tar.gz -> devpi-client-6.0.5.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/devpi-client-6.0.4/CHANGELOG new/devpi-client-6.0.5/CHANGELOG --- old/devpi-client-6.0.4/CHANGELOG 2023-04-13 07:14:01.000000000 +0200 +++ new/devpi-client-6.0.5/CHANGELOG 2023-07-02 14:04:11.000000000 +0200 @@ -2,6 +2,19 @@ .. towncrier release notes start +6.0.5 (2023-07-02) +================== + +Bug Fixes +--------- + +- Remember URL when ``devpi use`` causes a 403, so one can use ``devpi login`` afterwards. + +- Fix #978: Quote username and password when adding to URL. + +- Fix #980: Remove long deprecated backward compatibility for old pluggy versions to fix error with pluggy 1.1.0. + + 6.0.4 (2023-04-13) ================== diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/devpi-client-6.0.4/PKG-INFO new/devpi-client-6.0.5/PKG-INFO --- old/devpi-client-6.0.4/PKG-INFO 2023-04-13 07:14:10.173057600 +0200 +++ new/devpi-client-6.0.5/PKG-INFO 2023-07-02 14:04:15.809050800 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: devpi-client -Version: 6.0.4 +Version: 6.0.5 Summary: devpi upload/install/... workflow commands for Python developers Home-page: https://devpi.net Maintainer: Florian Schulze @@ -61,6 +61,19 @@ .. towncrier release notes start +6.0.5 (2023-07-02) +================== + +Bug Fixes +--------- + +- Remember URL when ``devpi use`` causes a 403, so one can use ``devpi login`` afterwards. + +- Fix #978: Quote username and password when adding to URL. + +- Fix #980: Remove long deprecated backward compatibility for old pluggy versions to fix error with pluggy 1.1.0. + + 6.0.4 (2023-04-13) ================== @@ -108,76 +121,3 @@ - Print info when ``DEVPI_INDEX`` environment variable is in use and allow relative index specification for it. - -6.0.0 (2022-07-19) -================== - -Deprecations and Removals -------------------------- - -- Removed support for ``--detox`` option. - -- When uploading we no longer "register" the package first. That requirement was removed from PyPI and devpi-server for some time. - -- Use ``sphinx-build`` command instead of ``setup.py build_sphinx`` when building documentation. - -- Removed tox dependency, instead ``devpi test`` looks for the ``tox`` binary in the path. - -- The ``--venv`` option will abort when no virtualenv exists at the location, it will not create a virtualenv anymore. - - -Features --------- - -- Fix #218: use new pip.conf location by default and warn if the legacy location exists. - -- Fix #38: add ``--user``/``-u`` option to ``use`` command to limit index listing to a specific user. - -- Fix #437: when the ``DEVPI_INDEX`` environment variable is set, it temporarily overwrites the current index. - -- Fix #691: allow anonymous uploads if the server has ``acl_upload=:ANONYMOUS:`` set on index. - -- Fix #863: allow ``--only-docs`` upload for files containing ``.docs.`` instead of ``.doc.`` and support gzipped tar files. - -- The ``--user/-u`` option for ``devpi use`` can be used to switch the current user and the authentication data of previous logins is preserved. - -- Use `build <https://pypi.org/project/build/>`_ package when possible and fall back to ``setup.py`` only for deprecated release types. - -- When the ``DEVPI_USER`` environment variable is set, it temporarily overwrites the current user name. - -- Support query strings on ``path`` for ``getjson`` command. This enables using ``?no_projects=``. - -- The ``devpi index -l [username]`` command now actually lists indexes of other users and works without login. - -- Fix #443 and #444: pass authentication info to pip via environment variable for ``devpi install`` and ``devpi test``. - -- When pushing to an external index with ``pypi:...``, a PyPI token is detected and ``pypitoken`` is installed a new unique time limited token is derived for the upload. - -- With ``devpi use --local`` a local configuration is created in the currently active virtualenv and automatically used as long as the virtualenv is activated. - -- Warn if the server changes the scheme, host or port during ``devpi use``. - -- Using ``--list`` or ``--urls`` with ``use`` command and a URL won't change the current index anymore. - -- Existing authentication data is validated on ``devpi use`` and removed if expired. - - -Bug Fixes ---------- - -- Fix #562: encode username and url in devpiclient_get_password with sys.stdout.encoding. - -- Fix #627: support ``--index`` option when no index is currently selected. - -- Fix #808: Use mkdtemp from Python tempfile module to prevent permission and locking errors during ``devpi test`` and ``devpi upload``. - -- Fix #831: only download matching wheels if ``--select`` is in use. - -- Give helpful error message when specified/configured virtualenv is missing. - - -Other Changes -------------- - -- When there is no json error message only the HTML error code and reason is printed now, to get the full HTML output use the ``--debug`` flag. - diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/devpi-client-6.0.4/devpi/__init__.py new/devpi-client-6.0.5/devpi/__init__.py --- old/devpi-client-6.0.4/devpi/__init__.py 2023-04-13 07:14:01.000000000 +0200 +++ new/devpi-client-6.0.5/devpi/__init__.py 2023-07-02 14:04:11.000000000 +0200 @@ -1,2 +1,2 @@ -__version__ = '6.0.4' +__version__ = '6.0.5' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/devpi-client-6.0.4/devpi/main.py new/devpi-client-6.0.5/devpi/main.py --- old/devpi-client-6.0.4/devpi/main.py 2023-04-13 07:14:01.000000000 +0200 +++ new/devpi-client-6.0.5/devpi/main.py 2023-07-02 14:04:11.000000000 +0200 @@ -59,8 +59,6 @@ def get_pluginmanager(load_entry_points=True): pm = PluginManager("devpiclient") - # support old plugins, but emit deprecation warnings - pm._implprefix = "devpiclient_" pm.add_hookspecs(hookspecs) if load_entry_points: pm.load_setuptools_entrypoints("devpi_client") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/devpi-client-6.0.4/devpi/use.py new/devpi-client-6.0.5/devpi/use.py --- old/devpi-client-6.0.4/devpi/use.py 2023-04-13 07:14:01.000000000 +0200 +++ new/devpi-client-6.0.5/devpi/use.py 2023-07-02 14:04:11.000000000 +0200 @@ -1,5 +1,9 @@ from copy import deepcopy from operator import attrgetter +try: + from urllib.parse import quote as url_quote +except ImportError: + from urllib import quote as url_quote # noqa: F401 import itertools import os import sys @@ -67,8 +71,9 @@ indexserver = URL(self.simpleindex) basic_auth = self.get_basic_auth(indexserver) if basic_auth: - indexserver = indexserver.replace(netloc="%s@%s" % ( - ':'.join(basic_auth), indexserver.netloc)) + (username, password) = basic_auth + indexserver = indexserver.replace( + username=url_quote(username), password=url_quote(password)) return indexserver.url @property @@ -76,8 +81,9 @@ indexserver = self.get_index_url() basic_auth = self.get_basic_auth(indexserver) if basic_auth: - indexserver = indexserver.replace(netloc="%s@%s" % ( - ':'.join(basic_auth), indexserver.netloc)) + (username, password) = basic_auth + indexserver = indexserver.replace( + username=url_quote(username), password=url_quote(password)) return indexserver.url @property @@ -157,7 +163,7 @@ auth = self.get_auth() if auth is not None: url = url.replace( - username=auth[0], password=auth[1]) + username=url_quote(auth[0]), password=url_quote(auth[1])) return url def _get_basic_auth_dict(self): @@ -287,12 +293,20 @@ hub.info("Using existing client cert for '%s'." % url.url) def call_http_api(verify): - return hub.http_api( + r = hub.http_api( "get", url.addpath("+api"), quiet=True, auth=self.get_auth(url=url), + fatal=False, basic_auth=basic_auth or self.get_basic_auth(url=url), cert=client_cert or self.get_client_cert(url=url), verify=verify) + if r.status_code == 403: + r = hub.http_api( + "get", url.addpath("+api"), quiet=True, + basic_auth=basic_auth or self.get_basic_auth(url=url), + cert=client_cert or self.get_client_cert(url=url), + verify=verify) + return r try: # Try calling http_api with ssl verification active r = call_http_api(verify=True) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/devpi-client-6.0.4/devpi_client.egg-info/PKG-INFO new/devpi-client-6.0.5/devpi_client.egg-info/PKG-INFO --- old/devpi-client-6.0.4/devpi_client.egg-info/PKG-INFO 2023-04-13 07:14:10.000000000 +0200 +++ new/devpi-client-6.0.5/devpi_client.egg-info/PKG-INFO 2023-07-02 14:04:15.000000000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: devpi-client -Version: 6.0.4 +Version: 6.0.5 Summary: devpi upload/install/... workflow commands for Python developers Home-page: https://devpi.net Maintainer: Florian Schulze @@ -61,6 +61,19 @@ .. towncrier release notes start +6.0.5 (2023-07-02) +================== + +Bug Fixes +--------- + +- Remember URL when ``devpi use`` causes a 403, so one can use ``devpi login`` afterwards. + +- Fix #978: Quote username and password when adding to URL. + +- Fix #980: Remove long deprecated backward compatibility for old pluggy versions to fix error with pluggy 1.1.0. + + 6.0.4 (2023-04-13) ================== @@ -108,76 +121,3 @@ - Print info when ``DEVPI_INDEX`` environment variable is in use and allow relative index specification for it. - -6.0.0 (2022-07-19) -================== - -Deprecations and Removals -------------------------- - -- Removed support for ``--detox`` option. - -- When uploading we no longer "register" the package first. That requirement was removed from PyPI and devpi-server for some time. - -- Use ``sphinx-build`` command instead of ``setup.py build_sphinx`` when building documentation. - -- Removed tox dependency, instead ``devpi test`` looks for the ``tox`` binary in the path. - -- The ``--venv`` option will abort when no virtualenv exists at the location, it will not create a virtualenv anymore. - - -Features --------- - -- Fix #218: use new pip.conf location by default and warn if the legacy location exists. - -- Fix #38: add ``--user``/``-u`` option to ``use`` command to limit index listing to a specific user. - -- Fix #437: when the ``DEVPI_INDEX`` environment variable is set, it temporarily overwrites the current index. - -- Fix #691: allow anonymous uploads if the server has ``acl_upload=:ANONYMOUS:`` set on index. - -- Fix #863: allow ``--only-docs`` upload for files containing ``.docs.`` instead of ``.doc.`` and support gzipped tar files. - -- The ``--user/-u`` option for ``devpi use`` can be used to switch the current user and the authentication data of previous logins is preserved. - -- Use `build <https://pypi.org/project/build/>`_ package when possible and fall back to ``setup.py`` only for deprecated release types. - -- When the ``DEVPI_USER`` environment variable is set, it temporarily overwrites the current user name. - -- Support query strings on ``path`` for ``getjson`` command. This enables using ``?no_projects=``. - -- The ``devpi index -l [username]`` command now actually lists indexes of other users and works without login. - -- Fix #443 and #444: pass authentication info to pip via environment variable for ``devpi install`` and ``devpi test``. - -- When pushing to an external index with ``pypi:...``, a PyPI token is detected and ``pypitoken`` is installed a new unique time limited token is derived for the upload. - -- With ``devpi use --local`` a local configuration is created in the currently active virtualenv and automatically used as long as the virtualenv is activated. - -- Warn if the server changes the scheme, host or port during ``devpi use``. - -- Using ``--list`` or ``--urls`` with ``use`` command and a URL won't change the current index anymore. - -- Existing authentication data is validated on ``devpi use`` and removed if expired. - - -Bug Fixes ---------- - -- Fix #562: encode username and url in devpiclient_get_password with sys.stdout.encoding. - -- Fix #627: support ``--index`` option when no index is currently selected. - -- Fix #808: Use mkdtemp from Python tempfile module to prevent permission and locking errors during ``devpi test`` and ``devpi upload``. - -- Fix #831: only download matching wheels if ``--select`` is in use. - -- Give helpful error message when specified/configured virtualenv is missing. - - -Other Changes -------------- - -- When there is no json error message only the HTML error code and reason is printed now, to get the full HTML output use the ``--debug`` flag. - diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/devpi-client-6.0.4/pyproject.toml new/devpi-client-6.0.5/pyproject.toml --- old/devpi-client-6.0.4/pyproject.toml 2023-04-13 07:14:01.000000000 +0200 +++ new/devpi-client-6.0.5/pyproject.toml 2023-07-02 14:04:11.000000000 +0200 @@ -3,6 +3,7 @@ filename = "CHANGELOG" directory = "news/" title_format = "{version} ({project_date})" +template = "news/_template.rst" [[tool.towncrier.type]] directory = "removal" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/devpi-client-6.0.4/setup.py new/devpi-client-6.0.5/setup.py --- old/devpi-client-6.0.4/setup.py 2023-04-13 07:14:01.000000000 +0200 +++ new/devpi-client-6.0.5/setup.py 2023-07-02 14:04:11.000000000 +0200 @@ -44,7 +44,7 @@ description="devpi upload/install/... workflow commands for Python " "developers", long_description="\n\n".join([README, CHANGELOG]), - version='6.0.4', + version='6.0.5', packages=['devpi'], install_requires=install_requires, extras_require=extras_require, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/devpi-client-6.0.4/testing/functional.py new/devpi-client-6.0.5/testing/functional.py --- old/devpi-client-6.0.4/testing/functional.py 2023-04-13 07:14:01.000000000 +0200 +++ new/devpi-client-6.0.5/testing/functional.py 2023-07-02 14:04:11.000000000 +0200 @@ -348,6 +348,27 @@ @pytest.mark.nomocking +class TestProjectThings: + def test_toxresult(self, mapp): + import json + mapp.create_and_use('pruser1/dev') + content = mapp.makepkg("hello-1.0.tar.gz", b"content", "hello", "1.0") + mapp.upload_file_pypi("hello-1.0.tar.gz", content, "hello", "1.0") + (pkg_url,) = mapp.getreleaseslist("hello") + tox_result_data = dict(foo="bar") + mapp.upload_toxresult(pkg_url, json.dumps(tox_result_data)) + info = mapp.getjson("/%s/hello" % mapp.api.stagename) + (toxresult_url,) = [ + x["href"] + for x in info["result"]["1.0"]["+links"] + if "for_href" in x] + r = mapp.downloadrelease(200, pkg_url) + assert r == content + r = mapp.downloadrelease(200, toxresult_url) + assert json.loads(r.decode('utf-8')) == tox_result_data + + +@pytest.mark.nomocking class TestMirrorIndexThings: def test_create_and_delete_mirror_index(self, mapp, simpypi): mapp.create_and_login_user('mirror1') diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/devpi-client-6.0.4/testing/test_functional.py new/devpi-client-6.0.5/testing/test_functional.py --- old/devpi-client-6.0.4/testing/test_functional.py 2023-04-13 07:14:01.000000000 +0200 +++ new/devpi-client-6.0.5/testing/test_functional.py 2023-07-02 14:04:11.000000000 +0200 @@ -5,9 +5,11 @@ import tarfile import time -from .functional import TestUserThings, TestIndexThings # noqa +from .functional import TestIndexThings # noqa: F401 +from .functional import TestProjectThings # noqa: F401 +from .functional import TestUserThings # noqa: F401 try: - from .functional import TestMirrorIndexThings # noqa + from .functional import TestMirrorIndexThings # noqa: F401 except ImportError: # when testing with older devpi-server class TestMirrorIndexThings: @@ -15,7 +17,7 @@ pytest.skip( "Couldn't import TestMirrorIndexThings from devpi server tests.") try: - from .functional import TestIndexPushThings # noqa + from .functional import TestIndexPushThings # noqa: F401 except ImportError: # when testing with older devpi-server class TestIndexPushThings: @@ -234,6 +236,11 @@ pkg.write_binary(content) self.devpi('upload', pkg.strpath) + def upload_toxresult(self, url, content, code=200): + r = requests.post(url, content) + assert r.status_code == code + return r.json() + def push(self, name, version, index, indexname=None, code=200): self.devpi('push', '%s==%s' % (name, version), index, code=code) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/devpi-client-6.0.4/testing/test_upload.py new/devpi-client-6.0.5/testing/test_upload.py --- old/devpi-client-6.0.4/testing/test_upload.py 2023-04-13 07:14:01.000000000 +0200 +++ new/devpi-client-6.0.5/testing/test_upload.py 2023-07-02 14:04:11.000000000 +0200 @@ -711,12 +711,8 @@ "index.html": "<html/>"}}) tmpdir = py.path.local() runproc(tmpdir, "python setup.py sdist --format=zip".split()) - bpath = tmpdir.join('build') - out = runproc( - tmpdir, - "python setup.py build_sphinx -E --build-dir".split() + [bpath.strpath]) dist = tmpdir.join("dist") - zip_dir(bpath.join('html'), dist.join("%s.doc.zip" % name_version_str)) + zip_dir(tmpdir.join('doc'), dist.join("%s.doc.zip" % name_version_str)) assert len(dist.listdir()) == 2 (p, dp) = sorted(dist.listdir(), key=lambda x: '.doc.zip' in x.basename) hub = devpi("upload", "--no-isolation", p, dp) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/devpi-client-6.0.4/tox.ini new/devpi-client-6.0.5/tox.ini --- old/devpi-client-6.0.4/tox.ini 2023-04-13 07:14:01.000000000 +0200 +++ new/devpi-client-6.0.5/tox.ini 2023-07-02 14:04:11.000000000 +0200 @@ -27,8 +27,8 @@ devpi-server;python_version!="2.7" pypitoken;python_version>="3.7" importlib.metadata;python_version<"3.8" - py35: ruamel.yaml - py35: pyparsing<3 + ruamel.yaml<0.17.22;python_version<"3.6" + pyparsing<3;python_version<"3.6" mock py!=1.4.32 sphinx @@ -39,6 +39,14 @@ commands = py.test --instafail --maxfail=3 {posargs} +[testenv:pypy] +commands = py.test --instafail --maxfail=3 --timeout 300 {posargs} + + +[testenv:pypy3] +commands = py.test --instafail --maxfail=3 --timeout 300 {posargs} + + [testenv:py27-version] deps = commands = devpi --version