[Bug 1841072] Re: test_reflection.CallbackEqualityTest.test_different_instance_callbacks fails on Python 3.8
OpenStack Infra
1841072 at bugs.launchpad.net
Tue Sep 8 09:58:25 UTC 2020
Reviewed: https://review.opendev.org/750216
Committed: https://git.openstack.org/cgit/openstack/oslo.utils/commit/?id=632f15515fb224863c1027c658858c595ad5d11b
Submitter: Zuul
Branch: master
commit 632f15515fb224863c1027c658858c595ad5d11b
Author: Ghanshyam Mann <gmann at ghanshyammann.com>
Date: Mon Sep 7 16:15:20 2020 -0500
Fix is_same_callback() testing for python3.8
Python3.8 onwards, comparision of bound methods is
changed. It no longer decide the bound method's equality based
on their bounded objects equality instead it checks the identity
of their '__self__'.
Details about this behavior change in python 3.8
- https://bugs.python.org/issue1617161
- python-dev discussion: https://mail.python.org/pipermail/python-dev/2018-June/153959.html
So python3.8 onwards, 'strict' arg has no meaning. For backward compatibility
for python <3.8, we can keep the 'strict' arg but with deprecation warning.
Also modify the is_same_callback() unit tests to verify the 'strict'
arg based on python version.
Change-Id: I3e6d9bbceccacddd0e1a514bbe5d0722a3408ecb
Closes-Bug: #1841072
** Changed in: oslo.utils
Status: In Progress => Fix Released
--
You received this bug notification because you are a member of Ubuntu
OpenStack, which is subscribed to python-oslo.utils in Ubuntu.
https://bugs.launchpad.net/bugs/1841072
Title:
test_reflection.CallbackEqualityTest.test_different_instance_callbacks
fails on Python 3.8
Status in oslo.utils:
Fix Released
Status in python-oslo.utils package in Ubuntu:
Fix Released
Status in python3-defaults package in Ubuntu:
Invalid
Bug description:
When running the unit test on Python 3.8, it fails with the following
traceback:
oslo_utils.tests.test_reflection.CallbackEqualityTest.test_different_instance_callbacks
---------------------------------------------------------------------------------------
Captured traceback:
~~~~~~~~~~~~~~~~~~~
b'Traceback (most recent call last):'
b' File "/tmp/oslo.utils/oslo_utils/tests/test_reflection.py", line 156, in test_different_instance_callbacks'
b' self.assertTrue(reflection.is_same_callback(b.b, c.b, strict=False))'
b' File "/tmp/oslo.utils/.tox/py38/lib/python3.8/site-packages/unittest2/case.py", line 702, in assertTrue'
b' raise self.failureException(msg)'
b'AssertionError: False is not true'
b''
This is apparently caused by a behavior change in Python 3.8 due to
[1]. I have confirmed the different behavior by running tests manually
on 3.6, 3.7 (both return True) and 3.8.
According to [2], only taskflow seems to be using that method now, and
it is not changing the default value for the "strict" parameter.
[1] - https://bugs.python.org/issue1617161
[2] - http://codesearch.openstack.org/?q=is_same_callback&i=nope&files=&repos=
To manage notifications about this bug go to:
https://bugs.launchpad.net/oslo.utils/+bug/1841072/+subscriptions
More information about the Ubuntu-openstack-bugs
mailing list