Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-devpi-common for
openSUSE:Factory checked in at 2021-08-03 22:48:57
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-devpi-common (Old)
and /work/SRC/openSUSE:Factory/.python-devpi-common.new.1899 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-devpi-common"
Tue Aug 3 22:48:57 2021 rev:2 rq:909946 version:3.6.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-devpi-common/python-devpi-common.changes
2019-09-27 14:46:17.405101509 +0200
+++
/work/SRC/openSUSE:Factory/.python-devpi-common.new.1899/python-devpi-common.changes
2021-08-03 22:49:31.396440235 +0200
@@ -1,0 +2,10 @@
+Mon Aug 2 13:13:26 UTC 2021 - Mark??ta Machov?? <[email protected]>
+
+- Update to 3.6.0
+ * support data-yanked attribute in HTMLPage parser.
+ * Replace ???cached_property??? with ???lazy??? package, which uses __dict__
+ directly for much faster reads.
+ * Hide password from URL representation.
+ * Allow replacement of individual netloc parts with URL.replace method.
+
+-------------------------------------------------------------------
Old:
----
devpi-common-3.4.0.tar.gz
New:
----
devpi-common-3.6.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-devpi-common.spec ++++++
--- /var/tmp/diff_new_pack.IdG8Ys/_old 2021-08-03 22:49:31.944439574 +0200
+++ /var/tmp/diff_new_pack.IdG8Ys/_new 2021-08-03 22:49:31.948439569 +0200
@@ -1,7 +1,7 @@
#
# spec file for package python-devpi-common
#
-# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2021 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-common
-Version: 3.4.0
+Version: 3.6.0
Release: 0
Summary: Utilities jointly used by devpi-server and devpi-client
License: MIT
@@ -33,6 +33,7 @@
BuildArch: noarch
# SECTION test requirements
BuildRequires: %{python_module py >= 1.4.20}
+BuildRequires: %{python_module lazy}
BuildRequires: %{python_module pytest}
BuildRequires: %{python_module requests >= 2.3.0}
# /SECTION
++++++ devpi-common-3.4.0.tar.gz -> devpi-common-3.6.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/devpi-common-3.4.0/CHANGELOG
new/devpi-common-3.6.0/CHANGELOG
--- old/devpi-common-3.4.0/CHANGELOG 2019-06-28 10:45:14.000000000 +0200
+++ new/devpi-common-3.6.0/CHANGELOG 2020-09-13 12:09:14.000000000 +0200
@@ -2,6 +2,28 @@
.. towncrier release notes start
+3.6.0 (2020-09-13)
+==================
+
+Features
+--------
+
+- Hide password from URL representation.
+
+- Allow replacement of individual netloc parts with URL.replace method.
+
+
+3.5.0 (2020-05-04)
+==================
+
+Features
+--------
+
+- fix #792: support data-yanked attribute in HTMLPage parser.
+
+- Replace "cached_property" with "lazy" package, which uses __dict__ directly
for much faster reads.
+
+
3.4.0 (2019-06-28)
==================
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/devpi-common-3.4.0/PKG-INFO
new/devpi-common-3.6.0/PKG-INFO
--- old/devpi-common-3.4.0/PKG-INFO 2019-06-28 10:45:15.000000000 +0200
+++ new/devpi-common-3.6.0/PKG-INFO 2020-09-13 12:09:18.000000000 +0200
@@ -1,11 +1,11 @@
Metadata-Version: 1.2
Name: devpi-common
-Version: 3.4.0
+Version: 3.6.0
Summary: utilities jointly used by devpi-server and devpi-client
Home-page: https://github.com/devpi/devpi
Maintainer: Holger Krekel
Maintainer-email: [email protected]
-License: UNKNOWN
+License: MIT
Description:
This package contains utility functions used by devpi-server and
devpi-client.
@@ -20,49 +20,53 @@
.. towncrier release notes start
- 3.4.0 (2019-06-28)
+ 3.6.0 (2020-09-13)
==================
Features
--------
- - Added full query string support to URL object.
+ - Hide password from URL representation.
+ - Allow replacement of individual netloc parts with URL.replace method.
- 3.3.2 (2019-04-04)
+
+ 3.5.0 (2020-05-04)
==================
- Bug Fixes
- ---------
+ Features
+ --------
- - Fix #641: support change of return code from string to integer in
tox 3.8.x.
+ - fix #792: support data-yanked attribute in HTMLPage parser.
+ - Replace "cached_property" with "lazy" package, which uses __dict__
directly for much faster reads.
- 3.3.1 (2018-09-18)
+
+ 3.4.0 (2019-06-28)
==================
- Bug Fixes
- ---------
+ Features
+ --------
- - Fix uploading documentation in devpi-client < 4.1.0.
+ - Added full query string support to URL object.
- 3.3.0 (2018-09-08)
+ 3.3.2 (2019-04-04)
==================
- Features
- --------
+ Bug Fixes
+ ---------
- - Add parsing of data-requires-python to link parser. Thanks to Sergey
Kolosov
+ - Fix #641: support change of return code from string to integer in
tox 3.8.x.
- 3.2.3 (2018-05-04)
+ 3.3.1 (2018-09-18)
==================
- Deprecations and Removals
- -------------------------
+ Bug Fixes
+ ---------
- - remove unused vendored _verlib.py module
+ - Fix uploading documentation in devpi-client < 4.1.0.
Platform: UNKNOWN
@@ -71,3 +75,9 @@
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: System Administrators
Classifier: License :: OSI Approved :: MIT License
+Classifier: Programming Language :: Python :: Implementation :: PyPy
+Classifier: Programming Language :: Python :: 2.7
+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-common-3.4.0/devpi_common/__init__.py
new/devpi-common-3.6.0/devpi_common/__init__.py
--- old/devpi-common-3.4.0/devpi_common/__init__.py 2019-06-28
10:45:14.000000000 +0200
+++ new/devpi-common-3.6.0/devpi_common/__init__.py 2020-09-13
12:09:14.000000000 +0200
@@ -1,2 +1,2 @@
#
-__version__ = '3.4.0'
+__version__ = '3.6.0'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/devpi-common-3.4.0/devpi_common/metadata.py
new/devpi-common-3.6.0/devpi_common/metadata.py
--- old/devpi-common-3.4.0/devpi_common/metadata.py 2019-06-28
10:45:14.000000000 +0200
+++ new/devpi-common-3.6.0/devpi_common/metadata.py 2020-09-13
12:09:14.000000000 +0200
@@ -3,6 +3,7 @@
import py
from pkg_resources import parse_version, Requirement
from .types import CompareMixin
+from .types import cached_property
from .validation import normalize_name
@@ -122,11 +123,17 @@
class Version(CompareMixin):
def __init__(self, versionstring):
self.string = versionstring
- self.cmpval = parse_version(versionstring)
+
+ @cached_property
+ def cmpval(self):
+ return parse_version(self.string)
def __str__(self):
return self.string
+ def __repr__(self):
+ return "Version(%r)" % self.string
+
def is_prerelease(self):
if hasattr(self.cmpval, 'is_prerelease'):
return self.cmpval.is_prerelease
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/devpi-common-3.4.0/devpi_common/types.py
new/devpi-common-3.6.0/devpi_common/types.py
--- old/devpi-common-3.4.0/devpi_common/types.py 2019-06-28
10:45:14.000000000 +0200
+++ new/devpi-common-3.6.0/devpi_common/types.py 2020-09-13
12:09:14.000000000 +0200
@@ -1,4 +1,5 @@
from __future__ import absolute_import, unicode_literals
+from lazy import lazy as cached_property # noqa
from types import FunctionType
import hashlib
import operator
@@ -26,23 +27,6 @@
return wrap
-def cached_property(f):
- """returns a cached property that is calculated by function f"""
- def get(self):
- try:
- return self._property_cache[f]
- except AttributeError:
- self._property_cache = {}
- except KeyError:
- pass
- x = self._property_cache[f] = f(self)
- return x
-
- def set(self, val):
- propcache = self.__dict__.setdefault("_property_cache", {})
- propcache[f] = val
- return property(get, set)
-
class CompareMixin(object):
def _cmp(self, other, op):
return op(self.cmpval, other.cmpval)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/devpi-common-3.4.0/devpi_common/url.py
new/devpi-common-3.6.0/devpi_common/url.py
--- old/devpi-common-3.4.0/devpi_common/url.py 2019-06-28 10:45:14.000000000
+0200
+++ new/devpi-common-3.6.0/devpi_common/url.py 2020-09-13 12:09:14.000000000
+0200
@@ -40,11 +40,17 @@
__bool__ = __nonzero__
+ def __str__(self):
+ return self.url
+
def __repr__(self):
- c = repr(self.url.encode("utf8"))
+ cloaked = self
+ if self.password:
+ cloaked = self.replace(password="****")
+ cloaked = repr(cloaked.url.encode("utf8"))
if sys.version_info >= (3,0):
- c = c.lstrip("b")
- return "<URL %s>" % c
+ cloaked = cloaked.lstrip("b")
+ return "URL(%s)" % cloaked
def __eq__(self, other):
return self.url == getattr(other, "url", other)
@@ -76,6 +82,38 @@
def replace(self, **kwargs):
_parsed = self._parsed
url = []
+ if set(kwargs).intersection(('username', 'password', 'hostname',
'port')):
+ netloc = ""
+ if "username" in kwargs:
+ if kwargs["username"]:
+ netloc += kwargs["username"]
+ elif self.username:
+ netloc += self.username
+ if "password" in kwargs:
+ if kwargs["password"]:
+ netloc += ":" + kwargs["password"]
+ elif self.password:
+ netloc += ":" + self.password
+ if netloc:
+ netloc += "@"
+ if "hostname" in kwargs:
+ if not kwargs["hostname"]:
+ raise ValueError("Can't use empty 'hostname'.")
+ netloc += kwargs["hostname"]
+ else:
+ if self.hostname:
+ netloc += self.hostname
+ if "port" in kwargs:
+ if kwargs["port"]:
+ netloc += ":%s" % kwargs["port"]
+ elif self.port:
+ netloc += ":%s" % self.port
+ if netloc != self.netloc:
+ if "netloc" in kwargs:
+ raise ValueError(
+ "Can't use 'netloc' together with any of "
+ "'username', 'password', 'hostname', 'port'.")
+ kwargs["netloc"] = netloc
for field in ('scheme', 'netloc', 'path', 'query', 'fragment'):
value = kwargs.get(field, getattr(_parsed, field))
if field == 'query':
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/devpi-common-3.4.0/devpi_common/vendor/_pip.py
new/devpi-common-3.6.0/devpi_common/vendor/_pip.py
--- old/devpi-common-3.4.0/devpi_common/vendor/_pip.py 2019-06-28
10:45:14.000000000 +0200
+++ new/devpi-common-3.6.0/devpi_common/vendor/_pip.py 2020-09-13
12:09:14.000000000 +0200
@@ -79,7 +79,8 @@
continue
pyrequire = anchor.get('data-requires-python')
- yield Link(url, self, requires_python=pyrequire)
+ yanked = 'data-yanked' in anchor
+ yield Link(url, self, requires_python=pyrequire, yanked=yanked)
def rel_links(self, rels=('homepage', 'download')):
for url in self.explicit_rel_links(rels):
@@ -132,18 +133,23 @@
class Link(object):
# CHANGED from PIP original: store requires_python
- def __init__(self, url, comes_from=None, requires_python=None):
+ def __init__(self, url, comes_from=None, requires_python=None,
yanked=False):
self.url = url
self.comes_from = comes_from
self.requires_python = requires_python if requires_python else None
+ self.yanked = yanked
def __str__(self):
if self.requires_python:
rp = ' (requires-python:%s)' % self.requires_python
else:
rp = ''
+ if self.yanked:
+ yanked = ' (yanked)'
+ else:
+ yanked = ''
if self.comes_from:
- return '%s (from %s)%s' % (self.url, self.comes_from, rp)
+ return '%s (from %s)%s%s' % (self.url, self.comes_from, rp, yanked)
else:
return str(self.url)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/devpi-common-3.4.0/devpi_common.egg-info/PKG-INFO
new/devpi-common-3.6.0/devpi_common.egg-info/PKG-INFO
--- old/devpi-common-3.4.0/devpi_common.egg-info/PKG-INFO 2019-06-28
10:45:15.000000000 +0200
+++ new/devpi-common-3.6.0/devpi_common.egg-info/PKG-INFO 2020-09-13
12:09:18.000000000 +0200
@@ -1,11 +1,11 @@
Metadata-Version: 1.2
Name: devpi-common
-Version: 3.4.0
+Version: 3.6.0
Summary: utilities jointly used by devpi-server and devpi-client
Home-page: https://github.com/devpi/devpi
Maintainer: Holger Krekel
Maintainer-email: [email protected]
-License: UNKNOWN
+License: MIT
Description:
This package contains utility functions used by devpi-server and
devpi-client.
@@ -20,49 +20,53 @@
.. towncrier release notes start
- 3.4.0 (2019-06-28)
+ 3.6.0 (2020-09-13)
==================
Features
--------
- - Added full query string support to URL object.
+ - Hide password from URL representation.
+ - Allow replacement of individual netloc parts with URL.replace method.
- 3.3.2 (2019-04-04)
+
+ 3.5.0 (2020-05-04)
==================
- Bug Fixes
- ---------
+ Features
+ --------
- - Fix #641: support change of return code from string to integer in
tox 3.8.x.
+ - fix #792: support data-yanked attribute in HTMLPage parser.
+ - Replace "cached_property" with "lazy" package, which uses __dict__
directly for much faster reads.
- 3.3.1 (2018-09-18)
+
+ 3.4.0 (2019-06-28)
==================
- Bug Fixes
- ---------
+ Features
+ --------
- - Fix uploading documentation in devpi-client < 4.1.0.
+ - Added full query string support to URL object.
- 3.3.0 (2018-09-08)
+ 3.3.2 (2019-04-04)
==================
- Features
- --------
+ Bug Fixes
+ ---------
- - Add parsing of data-requires-python to link parser. Thanks to Sergey
Kolosov
+ - Fix #641: support change of return code from string to integer in
tox 3.8.x.
- 3.2.3 (2018-05-04)
+ 3.3.1 (2018-09-18)
==================
- Deprecations and Removals
- -------------------------
+ Bug Fixes
+ ---------
- - remove unused vendored _verlib.py module
+ - Fix uploading documentation in devpi-client < 4.1.0.
Platform: UNKNOWN
@@ -71,3 +75,9 @@
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: System Administrators
Classifier: License :: OSI Approved :: MIT License
+Classifier: Programming Language :: Python :: Implementation :: PyPy
+Classifier: Programming Language :: Python :: 2.7
+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-common-3.4.0/devpi_common.egg-info/SOURCES.txt
new/devpi-common-3.6.0/devpi_common.egg-info/SOURCES.txt
--- old/devpi-common-3.4.0/devpi_common.egg-info/SOURCES.txt 2019-06-28
10:45:15.000000000 +0200
+++ new/devpi-common-3.6.0/devpi_common.egg-info/SOURCES.txt 2020-09-13
12:09:18.000000000 +0200
@@ -2,6 +2,7 @@
LICENSE
MANIFEST.in
README.rst
+pyproject.toml
setup.cfg
setup.py
tox.ini
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/devpi-common-3.4.0/devpi_common.egg-info/requires.txt
new/devpi-common-3.6.0/devpi_common.egg-info/requires.txt
--- old/devpi-common-3.4.0/devpi_common.egg-info/requires.txt 2019-06-28
10:45:15.000000000 +0200
+++ new/devpi-common-3.6.0/devpi_common.egg-info/requires.txt 2020-09-13
12:09:18.000000000 +0200
@@ -1,2 +1,3 @@
-requests>=2.3.0
+lazy
py>=1.4.20
+requests>=2.3.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/devpi-common-3.4.0/pyproject.toml
new/devpi-common-3.6.0/pyproject.toml
--- old/devpi-common-3.4.0/pyproject.toml 1970-01-01 01:00:00.000000000
+0100
+++ new/devpi-common-3.6.0/pyproject.toml 2020-09-13 12:09:14.000000000
+0200
@@ -0,0 +1,26 @@
+[tool.towncrier]
+package = "devpi_common"
+filename = "CHANGELOG"
+directory = "news/"
+title_format = "{version} ({project_date})"
+template = "news/_template.rst"
+
+ [[tool.towncrier.type]]
+ directory = "removal"
+ name = "Deprecations and Removals"
+ showcontent = true
+
+ [[tool.towncrier.type]]
+ directory = "feature"
+ name = "Features"
+ showcontent = true
+
+ [[tool.towncrier.type]]
+ directory = "bugfix"
+ name = "Bug Fixes"
+ showcontent = true
+
+ [[tool.towncrier.type]]
+ directory = "other"
+ name = "Other Changes"
+ showcontent = true
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/devpi-common-3.4.0/setup.py
new/devpi-common-3.6.0/setup.py
--- old/devpi-common-3.4.0/setup.py 2019-06-28 10:45:14.000000000 +0200
+++ new/devpi-common-3.6.0/setup.py 2020-09-13 12:09:14.000000000 +0200
@@ -3,11 +3,15 @@
import io
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
@@ -26,17 +30,24 @@
name="devpi-common",
description="utilities jointly used by devpi-server and devpi-client",
long_description="\n\n".join([README, CHANGELOG]),
- version='3.4.0',
- packages=find_packages(),
- install_requires=["requests>=2.3.0", "py>=1.4.20"],
+ version='3.6.0',
+ packages=['devpi_common', 'devpi_common.vendor'],
+ install_requires=[
+ "lazy",
+ "py>=1.4.20",
+ "requests>=2.3.0"],
url="https://github.com/devpi/devpi",
maintainer="Holger Krekel",
maintainer_email="[email protected]",
+ license="MIT",
classifiers=[
"Development Status :: 5 - Production/Stable",
"Environment :: Web Environment",
"Intended Audience :: Developers",
"Intended Audience :: System Administrators",
"License :: OSI Approved :: MIT License",
- ],
+ "Programming Language :: Python :: Implementation :: PyPy",
+ ] + [
+ ("Programming Language :: Python :: %s" % x)
+ for x in "2.7 3.4 3.5 3.6 3.7".split()],
)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/devpi-common-3.4.0/testing/test_url.py
new/devpi-common-3.6.0/testing/test_url.py
--- old/devpi-common-3.4.0/testing/test_url.py 2019-06-28 10:45:14.000000000
+0200
+++ new/devpi-common-3.6.0/testing/test_url.py 2020-09-13 12:09:14.000000000
+0200
@@ -20,10 +20,16 @@
def test_repr(self):
d = URL("http://host.com/path")
- assert repr(d) == "<URL 'http://host.com/path'>"
+ assert repr(d) == "URL('http://host.com/path')"
d = URL("http://host.com/path?foo=bar")
- assert repr(d) == "<URL 'http://host.com/path?foo=bar'>"
+ assert repr(d) == "URL('http://host.com/path?foo=bar')"
assert d.query == "foo=bar"
+ d = URL("http://foo:[email protected]/path")
+ assert repr(d) == "URL('http://foo:****@host.com/path')"
+
+ def test_str(self):
+ d = URL("http://foo:[email protected]/path")
+ assert str(d) == "http://foo:[email protected]/path"
def test_parentbasename(self):
d = URL("http://codespeak.net/simple/basename/")
@@ -240,6 +246,46 @@
# trying to change something not existing does nothing
assert url.replace(foo='https').url == "http://qwe/foo?bar=ham#hash"
+ def test_replace_netloc_parts(self):
+ url = URL("http://example.com")
+ assert url.replace(username="foo").url == "http://[email protected]"
+ assert url.replace(password="foo").url == "http://:[email protected]"
+ assert url.replace(hostname="foo").url == "http://foo"
+ assert url.replace(port="8080").url == "http://example.com:8080"
+ # original shouldn't have changed
+ assert url.url == "http://example.com"
+ url = URL("http://[email protected]")
+ assert url.replace(username="foo").url == "http://[email protected]"
+ assert url.replace(password="foo").url == "http://bar:[email protected]"
+ assert url.replace(hostname="foo").url == "http://bar@foo"
+ assert url.replace(port="8080").url == "http://[email protected]:8080"
+ # original shouldn't have changed
+ assert url.url == "http://[email protected]"
+ url = URL("http://bar:[email protected]")
+ assert url.replace(username="foo").url ==
"http://foo:[email protected]"
+ assert url.replace(password="foo").url == "http://bar:[email protected]"
+ assert url.replace(hostname="foo").url == "http://bar:secret@foo"
+ assert url.replace(port="8080").url ==
"http://bar:[email protected]:8080"
+ # original shouldn't have changed
+ assert url.url == "http://bar:[email protected]"
+ url = URL("http://example.com:8080")
+ assert url.replace(username="foo").url ==
"http://[email protected]:8080"
+ assert url.replace(password="foo").url ==
"http://:[email protected]:8080"
+ assert url.replace(hostname="foo").url == "http://foo:8080"
+ assert url.replace(port="1234").url == "http://example.com:1234"
+ # original shouldn't have changed
+ assert url.url == "http://example.com:8080"
+ url = URL("http://bar:[email protected]:8080")
+ assert url.replace(username=None).url ==
"http://:[email protected]:8080"
+ assert url.replace(password=None).url == "http://[email protected]:8080"
+ with pytest.raises(ValueError):
+ url.replace(hostname=None)
+ assert url.replace(port=None).url == "http://bar:[email protected]"
+ with pytest.raises(ValueError):
+ url.replace(hostname="foo", netloc="bar")
+ # original shouldn't have changed
+ assert url.url == "http://bar:[email protected]:8080"
+
def test_replace_nothing(self):
url = URL("http://qwe/foo?bar=ham#hash")
new_url = url.replace()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/devpi-common-3.4.0/tox.ini
new/devpi-common-3.6.0/tox.ini
--- old/devpi-common-3.4.0/tox.ini 2019-06-28 10:45:14.000000000 +0200
+++ new/devpi-common-3.6.0/tox.ini 2020-09-13 12:09:14.000000000 +0200
@@ -1,19 +1,18 @@
[pytest]
norecursedirs = attic .tox
-addopts = -ra --flake8 -W once::DeprecationWarning
+addopts = -r a --flake8 -W once::DeprecationWarning -W
once::pytest.PytestDeprecationWarning
flake8-ignore =
* E501
setup.py E121 E123
*.py E114 E116 E126 E127 E128 E202 E225 E226 E227 E231 E261 E265 E266 E272
E301 E302 E303 E305 E306 E741 W391
-rsyncdirs = devpi testing
-rsyncignore = .tox
[tox]
-envlist = py27,py34,py35,pypy
+envlist = py27,py34,py38,pypy,pypy3
[testenv]
-deps = pytest
+deps = py34: colorama<=0.4.1 ; sys_platform == 'win32'
+ pytest
pytest-flake8
commands = py.test {posargs}