[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