Description: non-strict callback comparison is not possible in py3.8 Author: Dimitri John Ledkov Bug-Python: https://bugs.python.org/issue1617161 Bug-LP: https://bugs.launchpad.net/ubuntu/+source/python-oslo.utils/+bug/1841072 Index: python-oslo.utils-3.41.1/oslo_utils/reflection.py =================================================================== --- python-oslo.utils-3.41.1.orig/oslo_utils/reflection.py +++ python-oslo.utils-3.41.1/oslo_utils/reflection.py @@ -22,6 +22,8 @@ Reflection module. import inspect import types +import platform +import warnings import six @@ -169,7 +171,10 @@ def is_same_callback(callback1, callback # This happens when plain methods are given (or static/non-bound # methods). return True + if not strict and platform.python_version() > '3.8': + warnings.warn("non strict comparison impossible in py3.8+", DeprecationWarning) if callback1 == callback2: + ## raise deprecated warning if not strict: return True # Two bound methods are equal if functions themselves are equal and Index: python-oslo.utils-3.41.1/oslo_utils/tests/test_reflection.py =================================================================== --- python-oslo.utils-3.41.1.orig/oslo_utils/tests/test_reflection.py +++ python-oslo.utils-3.41.1/oslo_utils/tests/test_reflection.py @@ -17,6 +17,7 @@ from oslotest import base as test_base import six import testtools +import warnings from oslo_utils import reflection @@ -153,7 +154,15 @@ class CallbackEqualityTest(test_base.Bas c = A() self.assertFalse(reflection.is_same_callback(b.b, c.b)) - self.assertTrue(reflection.is_same_callback(b.b, c.b, strict=False)) + + # Non-strict reflection comparison is not possible in py3.8+ + with warnings.catch_warnings(record=True) as capture: + warnings.simplefilter("always") + res = reflection.is_same_callback(b.b, c.b, strict=False) + if len(capture): + self.assertFalse(res) + else: + self.assertTrue(res) class BoundMethodTest(test_base.BaseTestCase):