Removed no-longer-needed convolutions to recover from damaged modules

getting left beyind in sys.modules.
This commit is contained in:
Tim Peters 2004-08-02 03:55:18 +00:00
parent 1cd701732f
commit d464838ebc
2 changed files with 0 additions and 25 deletions

View file

@ -8,17 +8,6 @@
from select import select
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
__all__ = ["openpty","fork","spawn"]

View file

@ -21,20 +21,6 @@ def check_all(self, modname):
except ImportError:
# Silent fail here seems the best route since some modules
# 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
verify(hasattr(sys.modules[modname], "__all__"),
"%s has no __all__ attribute" % modname)