Description: non-strict callback comparison is not possible in py3.8
Author: Dimitri John Ledkov <xnox@ubuntu.com>
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):