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 <gm...@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 Touch seeded packages, which is subscribed to python3-defaults 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 -- Mailing list: https://launchpad.net/~touch-packages Post to : touch-packages@lists.launchpad.net Unsubscribe : https://launchpad.net/~touch-packages More help : https://help.launchpad.net/ListHelp