Hello community,
here is the log from the commit of package python-oslo.versionedobjects for
openSUSE:Factory checked in at 2020-06-05 20:15:37
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-oslo.versionedobjects (Old)
and /work/SRC/openSUSE:Factory/.python-oslo.versionedobjects.new.3606
(New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-oslo.versionedobjects"
Fri Jun 5 20:15:37 2020 rev:10 rq:803602 version:2.0.2
Changes:
--------
---
/work/SRC/openSUSE:Factory/python-oslo.versionedobjects/python-oslo.versionedobjects.changes
2020-03-24 22:32:22.597090327 +0100
+++
/work/SRC/openSUSE:Factory/.python-oslo.versionedobjects.new.3606/python-oslo.versionedobjects.changes
2020-06-05 20:19:39.659753615 +0200
@@ -1,0 +2,17 @@
+Tue May 12 09:50:26 UTC 2020 - [email protected]
+
+- update to version 2.0.2
+ - tox: Keeping going with docs
+ - Drop use of six
+ - Bump to hacking 2.x
+ - Use unittest.mock instead of third party mock
+ - remove outdated header
+ - Import ABCs from collections.abc
+ - [ussuri][goal] Drop python 2.7 support and testing
+ - Migrate grenade jobs to py3
+ - Provide stable getargspec() behavior for method fingerprinting
+ - Update master for stable/train
+ - Handle unregistered nested objects
+ - gitignore: Ignore reno artefacts
+
+-------------------------------------------------------------------
Old:
----
oslo.versionedobjects-1.36.1.tar.gz
New:
----
oslo.versionedobjects-2.0.2.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-oslo.versionedobjects.spec ++++++
--- /var/tmp/diff_new_pack.flb9Fo/_old 2020-06-05 20:19:40.835757613 +0200
+++ /var/tmp/diff_new_pack.flb9Fo/_new 2020-06-05 20:19:40.839757627 +0200
@@ -17,13 +17,13 @@
Name: python-oslo.versionedobjects
-Version: 1.36.1
+Version: 2.0.2
Release: 0
Summary: Oslo Versioned Objects library
License: Apache-2.0
Group: Development/Languages/Python
URL: https://launchpad.net/oslo.versionedobjects
-Source0:
https://files.pythonhosted.org/packages/source/o/oslo.versionedobjects/oslo.versionedobjects-1.36.1.tar.gz
+Source0:
https://files.pythonhosted.org/packages/source/o/oslo.versionedobjects/oslo.versionedobjects-2.0.2.tar.gz
BuildRequires: openstack-macros
BuildRequires: python3-iso8601 >= 0.1.11
BuildRequires: python3-jsonschema
@@ -62,7 +62,7 @@
Requires: python3-oslo.messaging >= 5.29.0
Requires: python3-oslo.serialization >= 2.18.0
Requires: python3-oslo.utils >= 3.33.0
-Requires: python3-six >= 1.10.0
+Requires: python3-six
%description -n python3-oslo.versionedobjects
oslo.versionedobjects library deals with DB schema being at different versions
@@ -84,7 +84,7 @@
This package contains documentation files for %{name}.
%prep
-%autosetup -p1 -n oslo.versionedobjects-1.36.1
+%autosetup -p1 -n oslo.versionedobjects-2.0.2
%py_req_cleanup
%build
++++++ _service ++++++
--- /var/tmp/diff_new_pack.flb9Fo/_old 2020-06-05 20:19:40.871757736 +0200
+++ /var/tmp/diff_new_pack.flb9Fo/_new 2020-06-05 20:19:40.875757750 +0200
@@ -1,8 +1,8 @@
<services>
<service mode="disabled" name="renderspec">
- <param
name="input-template">https://raw.githubusercontent.com/openstack/rpm-packaging/stable/train/openstack/oslo.versionedobjects/oslo.versionedobjects.spec.j2</param>
+ <param
name="input-template">https://opendev.org/openstack/rpm-packaging/raw/branch/stable/ussuri/openstack/oslo.versionedobjects/oslo.versionedobjects.spec.j2</param>
<param name="output-name">python-oslo.versionedobjects.spec</param>
- <param
name="requirements">https://raw.githubusercontent.com/openstack/oslo.versionedobjects/stable/train/requirements.txt</param>
+ <param
name="requirements">https://opendev.org/openstack/oslo.versionedobjects/raw/branch/stable/ussuri/requirements.txt</param>
<param name="changelog-email">[email protected]</param>
<param name="changelog-provider">gh,openstack,oslo.versionedobjects</param>
</service>
++++++ oslo.versionedobjects-1.36.1.tar.gz ->
oslo.versionedobjects-2.0.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/oslo.versionedobjects-1.36.1/.zuul.yaml
new/oslo.versionedobjects-2.0.2/.zuul.yaml
--- old/oslo.versionedobjects-1.36.1/.zuul.yaml 2019-09-04 16:26:00.000000000
+0200
+++ new/oslo.versionedobjects-2.0.2/.zuul.yaml 2020-04-07 12:09:53.000000000
+0200
@@ -4,11 +4,9 @@
- oslo.versionedobjects-src-grenade-devstack-multinode
templates:
- check-requirements
- - lib-forward-testing
- lib-forward-testing-python3
- openstack-lower-constraints-jobs
- - openstack-python-jobs
- - openstack-python3-train-jobs
+ - openstack-python3-ussuri-jobs
- periodic-stable-jobs
- publish-openstack-docs-pti
- release-notes-jobs-python3
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/oslo.versionedobjects-1.36.1/AUTHORS
new/oslo.versionedobjects-2.0.2/AUTHORS
--- old/oslo.versionedobjects-1.36.1/AUTHORS 2019-09-04 16:26:44.000000000
+0200
+++ new/oslo.versionedobjects-2.0.2/AUTHORS 2020-04-07 12:11:12.000000000
+0200
@@ -133,6 +133,7 @@
Hans Lindgren <[email protected]>
He Yongli <[email protected]>
Hengqing Hu <[email protected]>
+Hervé Beraud <[email protected]>
Hirofumi Ichihara <[email protected]>
Hisaharu Ishii <[email protected]>
Ian Wienand <[email protected]>
@@ -280,6 +281,7 @@
Rick Harris <[email protected]>
Robert Collins <[email protected]>
Robert Pothier <[email protected]>
+Rodolfo Alonso Hernandez <[email protected]>
Roman Bogorodskiy <[email protected]>
Roman Podoliaka <[email protected]>
Ronald Bradford <[email protected]>
@@ -376,6 +378,7 @@
Zhongyue Luo <[email protected]>
andy <[email protected]>
brian-lamar <[email protected]>
+caoyuan <[email protected]>
danwent <danwent@dan-xs3-cs>
[email protected] <>
fujioka yuuichi <[email protected]>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/oslo.versionedobjects-1.36.1/ChangeLog
new/oslo.versionedobjects-2.0.2/ChangeLog
--- old/oslo.versionedobjects-1.36.1/ChangeLog 2019-09-04 16:26:44.000000000
+0200
+++ new/oslo.versionedobjects-2.0.2/ChangeLog 2020-04-07 12:11:12.000000000
+0200
@@ -1,6 +1,34 @@
CHANGES
=======
+2.0.2
+-----
+
+* Use unittest.mock instead of third party mock
+
+2.0.1
+-----
+
+* remove outdated header
+
+2.0.0
+-----
+
+* Provide stable getargspec() behavior for method fingerprinting
+* Bump to hacking 2.x
+* Drop use of six
+* [ussuri][goal] Drop python 2.7 support and testing
+* Handle unregistered nested objects
+* gitignore: Ignore reno artefacts
+
+1.37.0
+------
+
+* Import ABCs from collections.abc
+* Migrate grenade jobs to py3
+* tox: Keeping going with docs
+* Update master for stable/train
+
1.36.1
------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/oslo.versionedobjects-1.36.1/PKG-INFO
new/oslo.versionedobjects-2.0.2/PKG-INFO
--- old/oslo.versionedobjects-1.36.1/PKG-INFO 2019-09-04 16:26:45.000000000
+0200
+++ new/oslo.versionedobjects-2.0.2/PKG-INFO 2020-04-07 12:11:12.000000000
+0200
@@ -1,6 +1,6 @@
-Metadata-Version: 1.1
+Metadata-Version: 1.2
Name: oslo.versionedobjects
-Version: 1.36.1
+Version: 2.0.2
Summary: Oslo Versioned Objects library
Home-page: https://docs.openstack.org/oslo.versionedobjects/latest/
Author: OpenStack
@@ -47,8 +47,9 @@
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python
-Classifier: Programming Language :: Python :: 2
-Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
+Classifier: Programming Language :: Python :: 3 :: Only
+Classifier: Programming Language :: Python :: Implementation :: CPython
+Requires-Python: >=3.6
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/oslo.versionedobjects-1.36.1/bindep.txt
new/oslo.versionedobjects-2.0.2/bindep.txt
--- old/oslo.versionedobjects-1.36.1/bindep.txt 2019-09-04 16:26:00.000000000
+0200
+++ new/oslo.versionedobjects-2.0.2/bindep.txt 2020-04-07 12:09:53.000000000
+0200
@@ -2,8 +2,6 @@
# see http://docs.openstack.org/infra/bindep/ for additional information.
locales [platform:debian]
-python-dev [platform:dpkg]
-python-devel [platform:rpm]
python3-all-dev [platform:ubuntu !platform:ubuntu-precise]
python3-dev [platform:dpkg]
python3-devel [platform:fedora]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/oslo.versionedobjects-1.36.1/doc/requirements.txt
new/oslo.versionedobjects-2.0.2/doc/requirements.txt
--- old/oslo.versionedobjects-1.36.1/doc/requirements.txt 2019-09-04
16:26:00.000000000 +0200
+++ new/oslo.versionedobjects-2.0.2/doc/requirements.txt 2020-04-07
12:09:53.000000000 +0200
@@ -3,8 +3,7 @@
# process, which may cause wedges in the gate later.
# These are needed for docs generation
openstackdocstheme>=1.18.1 # Apache-2.0
-sphinx!=1.6.6,!=1.6.7,>=1.6.2,<2.0.0;python_version=='2.7' # BSD
-sphinx!=1.6.6,!=1.6.7,>=1.6.2;python_version>='3.4' # BSD
+sphinx>=1.8.0,!=2.1.0 # BSD
reno>=2.5.0 # Apache-2.0
mock>=2.0.0 # BSD
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/oslo.versionedobjects-1.36.1/lower-constraints.txt
new/oslo.versionedobjects-2.0.2/lower-constraints.txt
--- old/oslo.versionedobjects-1.36.1/lower-constraints.txt 2019-09-04
16:26:00.000000000 +0200
+++ new/oslo.versionedobjects-2.0.2/lower-constraints.txt 2020-04-07
12:09:53.000000000 +0200
@@ -24,8 +24,6 @@
linecache2==1.0.0
MarkupSafe==1.0
mccabe==0.2.1
-mock==2.0.0
-monotonic==0.6
mox3==0.20.0
msgpack-python==0.4.0
netaddr==0.7.18
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/oslo.versionedobjects-1.36.1/oslo.versionedobjects.egg-info/PKG-INFO
new/oslo.versionedobjects-2.0.2/oslo.versionedobjects.egg-info/PKG-INFO
--- old/oslo.versionedobjects-1.36.1/oslo.versionedobjects.egg-info/PKG-INFO
2019-09-04 16:26:44.000000000 +0200
+++ new/oslo.versionedobjects-2.0.2/oslo.versionedobjects.egg-info/PKG-INFO
2020-04-07 12:11:12.000000000 +0200
@@ -1,6 +1,6 @@
-Metadata-Version: 1.1
+Metadata-Version: 1.2
Name: oslo.versionedobjects
-Version: 1.36.1
+Version: 2.0.2
Summary: Oslo Versioned Objects library
Home-page: https://docs.openstack.org/oslo.versionedobjects/latest/
Author: OpenStack
@@ -47,8 +47,9 @@
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python
-Classifier: Programming Language :: Python :: 2
-Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
+Classifier: Programming Language :: Python :: 3 :: Only
+Classifier: Programming Language :: Python :: Implementation :: CPython
+Requires-Python: >=3.6
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/oslo.versionedobjects-1.36.1/oslo.versionedobjects.egg-info/SOURCES.txt
new/oslo.versionedobjects-2.0.2/oslo.versionedobjects.egg-info/SOURCES.txt
--- old/oslo.versionedobjects-1.36.1/oslo.versionedobjects.egg-info/SOURCES.txt
2019-09-04 16:26:44.000000000 +0200
+++ new/oslo.versionedobjects-2.0.2/oslo.versionedobjects.egg-info/SOURCES.txt
2020-04-07 12:11:12.000000000 +0200
@@ -60,6 +60,7 @@
playbooks/legacy/oslo.versionedobjects-src-grenade-devstack-multinode/post.yaml
playbooks/legacy/oslo.versionedobjects-src-grenade-devstack-multinode/run.yaml
releasenotes/notes/add-reno-996dd44974d53238.yaml
+releasenotes/notes/drop-python27-support-b3e377b0dcfa4f5c.yaml
releasenotes/source/conf.py
releasenotes/source/index.rst
releasenotes/source/ocata.rst
@@ -67,6 +68,7 @@
releasenotes/source/queens.rst
releasenotes/source/rocky.rst
releasenotes/source/stein.rst
+releasenotes/source/train.rst
releasenotes/source/unreleased.rst
releasenotes/source/_static/.placeholder
releasenotes/source/_templates/.placeholder
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/oslo.versionedobjects-1.36.1/oslo.versionedobjects.egg-info/pbr.json
new/oslo.versionedobjects-2.0.2/oslo.versionedobjects.egg-info/pbr.json
--- old/oslo.versionedobjects-1.36.1/oslo.versionedobjects.egg-info/pbr.json
2019-09-04 16:26:44.000000000 +0200
+++ new/oslo.versionedobjects-2.0.2/oslo.versionedobjects.egg-info/pbr.json
2020-04-07 12:11:12.000000000 +0200
@@ -1 +1 @@
-{"git_version": "14ee7e0", "is_release": true}
\ No newline at end of file
+{"git_version": "4d2310b", "is_release": true}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/oslo.versionedobjects-1.36.1/oslo.versionedobjects.egg-info/requires.txt
new/oslo.versionedobjects-2.0.2/oslo.versionedobjects.egg-info/requires.txt
---
old/oslo.versionedobjects-1.36.1/oslo.versionedobjects.egg-info/requires.txt
2019-09-04 16:26:44.000000000 +0200
+++ new/oslo.versionedobjects-2.0.2/oslo.versionedobjects.egg-info/requires.txt
2020-04-07 12:11:12.000000000 +0200
@@ -1,4 +1,3 @@
-six>=1.10.0
oslo.concurrency>=3.26.0
oslo.config>=5.2.0
oslo.context>=2.19.2
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/oslo.versionedobjects-1.36.1/oslo_versionedobjects/base.py
new/oslo.versionedobjects-2.0.2/oslo_versionedobjects/base.py
--- old/oslo.versionedobjects-1.36.1/oslo_versionedobjects/base.py
2019-09-04 16:26:00.000000000 +0200
+++ new/oslo.versionedobjects-2.0.2/oslo_versionedobjects/base.py
2020-04-07 12:09:53.000000000 +0200
@@ -16,15 +16,15 @@
import abc
import collections
+from collections import abc as collections_abc
import copy
+import functools
import logging
import warnings
import oslo_messaging as messaging
-from oslo_utils import encodeutils
from oslo_utils import excutils
from oslo_utils import versionutils as vutils
-import six
from oslo_versionedobjects._i18n import _
from oslo_versionedobjects import exception
@@ -167,7 +167,7 @@
# requested action and the result will be returned here.
def remotable_classmethod(fn):
"""Decorator for remotable classmethods."""
- @six.wraps(fn)
+ @functools.wraps(fn)
def wrapper(cls, context, *args, **kwargs):
if cls.indirection_api:
version_manifest = obj_tree_get_versions(cls.obj_name())
@@ -199,7 +199,7 @@
# "orphaned" and remotable methods cannot be called.
def remotable(fn):
"""Decorator for remotable object methods."""
- @six.wraps(fn)
+ @functools.wraps(fn)
def wrapper(self, *args, **kwargs):
ctxt = self._context
if ctxt is None:
@@ -314,8 +314,6 @@
field.stringify(getattr(self, name)) or
'<?>'))
for name, field in sorted(self.fields.items())]))
- if six.PY2:
- repr_str = encodeutils.safe_encode(repr_str, incoming='utf-8')
return repr_str
def __contains__(self, name):
@@ -743,33 +741,16 @@
name in self.obj_extra_fields):
yield name
- iterkeys = __iter__
+ keys = __iter__
- def itervalues(self):
+ def values(self):
for name in self:
yield getattr(self, name)
- def iteritems(self):
+ def items(self):
for name in self:
yield name, getattr(self, name)
- if six.PY3:
- # NOTE(haypo): Python 3 dictionaries don't have iterkeys(),
- # itervalues() or iteritems() methods. These methods are provided to
- # ease the transition from Python 2 to Python 3.
- keys = iterkeys
- values = itervalues
- items = iteritems
- else:
- def keys(self):
- return list(self.iterkeys())
-
- def values(self):
- return list(self.itervalues())
-
- def items(self):
- return list(self.iteritems())
-
def __getitem__(self, name):
return getattr(self, name)
@@ -790,7 +771,7 @@
setattr(self, key, value)
-class ObjectListBase(collections.Sequence):
+class ObjectListBase(collections_abc.Sequence):
"""Mixin class for lists of objects.
This mixin class can be added as a base class for an object that
@@ -978,8 +959,7 @@
return entity
[email protected]_metaclass(abc.ABCMeta)
-class VersionedObjectIndirectionAPI(object):
+class VersionedObjectIndirectionAPI(object, metaclass=abc.ABCMeta):
def object_action(self, context, objinst, objmethod, args, kwargs):
"""Perform an action on a VersionedObject instance.
@@ -1167,7 +1147,11 @@
else:
continue
- obj_tree_get_versions(child_cls, tree=tree)
+ try:
+ obj_tree_get_versions(child_cls, tree=tree)
+ except IndexError:
+ raise exception.UnregisteredSubobject(
+ child_objname=child_cls, parent_objname=objname)
return tree
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/oslo.versionedobjects-1.36.1/oslo_versionedobjects/examples/iot_bulb.py
new/oslo.versionedobjects-2.0.2/oslo_versionedobjects/examples/iot_bulb.py
--- old/oslo.versionedobjects-1.36.1/oslo_versionedobjects/examples/iot_bulb.py
2019-09-04 16:26:00.000000000 +0200
+++ new/oslo.versionedobjects-2.0.2/oslo_versionedobjects/examples/iot_bulb.py
2020-04-07 12:09:53.000000000 +0200
@@ -40,6 +40,7 @@
'manufactured_on': obj_fields.DateTimeField(),
}
+
# Now do some basic operations on a light bulb.
bulb = IOTLightbulb(serial='abc-123', manufactured_on=datetime.now())
print("The __str__() output of this new object: %s" % bulb)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/oslo.versionedobjects-1.36.1/oslo_versionedobjects/exception.py
new/oslo.versionedobjects-2.0.2/oslo_versionedobjects/exception.py
--- old/oslo.versionedobjects-1.36.1/oslo_versionedobjects/exception.py
2019-09-04 16:26:00.000000000 +0200
+++ new/oslo.versionedobjects-2.0.2/oslo_versionedobjects/exception.py
2020-04-07 12:09:53.000000000 +0200
@@ -22,13 +22,12 @@
"""
+import functools
import inspect
import logging
-import sys
from oslo_config import cfg
from oslo_utils import excutils
-import six
import webob.exc
from oslo_versionedobjects._i18n import _
@@ -81,7 +80,7 @@
payload.update({'args': cleansed})
# If f has multiple decorators, they must use
- # six.wraps to ensure the name is
+ # functools.wraps to ensure the name is
# propagated.
event_type = f.__name__
@@ -89,7 +88,7 @@
event_type,
payload)
- return six.wraps(f)(wrapped)
+ return functools.wraps(f)(wrapped)
return inner
@@ -118,9 +117,7 @@
if not message:
try:
message = self.msg_fmt % kwargs
-
except Exception:
- exc_info = sys.exc_info()
# kwargs doesn't match a variable in the message
# log the issue and the kwargs
LOG.exception('Exception in string format operation')
@@ -128,7 +125,7 @@
LOG.error("%s: %s" % (name, value)) # noqa
if CONF.oslo_versionedobjects.fatal_exception_format_errors:
- raise six.reraise(*exc_info)
+ raise
else:
# at least get the core message out if something happened
message = self.msg_fmt
@@ -189,3 +186,8 @@
class TargetBeforeSubobjectExistedException(VersionedObjectsException):
msg_fmt = _("No subobject existed at version %(target_version)s")
+
+
+class UnregisteredSubobject(VersionedObjectsException):
+ msg_fmt = _("%(child_objname)s is referenced by %(parent_objname)s but "
+ "is not registered")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/oslo.versionedobjects-1.36.1/oslo_versionedobjects/fields.py
new/oslo.versionedobjects-2.0.2/oslo_versionedobjects/fields.py
--- old/oslo.versionedobjects-1.36.1/oslo_versionedobjects/fields.py
2019-09-04 16:26:00.000000000 +0200
+++ new/oslo.versionedobjects-2.0.2/oslo_versionedobjects/fields.py
2020-04-07 12:09:53.000000000 +0200
@@ -13,14 +13,7 @@
# under the License.
import abc
-# TODO(smcginnis) update this once six has support for collections.abc
-# (https://github.com/benjaminp/six/pull/241) or clean up once we drop py2.7.
-try:
- from collections.abc import Iterable
- from collections.abc import Mapping
-except ImportError:
- from collections import Iterable
- from collections import Mapping
+from collections import abc as collections_abc
import datetime
from distutils import versionpredicate
import re
@@ -32,7 +25,6 @@
import netaddr
from oslo_utils import strutils
from oslo_utils import timeutils
-import six
from oslo_versionedobjects._i18n import _
from oslo_versionedobjects import _utils
@@ -61,8 +53,7 @@
})
[email protected]_metaclass(abc.ABCMeta)
-class AbstractFieldType(object):
+class AbstractFieldType(object, metaclass=abc.ABCMeta):
@abc.abstractmethod
def coerce(self, obj, attr, value):
"""This is called to coerce (if possible) a value on assignment.
@@ -153,9 +144,13 @@
def __repr__(self):
if isinstance(self._default, set):
+ # TODO(stephenfin): Drop this when we switch from
+ # 'inspect.getargspec' to 'inspect.getfullargspec', since our
+ # hashes will have to change anyway
# make a py27 and py35 compatible representation. See bug 1771804
- default = 'set([%s])' % ','.join(sorted([six.text_type(v)
- for v in self._default]))
+ default = 'set([%s])' % ','.join(
+ sorted([str(v) for v in self._default])
+ )
else:
default = str(self._default)
return '%s(default=%s,nullable=%s)' % (self._type.__class__.__name__,
@@ -269,14 +264,13 @@
@staticmethod
def coerce(obj, attr, value):
# FIXME(danms): We should really try to avoid the need to do this
- accepted_types = six.integer_types + (float, six.string_types,
- datetime.datetime)
+ accepted_types = (int, float, str, datetime.datetime)
if isinstance(value, accepted_types):
- return six.text_type(value)
- else:
- raise ValueError(_('A string is required in field %(attr)s, '
- 'not a %(type)s') %
- {'attr': attr, 'type': type(value).__name__})
+ return str(value)
+
+ raise ValueError(_('A string is required in field %(attr)s, '
+ 'not a %(type)s') %
+ {'attr': attr, 'type': type(value).__name__})
@staticmethod
def stringify(value):
@@ -391,7 +385,7 @@
@staticmethod
def coerce(obj, attr, value):
- if isinstance(value, six.string_types):
+ if isinstance(value, str):
lowered = value.lower().replace('-', ':')
if MACAddress._REGEX.match(lowered):
return lowered
@@ -405,7 +399,7 @@
@staticmethod
def coerce(obj, attr, value):
- if isinstance(value, six.string_types):
+ if isinstance(value, str):
newvalue = value.lower()
if PCIAddress._REGEX.match(newvalue):
return newvalue
@@ -474,7 +468,7 @@
super(DateTime, self).__init__(*args, **kwargs)
def coerce(self, obj, attr, value):
- if isinstance(value, six.string_types):
+ if isinstance(value, str):
# NOTE(danms): Being tolerant of isotime strings here will help us
# during our objects transition
value = timeutils.parse_isotime(value)
@@ -513,7 +507,7 @@
try:
return netaddr.IPAddress(value)
except netaddr.AddrFormatError as e:
- raise ValueError(six.text_type(e))
+ raise ValueError(str(e))
def from_primitive(self, obj, attr, value):
return self.coerce(obj, attr, value)
@@ -572,7 +566,7 @@
try:
return netaddr.IPNetwork(value)
except netaddr.AddrFormatError as e:
- raise ValueError(six.text_type(e))
+ raise ValueError(str(e))
class IPV4Network(IPNetwork):
@@ -586,7 +580,7 @@
try:
return netaddr.IPNetwork(value, version=4)
except netaddr.AddrFormatError as e:
- raise ValueError(six.text_type(e))
+ raise ValueError(str(e))
class IPV6Network(IPNetwork):
@@ -600,7 +594,7 @@
try:
return netaddr.IPNetwork(value, version=6)
except netaddr.AddrFormatError as e:
- raise ValueError(six.text_type(e))
+ raise ValueError(str(e))
def _create_pattern(self):
ipv6seg = '[0-9a-fA-F]{1,4}'
@@ -651,8 +645,8 @@
class List(CompoundFieldType):
def coerce(self, obj, attr, value):
- if (not isinstance(value, Iterable) or
- isinstance(value, six.string_types + (Mapping,))):
+ if (not isinstance(value, collections_abc.Iterable) or
+ isinstance(value, (str, collections_abc.Mapping))):
raise ValueError(_('A list is required in field %(attr)s, '
'not a %(type)s') %
{'attr': attr, 'type': type(value).__name__})
@@ -719,7 +713,7 @@
This will take care of the conversion while the dict field will make sure
that we store the raw json-serializable data on the object.
- key_type should return a type that unambiguously responds to six.text_type
+ key_type should return a type that unambiguously responds to str
so that calling key_type on it yields the same thing.
"""
def __init__(self, dict_field_name, key_type=int):
@@ -738,8 +732,7 @@
if val is None:
setattr(obj, self._fld_name, val)
else:
- setattr(obj, self._fld_name,
- {six.text_type(k): v for k, v in val.items()})
+ setattr(obj, self._fld_name, {str(k): v for k, v in val.items()})
class Set(CompoundFieldType):
@@ -1262,8 +1255,7 @@
super(CoercedList, self).append(self._coerce_item(len(self) + 1, x))
def extend(self, t):
- l = len(self)
- coerced_items = [self._coerce_item(l + index, item)
+ coerced_items = [self._coerce_item(len(self) + index, item)
for index, item in enumerate(t)]
super(CoercedList, self).extend(coerced_items)
@@ -1271,8 +1263,7 @@
super(CoercedList, self).insert(i, self._coerce_item(i, x))
def __iadd__(self, y):
- l = len(self)
- coerced_items = [self._coerce_item(l + index, item)
+ coerced_items = [self._coerce_item(len(self) + index, item)
for index, item in enumerate(y)]
return super(CoercedList, self).__iadd__(coerced_items)
@@ -1296,12 +1287,8 @@
return res
def _coerce_item(self, key, item):
- if not isinstance(key, six.string_types):
- # NOTE(guohliu) In order to keep compatibility with python3
- # we need to use six.string_types rather than basestring here,
- # since six.string_types is a tuple, so we need to pass the
- # real type in.
- raise KeyTypeError(six.string_types[0], key)
+ if not isinstance(key, str):
+ raise KeyTypeError(str, key)
if hasattr(self, "_element_type") and self._element_type is not None:
att_name = "%s[%s]" % (self._field, key)
return self._element_type.coerce(self._obj, att_name, item)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/oslo.versionedobjects-1.36.1/oslo_versionedobjects/fixture.py
new/oslo.versionedobjects-2.0.2/oslo_versionedobjects/fixture.py
--- old/oslo.versionedobjects-1.36.1/oslo_versionedobjects/fixture.py
2019-09-04 16:26:00.000000000 +0200
+++ new/oslo.versionedobjects-2.0.2/oslo_versionedobjects/fixture.py
2020-04-07 12:09:53.000000000 +0200
@@ -20,17 +20,18 @@
"""
+from collections import namedtuple
from collections import OrderedDict
import copy
import datetime
import hashlib
import inspect
import logging
-import mock
-from oslo_utils import versionutils as vutils
-import six
+from unittest import mock
import fixtures
+from oslo_utils import versionutils as vutils
+
from oslo_versionedobjects import base
from oslo_versionedobjects import fields
@@ -131,7 +132,7 @@
objinst = self._ser.deserialize_entity(
context, self._ser.serialize_entity(
context, objinst))
- objmethod = six.text_type(objmethod)
+ objmethod = str(objmethod)
args, kwargs = self._canonicalize_args(context, args, kwargs)
original = objinst.obj_clone()
with mock.patch('oslo_versionedobjects.base.VersionedObject.'
@@ -143,9 +144,9 @@
def object_class_action(self, context, objname, objmethod, objver,
args, kwargs):
- objname = six.text_type(objname)
- objmethod = six.text_type(objmethod)
- objver = six.text_type(objver)
+ objname = str(objname)
+ objmethod = str(objmethod)
+ objver = str(objver)
args, kwargs = self._canonicalize_args(context, args, kwargs)
cls = base.VersionedObject.obj_class_from_name(objname, objver)
with mock.patch('oslo_versionedobjects.base.VersionedObject.'
@@ -158,10 +159,9 @@
def object_class_action_versions(self, context, objname, objmethod,
object_versions, args, kwargs):
- objname = six.text_type(objname)
- objmethod = six.text_type(objmethod)
- object_versions = {six.text_type(o): six.text_type(v)
- for o, v in object_versions.items()}
+ objname = str(objname)
+ objmethod = str(objmethod)
+ object_versions = {str(o): str(v) for o, v in object_versions.items()}
args, kwargs = self._canonicalize_args(context, args, kwargs)
objver = object_versions[objname]
cls = base.VersionedObject.obj_class_from_name(objname, objver)
@@ -198,6 +198,31 @@
','.join(set(self.expected.keys() + self.actual.keys())))
+CompatArgSpec = namedtuple(
+ 'ArgSpec', ('args', 'varargs', 'keywords', 'defaults'))
+
+
+def get_method_spec(method):
+ """Get a stable and compatible method spec.
+
+ Newer features in Python3 (kw-only arguments and annotations) are
+ not supported or representable with inspect.getargspec() but many
+ object hashes are already recorded using that method. This attempts
+ to return something compatible with getargspec() when possible (i.e.
+ when those features are not used), and otherwise just returns the
+ newer getfullargspec() representation.
+ """
+ fullspec = inspect.getfullargspec(method)
+ if any([fullspec.kwonlyargs, fullspec.kwonlydefaults,
+ fullspec.annotations]):
+ # Method uses newer-than-getargspec() features, so return the
+ # newer full spec
+ return fullspec
+ else:
+ return CompatArgSpec(fullspec.args, fullspec.varargs,
+ fullspec.varkw, fullspec.defaults)
+
+
class ObjectVersionChecker(object):
def __init__(self, obj_classes=base.VersionedObjectRegistry.obj_classes()):
self.obj_classes = obj_classes
@@ -229,7 +254,7 @@
or isinstance(thing, classmethod):
method = self._find_remotable_method(obj_class, thing)
if method:
- methods.append((name, inspect.getargspec(method)))
+ methods.append((name, get_method_spec(method)))
methods.sort()
# NOTE(danms): Things that need a version bump are any fields
# and their types, or the signatures of any remotable methods.
@@ -247,7 +272,7 @@
relevant_data += extra_data_func(obj_class)
fingerprint = '%s-%s' % (obj_class.VERSION, hashlib.md5(
- six.binary_type(repr(relevant_data).encode())).hexdigest())
+ bytes(repr(relevant_data).encode())).hexdigest())
return fingerprint
def get_hashes(self, extra_data_func=None):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/oslo.versionedobjects-1.36.1/oslo_versionedobjects/test.py
new/oslo.versionedobjects-2.0.2/oslo_versionedobjects/test.py
--- old/oslo.versionedobjects-1.36.1/oslo_versionedobjects/test.py
2019-09-04 16:26:00.000000000 +0200
+++ new/oslo.versionedobjects-2.0.2/oslo_versionedobjects/test.py
2020-04-07 12:09:53.000000000 +0200
@@ -23,16 +23,16 @@
import eventlet # noqa
eventlet.monkey_patch(os=False) # noqa
+import functools
import inspect
-import mock
import os
+from unittest import mock
import fixtures
from oslo_concurrency import lockutils
from oslo_config import cfg
from oslo_config import fixture as config_fixture
from oslo_log.fixture import logging_error
-import six
import testtools
from oslo_versionedobjects.tests import obj_fixtures
@@ -54,7 +54,7 @@
condition = self.condition
reason = self.reason
if inspect.isfunction(func_or_cls):
- @six.wraps(func_or_cls)
+ @functools.wraps(func_or_cls)
def wrapped(*args, **kwargs):
if condition:
raise testtools.TestCase.skipException(reason)
@@ -64,7 +64,7 @@
elif inspect.isclass(func_or_cls):
orig_func = getattr(func_or_cls, 'setUp')
- @six.wraps(orig_func)
+ @functools.wraps(orig_func)
def new_func(self, *args, **kwargs):
if condition:
raise testtools.TestCase.skipException(reason)
@@ -95,6 +95,7 @@
mock.Mock.__getattr__ = raise_for_invalid_assert_calls(
mock.Mock.__getattr__)
+
# NOTE(gibi): needs to be called only once at import time
# to patch the mock lib
_patch_mock_to_raise_for_invalid_assert_calls()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/oslo.versionedobjects-1.36.1/oslo_versionedobjects/tests/test_exception.py
new/oslo.versionedobjects-2.0.2/oslo_versionedobjects/tests/test_exception.py
---
old/oslo.versionedobjects-1.36.1/oslo_versionedobjects/tests/test_exception.py
2019-09-04 16:26:00.000000000 +0200
+++
new/oslo.versionedobjects-2.0.2/oslo_versionedobjects/tests/test_exception.py
2020-04-07 12:09:53.000000000 +0200
@@ -11,13 +11,11 @@
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
+from unittest import mock
from oslo_versionedobjects import exception
from oslo_versionedobjects import test
-import mock
-
-
notifier = mock.Mock()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/oslo.versionedobjects-1.36.1/oslo_versionedobjects/tests/test_fields.py
new/oslo.versionedobjects-2.0.2/oslo_versionedobjects/tests/test_fields.py
--- old/oslo.versionedobjects-1.36.1/oslo_versionedobjects/tests/test_fields.py
2019-09-04 16:26:00.000000000 +0200
+++ new/oslo.versionedobjects-2.0.2/oslo_versionedobjects/tests/test_fields.py
2020-04-07 12:09:53.000000000 +0200
@@ -14,12 +14,11 @@
# under the License.
import datetime
+from unittest import mock
import warnings
import iso8601
-import mock
import netaddr
-import six
import testtools
from oslo_versionedobjects import _utils
@@ -159,8 +158,6 @@
self.field = fields.StringField()
self.coerce_good_values = [
('foo', 'foo'), (1, '1'), (1.0, '1.0'), (True, 'True')]
- if six.PY2:
- self.coerce_good_values += [(long(1), '1')] # noqa
self.coerce_bad_values = [None]
self.to_primitive_values = self.coerce_good_values[0:1]
self.from_primitive_values = self.coerce_good_values[0:1]
@@ -1061,7 +1058,7 @@
ex = self.assertRaises(ValueError, self.field.coerce,
'obj', 'attr', [{}])
self.assertEqual('An object of type TestableObject is required '
- 'in field attr, not a list', six.text_type(ex))
+ 'in field attr, not a list', str(ex))
def test_get_schema(self):
self.assertEqual(
@@ -1231,7 +1228,7 @@
self.assertNotRegex(str(invalid_val), pattern)
-class FakeCounter(six.Iterator):
+class FakeCounter(object):
def __init__(self):
self.n = 0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/oslo.versionedobjects-1.36.1/oslo_versionedobjects/tests/test_fixture.py
new/oslo.versionedobjects-2.0.2/oslo_versionedobjects/tests/test_fixture.py
---
old/oslo.versionedobjects-1.36.1/oslo_versionedobjects/tests/test_fixture.py
2019-09-04 16:26:00.000000000 +0200
+++ new/oslo.versionedobjects-2.0.2/oslo_versionedobjects/tests/test_fixture.py
2020-04-07 12:09:53.000000000 +0200
@@ -16,10 +16,10 @@
import copy
import datetime
import hashlib
+import inspect
+from unittest import mock
import iso8601
-import mock
-import six
from oslo_versionedobjects import base
from oslo_versionedobjects import exception
@@ -530,7 +530,7 @@
MyObject.VERSION = '1.1'
argspec = 'vulpix'
- with mock.patch('inspect.getargspec') as mock_gas:
+ with mock.patch.object(fixture, 'get_method_spec') as mock_gas:
mock_gas.return_value = argspec
fp = self.ovc._get_fingerprint(MyObject.__name__)
@@ -538,7 +538,7 @@
exp_methods = sorted([('remotable_method', argspec),
('remotable_classmethod', argspec)])
expected_relevant_data = (exp_fields, exp_methods)
- expected_hash = hashlib.md5(six.binary_type(repr(
+ expected_hash = hashlib.md5(bytes(repr(
expected_relevant_data).encode())).hexdigest()
expected_fp = '%s-%s' % (MyObject.VERSION, expected_hash)
@@ -553,7 +553,7 @@
MyObject.child_versions = child_versions
argspec = 'onix'
- with mock.patch('inspect.getargspec') as mock_gas:
+ with mock.patch.object(fixture, 'get_method_spec') as mock_gas:
mock_gas.return_value = argspec
fp = self.ovc._get_fingerprint(MyObject.__name__)
@@ -564,7 +564,7 @@
child_versions.items()))
exp_relevant_data = (exp_fields, exp_methods, exp_child_versions)
- expected_hash = hashlib.md5(six.binary_type(repr(
+ expected_hash = hashlib.md5(bytes(repr(
exp_relevant_data).encode())).hexdigest()
expected_fp = '%s-%s' % (MyObject.VERSION, expected_hash)
@@ -594,7 +594,7 @@
exp_extra_data = ExtraDataObj
exp_relevant_data = (exp_fields, exp_methods, exp_extra_data)
- expected_hash = hashlib.md5(six.binary_type(repr(
+ expected_hash = hashlib.md5(bytes(repr(
exp_relevant_data).encode())).hexdigest()
expected_fp = '%s-%s' % (ExtraDataObj.VERSION, expected_hash)
@@ -737,3 +737,29 @@
self.assertEqual(
['a', 'z'],
obj.obj_to_primitive()['versioned_object.changes'])
+
+
+class TestMethodSpec(test.TestCase):
+ def setUp(self):
+ super(TestMethodSpec, self).setUp()
+
+ def test_method1(a, b, kw1=123, **kwargs):
+ pass
+
+ def test_method2(a, b, *args):
+ pass
+
+ def test_method3(a, b, *args, kw1=123, **kwargs):
+ pass
+
+ self._test_method1 = test_method1
+ self._test_method2 = test_method2
+ self._test_method3 = test_method3
+
+ def test_method_spec_compat(self):
+ self.assertEqual(inspect.getargspec(self._test_method1),
+ fixture.get_method_spec(self._test_method1))
+ self.assertEqual(inspect.getargspec(self._test_method2),
+ fixture.get_method_spec(self._test_method2))
+ self.assertEqual(inspect.getfullargspec(self._test_method3),
+ fixture.get_method_spec(self._test_method3))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/oslo.versionedobjects-1.36.1/oslo_versionedobjects/tests/test_objects.py
new/oslo.versionedobjects-2.0.2/oslo_versionedobjects/tests/test_objects.py
---
old/oslo.versionedobjects-1.36.1/oslo_versionedobjects/tests/test_objects.py
2019-09-04 16:26:00.000000000 +0200
+++ new/oslo.versionedobjects-2.0.2/oslo_versionedobjects/tests/test_objects.py
2020-04-07 12:09:53.000000000 +0200
@@ -17,9 +17,8 @@
import jsonschema
import logging
import pytz
-import six
+from unittest import mock
-import mock
from oslo_context import context
from oslo_serialization import jsonutils
from oslo_utils import timeutils
@@ -858,16 +857,10 @@
['bar', 'foo'])
self.assertEqual(sorted(obj.keys()),
['bar', 'foo'])
- self.assertEqual(sorted(obj.iterkeys()),
- ['bar', 'foo'])
self.assertEqual(sorted(obj.values(), key=str),
[123, u'text'])
- self.assertEqual(sorted(obj.itervalues(), key=str),
- [123, u'text'])
self.assertEqual(sorted(obj.items()),
[('bar', u'text'), ('foo', 123)])
- self.assertEqual(sorted(list(obj.iteritems())),
- [('bar', u'text'), ('foo', 123)])
self.assertEqual(dict(obj),
{'foo': 123, 'bar': u'text'})
@@ -1204,16 +1197,10 @@
def test_obj_repr_unicode(self):
obj = MyObj(bar=u'\u0191\u01A1\u01A1')
# verify the unicode string has been encoded as ASCII if on python 2
- if six.PY2:
- self.assertEqual("MyObj(bar='\xc6\x91\xc6\xa1\xc6\xa1',foo=<?>,"
- "missing=<?>,mutable_default=<?>,readonly=<?>,"
- "rel_object=<?>,rel_objects=<?>,timestamp=<?>)",
- repr(obj))
- else:
- self.assertEqual("MyObj(bar='\u0191\u01A1\u01A1',foo=<?>,"
- "missing=<?>,mutable_default=<?>,readonly=<?>,"
- "rel_object=<?>,rel_objects=<?>,timestamp=<?>)",
- repr(obj))
+ self.assertEqual("MyObj(bar='\u0191\u01A1\u01A1',foo=<?>,"
+ "missing=<?>,mutable_default=<?>,readonly=<?>,"
+ "rel_object=<?>,rel_objects=<?>,timestamp=<?>)",
+ repr(obj))
def test_obj_make_obj_compatible_with_relationships(self):
subobj = MyOwnedObject(baz=1)
@@ -1996,11 +1983,11 @@
thing = {'key': obj}
primitive = ser.serialize_entity(self.context, thing)
self.assertEqual(1, len(primitive))
- for item in six.itervalues(primitive):
+ for item in primitive.values():
self.assertNotIsInstance(item, base.VersionedObject)
thing2 = ser.deserialize_entity(self.context, primitive)
self.assertEqual(1, len(thing2))
- for item in six.itervalues(thing2):
+ for item in thing2.values():
self.assertIsInstance(item, MyObj)
# object-action updates dict case
@@ -2354,6 +2341,22 @@
'TestChildTwo': '4.56'},
tree)
+ def test_missing_referenced(self):
+ """Ensure a missing child object is highlighted."""
+ @base.VersionedObjectRegistry.register
+ class TestObjectFoo(base.VersionedObject):
+ VERSION = '1.23'
+ fields = {
+ # note that this object does not exist
+ 'child': fields.ObjectField('TestChildBar'),
+ }
+
+ exc = self.assertRaises(exception.UnregisteredSubobject,
+ base.obj_tree_get_versions,
+ 'TestObjectFoo')
+ self.assertIn('TestChildBar is referenced by TestObjectFoo',
+ exc.format_message())
+
class TestListObjectConcat(test.TestCase):
def test_list_object_concat(self):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/oslo.versionedobjects-1.36.1/playbooks/legacy/oslo.versionedobjects-src-grenade-devstack-multinode/run.yaml
new/oslo.versionedobjects-2.0.2/playbooks/legacy/oslo.versionedobjects-src-grenade-devstack-multinode/run.yaml
---
old/oslo.versionedobjects-1.36.1/playbooks/legacy/oslo.versionedobjects-src-grenade-devstack-multinode/run.yaml
2019-09-04 16:26:00.000000000 +0200
+++
new/oslo.versionedobjects-2.0.2/playbooks/legacy/oslo.versionedobjects-src-grenade-devstack-multinode/run.yaml
2020-04-07 12:09:53.000000000 +0200
@@ -32,6 +32,7 @@
export PYTHONUNBUFFERED=true
export DEVSTACK_GATE_TEMPEST=1
export DEVSTACK_GATE_GRENADE=pullup
+ export DEVSTACK_GATE_USE_PYTHON3=True
export BRANCH_OVERRIDE=default
if [ "$BRANCH_OVERRIDE" != "default" ] ; then
export OVERRIDE_ZUUL_BRANCH=$BRANCH_OVERRIDE
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/oslo.versionedobjects-1.36.1/releasenotes/notes/drop-python27-support-b3e377b0dcfa4f5c.yaml
new/oslo.versionedobjects-2.0.2/releasenotes/notes/drop-python27-support-b3e377b0dcfa4f5c.yaml
---
old/oslo.versionedobjects-1.36.1/releasenotes/notes/drop-python27-support-b3e377b0dcfa4f5c.yaml
1970-01-01 01:00:00.000000000 +0100
+++
new/oslo.versionedobjects-2.0.2/releasenotes/notes/drop-python27-support-b3e377b0dcfa4f5c.yaml
2020-04-07 12:09:53.000000000 +0200
@@ -0,0 +1,5 @@
+---
+upgrade:
+ - |
+ Support for Python 2.7 has been dropped. The minimum version of Python now
+ supported is Python 3.6.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/oslo.versionedobjects-1.36.1/releasenotes/source/index.rst
new/oslo.versionedobjects-2.0.2/releasenotes/source/index.rst
--- old/oslo.versionedobjects-1.36.1/releasenotes/source/index.rst
2019-09-04 16:26:00.000000000 +0200
+++ new/oslo.versionedobjects-2.0.2/releasenotes/source/index.rst
2020-04-07 12:09:53.000000000 +0200
@@ -6,6 +6,7 @@
:maxdepth: 1
unreleased
+ train
stein
rocky
queens
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/oslo.versionedobjects-1.36.1/releasenotes/source/train.rst
new/oslo.versionedobjects-2.0.2/releasenotes/source/train.rst
--- old/oslo.versionedobjects-1.36.1/releasenotes/source/train.rst
1970-01-01 01:00:00.000000000 +0100
+++ new/oslo.versionedobjects-2.0.2/releasenotes/source/train.rst
2020-04-07 12:09:53.000000000 +0200
@@ -0,0 +1,6 @@
+==========================
+Train Series Release Notes
+==========================
+
+.. release-notes::
+ :branch: stable/train
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/oslo.versionedobjects-1.36.1/requirements.txt
new/oslo.versionedobjects-2.0.2/requirements.txt
--- old/oslo.versionedobjects-1.36.1/requirements.txt 2019-09-04
16:26:00.000000000 +0200
+++ new/oslo.versionedobjects-2.0.2/requirements.txt 2020-04-07
12:09:53.000000000 +0200
@@ -1,7 +1,6 @@
# The order of packages is significant, because pip processes them in the order
# of appearance. Changing the order has an impact on the overall integration
# process, which may cause wedges in the gate later.
-six>=1.10.0 # MIT
oslo.concurrency>=3.26.0 # Apache-2.0
oslo.config>=5.2.0 # Apache-2.0
oslo.context>=2.19.2 # Apache-2.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/oslo.versionedobjects-1.36.1/setup.cfg
new/oslo.versionedobjects-2.0.2/setup.cfg
--- old/oslo.versionedobjects-1.36.1/setup.cfg 2019-09-04 16:26:45.000000000
+0200
+++ new/oslo.versionedobjects-2.0.2/setup.cfg 2020-04-07 12:11:12.000000000
+0200
@@ -6,6 +6,7 @@
author = OpenStack
author-email = [email protected]
home-page = https://docs.openstack.org/oslo.versionedobjects/latest/
+python-requires = >=3.6
classifier =
Environment :: OpenStack
Intended Audience :: Information Technology
@@ -13,11 +14,11 @@
License :: OSI Approved :: Apache Software License
Operating System :: POSIX :: Linux
Programming Language :: Python
- Programming Language :: Python :: 2
- Programming Language :: Python :: 2.7
Programming Language :: Python :: 3
Programming Language :: Python :: 3.6
Programming Language :: Python :: 3.7
+ Programming Language :: Python :: 3 :: Only
+ Programming Language :: Python :: Implementation :: CPython
[files]
packages =
@@ -41,9 +42,6 @@
mapping_file = babel.cfg
output_file = oslo_versionedobjects/locale/oslo_versionedobjects.pot
-[bdist_wheel]
-universal = true
-
[egg_info]
tag_build =
tag_date = 0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/oslo.versionedobjects-1.36.1/setup.py
new/oslo.versionedobjects-2.0.2/setup.py
--- old/oslo.versionedobjects-1.36.1/setup.py 2019-09-04 16:26:00.000000000
+0200
+++ new/oslo.versionedobjects-2.0.2/setup.py 2020-04-07 12:09:53.000000000
+0200
@@ -13,17 +13,8 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-# THIS FILE IS MANAGED BY THE GLOBAL REQUIREMENTS REPO - DO NOT EDIT
import setuptools
-# In python < 2.7.4, a lazy loading of package `pbr` will break
-# setuptools if some other modules registered functions in `atexit`.
-# solution from: http://bugs.python.org/issue15881#msg170215
-try:
- import multiprocessing # noqa
-except ImportError:
- pass
-
setuptools.setup(
setup_requires=['pbr>=2.0.0'],
pbr=True)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/oslo.versionedobjects-1.36.1/test-requirements.txt
new/oslo.versionedobjects-2.0.2/test-requirements.txt
--- old/oslo.versionedobjects-1.36.1/test-requirements.txt 2019-09-04
16:26:00.000000000 +0200
+++ new/oslo.versionedobjects-2.0.2/test-requirements.txt 2020-04-07
12:09:53.000000000 +0200
@@ -1,14 +1,13 @@
# The order of packages is significant, because pip processes them in the order
# of appearance. Changing the order has an impact on the overall integration
# process, which may cause wedges in the gate later.
-hacking>=1.1.0,<1.2.0 # Apache-2.0
+hacking>=2.0.0,<2.1.0 # Apache-2.0
oslotest>=3.2.0 # Apache-2.0
testtools>=2.2.0 # MIT
coverage!=4.4,>=4.0 # Apache-2.0
jsonschema>=2.6.0 # MIT
stestr>=2.0.0 # Apache-2.0
-mock>=2.0.0 # BSD
fixtures>=3.0.0 # Apache-2.0/BSD
# Bandit security code scanner
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/oslo.versionedobjects-1.36.1/tox.ini
new/oslo.versionedobjects-2.0.2/tox.ini
--- old/oslo.versionedobjects-1.36.1/tox.ini 2019-09-04 16:26:00.000000000
+0200
+++ new/oslo.versionedobjects-2.0.2/tox.ini 2020-04-07 12:09:53.000000000
+0200
@@ -1,6 +1,6 @@
[tox]
-minversion = 3.1
-envlist = py27,py37,pep8
+minversion = 3.1.1
+envlist = py37,pep8
basepython = python3
ignore_basepython_conflict = true
@@ -23,14 +23,20 @@
commands = python setup.py test --coverage
--coverage-package-name=oslo_versionedobjects --testr-args='{posargs}'
[testenv:docs]
+whitelist_externals = rm
deps =
-c{env:UPPER_CONSTRAINTS_FILE:https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt}
-r{toxinidir}/doc/requirements.txt
-commands = sphinx-build -W -b html doc/source doc/build/html
+commands =
+ rm -fr doc/build
+ sphinx-build -W --keep-going -b html doc/source doc/build/html
[testenv:releasenotes]
+whitelist_externals = rm
deps = {[testenv:docs]deps}
-commands = sphinx-build -a -E -W -d releasenotes/build/doctrees -b html
releasenotes/source releasenotes/build/html
+commands =
+ rm -rf releasenotes/build
+ sphinx-build -a -E -W -d releasenotes/build/doctrees --keep-going -b html
releasenotes/source releasenotes/build/html
[testenv:lower-constraints]
deps =
@@ -40,8 +46,9 @@
[flake8]
# E123, E125 skipped as they are invalid PEP-8.
+# W504 skipped as you must choose this or W503
show-source = True
-ignore = E123,E125
+ignore = E123,E125,W504
builtins = _
exclude=.venv,.git,.tox,dist,doc,*lib/python*,*egg,build