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

Reply via email to