mirror of
https://github.com/python/cpython.git
synced 2025-10-22 14:42:22 +00:00
Removed no-longer-needed convolutions to recover from damaged modules
getting left beyind in sys.modules.
This commit is contained in:
parent
1cd701732f
commit
d464838ebc
2 changed files with 0 additions and 25 deletions
11
Lib/pty.py
11
Lib/pty.py
|
@ -8,17 +8,6 @@
|
||||||
|
|
||||||
from select import select
|
from select import select
|
||||||
import os
|
import os
|
||||||
|
|
||||||
# Absurd: import termios and then delete it. This is to force an attempt
|
|
||||||
# to import pty to raise an ImportError on platforms that lack termios.
|
|
||||||
# Without this explicit import of termios here, some other module may
|
|
||||||
# import tty first, which in turn imports termios and dies with an
|
|
||||||
# ImportError then. But since tty *does* exist across platforms, that
|
|
||||||
# leaves a damaged module object for tty in sys.modules, and the import
|
|
||||||
# of tty here then appears to work despite that the tty imported is junk.
|
|
||||||
import termios
|
|
||||||
del termios
|
|
||||||
|
|
||||||
import tty
|
import tty
|
||||||
|
|
||||||
__all__ = ["openpty","fork","spawn"]
|
__all__ = ["openpty","fork","spawn"]
|
||||||
|
|
|
@ -21,20 +21,6 @@ class AllTest(unittest.TestCase):
|
||||||
except ImportError:
|
except ImportError:
|
||||||
# Silent fail here seems the best route since some modules
|
# Silent fail here seems the best route since some modules
|
||||||
# may not be available in all environments.
|
# may not be available in all environments.
|
||||||
# Since an ImportError may leave a partial module object in
|
|
||||||
# sys.modules, get rid of that first. Here's what happens if
|
|
||||||
# you don't: importing pty fails on Windows because pty tries to
|
|
||||||
# import FCNTL, which doesn't exist. That raises an ImportError,
|
|
||||||
# caught here. It also leaves a partial pty module in sys.modules.
|
|
||||||
# So when test_pty is called later, the import of pty succeeds,
|
|
||||||
# but shouldn't. As a result, test_pty crashes with an
|
|
||||||
# AttributeError instead of an ImportError, and regrtest interprets
|
|
||||||
# the latter as a test failure (ImportError is treated as "test
|
|
||||||
# skipped" -- which is what test_pty should say on Windows).
|
|
||||||
try:
|
|
||||||
del sys.modules[modname]
|
|
||||||
except KeyError:
|
|
||||||
pass
|
|
||||||
return
|
return
|
||||||
verify(hasattr(sys.modules[modname], "__all__"),
|
verify(hasattr(sys.modules[modname], "__all__"),
|
||||||
"%s has no __all__ attribute" % modname)
|
"%s has no __all__ attribute" % modname)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue