[issue29620] unittest.TestCase.assertWarns raises RuntimeEror if sys.modules changes size

2021-11-18 Thread Łukasz Langa

Łukasz Langa  added the comment:


New changeset 71d842b9c1e9d86ede449783e630b7a768b579d6 by Miss Islington (bot) 
in branch '3.9':
bpo-29620: iterate over a copy of sys.modules (GH-4800) (GH-29605)
https://github.com/python/cpython/commit/71d842b9c1e9d86ede449783e630b7a768b579d6


--
nosy: +lukasz.langa

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue29620] unittest.TestCase.assertWarns raises RuntimeEror if sys.modules changes size

2021-11-17 Thread miss-islington


Change by miss-islington :


--
pull_requests: +27846
pull_request: https://github.com/python/cpython/pull/29605

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue29620] unittest.TestCase.assertWarns raises RuntimeEror if sys.modules changes size

2020-06-11 Thread A.M. Kuchling


A.M. Kuchling  added the comment:

Changes applied to master, 3.8, and 3.7.  Thanks!

--
resolution:  -> fixed
stage: patch review -> resolved
status: open -> closed

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue29620] unittest.TestCase.assertWarns raises RuntimeEror if sys.modules changes size

2020-06-11 Thread A.M. Kuchling


A.M. Kuchling  added the comment:


New changeset f881c869753fb2b1b7aef353416893190251c539 by Miss Islington (bot) 
in branch '3.7':
bpo-29620: iterate over a copy of sys.modules (GH-4800) (GH-20817)
https://github.com/python/cpython/commit/f881c869753fb2b1b7aef353416893190251c539


--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue29620] unittest.TestCase.assertWarns raises RuntimeEror if sys.modules changes size

2020-06-11 Thread A.M. Kuchling


A.M. Kuchling  added the comment:


New changeset 3e499cda47afe2282ca3f1d04151e2c86f2e7e09 by Miss Islington (bot) 
in branch '3.8':
bpo-29620: iterate over a copy of sys.modules (GH-4800) (GH-20816)
https://github.com/python/cpython/commit/3e499cda47afe2282ca3f1d04151e2c86f2e7e09


--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue29620] unittest.TestCase.assertWarns raises RuntimeEror if sys.modules changes size

2020-06-11 Thread miss-islington


Change by miss-islington :


--
pull_requests: +20015
pull_request: https://github.com/python/cpython/pull/20817

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue29620] unittest.TestCase.assertWarns raises RuntimeEror if sys.modules changes size

2020-06-11 Thread miss-islington


Change by miss-islington :


--
nosy: +miss-islington
nosy_count: 6.0 -> 7.0
pull_requests: +20014
pull_request: https://github.com/python/cpython/pull/20816

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue29620] unittest.TestCase.assertWarns raises RuntimeEror if sys.modules changes size

2020-06-11 Thread A.M. Kuchling


A.M. Kuchling  added the comment:


New changeset 46398fba4d66ad342cf2504ef947b5fb857423b2 by kernc in branch 
'master':
bpo-29620: iterate over a copy of sys.modules (GH-4800)
https://github.com/python/cpython/commit/46398fba4d66ad342cf2504ef947b5fb857423b2


--
nosy: +akuchling

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue29620] unittest.TestCase.assertWarns raises RuntimeEror if sys.modules changes size

2020-02-12 Thread Maximilian Peters


Maximilian Peters  added the comment:

Ran into the same issue using Python 3.6.8 [GCC 5.4.0 20160609] on Linux.

The same code worked on Windows 10 with Python 3.7 32-bit and 64-bit.

--
nosy: +Maximilian Peters

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue29620] unittest.TestCase.assertWarns raises RuntimeEror if sys.modules changes size

2019-11-15 Thread Arthit Suriyawongkul


Arthit Suriyawongkul  added the comment:

Confirmed this behavior on
- Python 3.6.8 64-bit on Windows Server 2016 (AppVeyor "Visual Studio 2017" 
build environment)
- Python 3.6.7 64-bit on Linux

--
nosy: +Arthit Suriyawongkul

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue29620] unittest.TestCase.assertWarns raises RuntimeEror if sys.modules changes size

2018-08-20 Thread Serhiy Storchaka


Change by Serhiy Storchaka :


--
nosy: +serhiy.storchaka
versions: +Python 2.7, Python 3.8 -Python 3.4, Python 3.5

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue29620] unittest.TestCase.assertWarns raises RuntimeEror if sys.modules changes size

2018-08-20 Thread William Schwartz


William Schwartz  added the comment:

I am also running into this problem. I'm not 100%, but I'm pretty sure that 
looping over sys.modules and accessing __warningregistry__ on each module 
triggers one of my module's __getattr__ functions (PEP 562), which in turn uses 
setuptools entry points to import an arbitrary set of other modules.

Bizarrely, however, I cannot reproduce on macOS, only Linux. Presumably there's 
something platform dependent about how the default unittest test runner orders 
my tests, and hence which modules have already been loaded by the time I call 
assertWarnsRegex.

--
nosy: +William.Schwartz

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue29620] unittest.TestCase.assertWarns raises RuntimeEror if sys.modules changes size

2017-12-11 Thread kernc

Change by kernc :


--
keywords: +patch
pull_requests: +4699
stage:  -> patch review

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue29620] unittest.TestCase.assertWarns raises RuntimeEror if sys.modules changes size

2017-02-22 Thread kernc

New submission from kernc:

If any of the objects in sys.modules is a module-like object that performs some 
additional imports in its __getattribute__ (as appropriate) handler, the 
following simple unit test test case:

import unittest
import warnings

... # Ensure one of the imported modules is a module-like object as above

class Case(unittest.TestCase):
def test_assertWarns(self):
with self.assertWarns(UserWarning):
warnings.warn('Some warning')

fails with:

==
ERROR: test_assertWarns (example.Case)
--
Traceback (most recent call last):
  File "/tmp/example.py", line 9, in test_assertWarns
with self.assertWarns(UserWarning):
  File "/usr/lib/python3.4/unittest/case.py", line 205, in __enter__
for v in sys.modules.values():
RuntimeError: dictionary changed size during iteration
--

The problem is in the iteration over sys.modules in 
unittest.case._AssertWarnsContext.__enter__() and accessing every module's 
__warningregistry__ attribute. On this access, the module-like objects may 
perform arbitrary actions including importing of further modules which extends 
sys.modules.

https://github.com/python/cpython/blob/16ea19fc6653ee4ec1be7cd0206073962119ac08/Lib/unittest/case.py#L226-L227

The simple proposed fix with no foreseen side-effects is to wrap 
sys.modules.values() call as a tuple().

--
components: Library (Lib)
messages: 288370
nosy: kernc
priority: normal
severity: normal
status: open
title: unittest.TestCase.assertWarns raises RuntimeEror if sys.modules changes 
size
type: behavior
versions: Python 3.4, Python 3.5, Python 3.6, Python 3.7

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com