mirror of
https://github.com/python/cpython.git
synced 2025-09-26 10:19:53 +00:00
bpo-41144: Fix IDLE open module error (GH-21182)
Could not open os.path.
Co-authored-by: Terry Jan Reedy <tjreedy@udel.edu>
(cherry picked from commit 8ab77c6f9f
)
Co-authored-by: E-Paine <63801254+E-Paine@users.noreply.github.com>
This commit is contained in:
parent
6e39999a24
commit
1497bf66f9
4 changed files with 20 additions and 7 deletions
|
@ -19,7 +19,7 @@ Subclass HelpSource gets menu item and path for additions to Help menu.
|
|||
# HelpSource was extracted from configHelpSourceEdit.py (temporarily
|
||||
# config_help.py), with darwin code moved from ok to path_ok.
|
||||
|
||||
import importlib
|
||||
import importlib.util, importlib.abc
|
||||
import os
|
||||
import shlex
|
||||
from sys import executable, platform # Platform is set for one test.
|
||||
|
@ -57,7 +57,8 @@ class Query(Toplevel):
|
|||
self.withdraw() # Hide while configuring, especially geometry.
|
||||
self.title(title)
|
||||
self.transient(parent)
|
||||
self.grab_set()
|
||||
if not _utest: # Otherwise fail when directly run unittest.
|
||||
self.grab_set()
|
||||
|
||||
windowingsystem = self.tk.call('tk', 'windowingsystem')
|
||||
if windowingsystem == 'aqua':
|
||||
|
@ -209,17 +210,23 @@ class ModuleName(Query):
|
|||
self.showerror(str(msg))
|
||||
return None
|
||||
if spec is None:
|
||||
self.showerror("module not found")
|
||||
self.showerror("module not found.")
|
||||
return None
|
||||
if not isinstance(spec.loader, importlib.abc.SourceLoader):
|
||||
self.showerror("not a source-based module")
|
||||
self.showerror("not a source-based module.")
|
||||
return None
|
||||
try:
|
||||
file_path = spec.loader.get_filename(name)
|
||||
except AttributeError:
|
||||
self.showerror("loader does not support get_filename",
|
||||
parent=self)
|
||||
self.showerror("loader does not support get_filename.")
|
||||
return None
|
||||
except ImportError:
|
||||
# Some special modules require this (e.g. os.path)
|
||||
try:
|
||||
file_path = spec.loader.get_filename()
|
||||
except TypeError:
|
||||
self.showerror("loader failed to get filename.")
|
||||
return None
|
||||
return file_path
|
||||
|
||||
|
||||
|
@ -375,7 +382,7 @@ class CustomRun(Query):
|
|||
return cli_args
|
||||
|
||||
def entry_ok(self):
|
||||
"Return apparently valid (cli_args, restart) or None"
|
||||
"Return apparently valid (cli_args, restart) or None."
|
||||
cli_args = self.cli_args_ok()
|
||||
restart = self.restartvar.get()
|
||||
return None if cli_args is None else (cli_args, restart)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue