[New-bugs-announce] [issue36688] import dummy_threading causes ImportError

Karthikeyan Singaravelan report at bugs.python.org
Sun Apr 21 02:20:08 EDT 2019


New submission from Karthikeyan Singaravelan <tir.karthi at gmail.com>:

importing dummy_threading causes ImportError. It used to work on 3.6. There are tests at Lib/test/test_dummy_threading.py and rearranging the import so that "import dummy_threading as _threading" is the first line also causes error. This module was deprecated from 3.7 with respect to threading enabled always but I thought to add a report anyway. Looking at git log it seems a6a4dc816d68df04a7d592e0b6af8c7ecc4d4344 did some changes where catching the ImportError on Lib/functools.py was removed that could be causing this issue. Importing functools before dummy_threading works.

# master with functools imported before dummy_threading

➜  cpython git:(master) ✗ ./python.exe -c 'import functools; import dummy_threading; print("hello")'
hello

# Python 3.6

$ python3.6 -c 'import dummy_threading; print("hello")'
hello

# Python 3.7

$ python3.7 -c 'import dummy_threading'
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/dummy_threading.py", line 45, in <module>
    import threading
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/threading.py", line 8, in <module>
    from traceback import format_exc as _format_exc
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/traceback.py", line 5, in <module>
    import linecache
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/linecache.py", line 8, in <module>
    import functools
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/functools.py", line 24, in <module>
    from _thread import RLock
ImportError: cannot import name 'RLock' from '_dummy_thread' (/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/_dummy_thread.py)

# master

$ cpython git:(master) ./python.exe -c 'import dummy_threading'
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/Users/karthikeyansingaravelan/stuff/python/cpython/Lib/dummy_threading.py", line 45, in <module>
    import threading
  File "/Users/karthikeyansingaravelan/stuff/python/cpython/Lib/threading.py", line 8, in <module>
    from traceback import format_exc as _format_exc
  File "/Users/karthikeyansingaravelan/stuff/python/cpython/Lib/traceback.py", line 5, in <module>
    import linecache
  File "/Users/karthikeyansingaravelan/stuff/python/cpython/Lib/linecache.py", line 8, in <module>
    import functools
  File "/Users/karthikeyansingaravelan/stuff/python/cpython/Lib/functools.py", line 20, in <module>
    from _thread import RLock
ImportError: cannot import name 'RLock' from '_dummy_thread' (/Users/karthikeyansingaravelan/stuff/python/cpython/Lib/_dummy_thread.py)

# Patch to move dummy_threading import as first line

diff --git a/Lib/test/test_dummy_threading.py b/Lib/test/test_dummy_threading.py
index a0c2972a60..dc40abeda5 100644
--- a/Lib/test/test_dummy_threading.py
+++ b/Lib/test/test_dummy_threading.py
@@ -1,6 +1,6 @@
+import dummy_threading as _threading
 from test import support
 import unittest
-import dummy_threading as _threading
 import time

 class DummyThreadingTestCase(unittest.TestCase):


➜  cpython git:(master) ✗ ./python.exe Lib/test/test_dummy_threading.py
Traceback (most recent call last):
  File "Lib/test/test_dummy_threading.py", line 1, in <module>
    import dummy_threading as _threading
  File "/Users/karthikeyansingaravelan/stuff/python/cpython/Lib/dummy_threading.py", line 45, in <module>
    import threading
  File "/Users/karthikeyansingaravelan/stuff/python/cpython/Lib/threading.py", line 8, in <module>
    from traceback import format_exc as _format_exc
  File "/Users/karthikeyansingaravelan/stuff/python/cpython/Lib/traceback.py", line 5, in <module>
    import linecache
  File "/Users/karthikeyansingaravelan/stuff/python/cpython/Lib/linecache.py", line 8, in <module>
    import functools
  File "/Users/karthikeyansingaravelan/stuff/python/cpython/Lib/functools.py", line 20, in <module>
    from _thread import RLock
ImportError: cannot import name 'RLock' from '_dummy_thread' (/Users/karthikeyansingaravelan/stuff/python/cpython/Lib/_dummy_thread.py)

----------
components: Library (Lib)
messages: 340597
nosy: brett.cannon, pitrou, xtreak
priority: normal
severity: normal
status: open
title: import dummy_threading causes ImportError
type: behavior
versions: Python 3.7, Python 3.8

_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue36688>
_______________________________________


More information about the New-bugs-announce mailing list