Xqt has submitted this change. ( https://gerrit.wikimedia.org/r/c/pywikibot/core/+/905151 )
Change subject: [doc] Enable gui module to be documented ......................................................................
[doc] Enable gui module to be documented
Lazy load idlelib that sphinx does not fail to include the module.
Bug: T333798 Change-Id: I9f8f206874c8ef547da1ebb087335429fb2ca400 --- M pywikibot/userinterfaces/gui.py 1 file changed, 34 insertions(+), 12 deletions(-)
Approvals: Xqt: Verified; Looks good to me, approved
diff --git a/pywikibot/userinterfaces/gui.py b/pywikibot/userinterfaces/gui.py index 4aab52a..297ee7b 100644 --- a/pywikibot/userinterfaces/gui.py +++ b/pywikibot/userinterfaces/gui.py @@ -2,24 +2,31 @@
Useful for editing the contents of an article.
-.. note:: tkinter module is required +.. note:: idlelib and tkinter modules are required """ # # (C) Pywikibot team, 2003-2023 # # Distributed under the terms of the MIT license. # -from idlelib import replace as ReplaceDialog # noqa: N812 -from idlelib import search as SearchDialog # noqa: N812 -from idlelib.config import idleConf -from idlelib.configdialog import ConfigDialog -from idlelib.multicall import MultiCallCreator from typing import Optional
import pywikibot from pywikibot.backports import Tuple from pywikibot.tools import PYTHON_VERSION
+try: + import idlelib +except ImportError as e: + idlelib = e + ConfigDialog = ReplaceDialog = SearchDialog = object() + idleConf = MultiCallCreator = object() # noqa: N816 +else: + from idlelib import replace as ReplaceDialog # noqa: N812 + from idlelib import search as SearchDialog # noqa: N812 + from idlelib.config import idleConf + from idlelib.configdialog import ConfigDialog + from idlelib.multicall import MultiCallCreator
try: import tkinter @@ -49,8 +56,9 @@
Get default settings from user's IDLE configuration. """ - if isinstance(tkinter, ImportError): - raise tkinter + for module in (idlelib, tkinter): + if isinstance(module, ImportError): + raise module
textcf = self._initialize_config(idleConf.CurrentTheme())
@@ -282,8 +290,9 @@
def __init__(self, parent=None, **kwargs) -> None: """Initializer.""" - if isinstance(tkinter, ImportError): - raise tkinter + for module in (idlelib, tkinter): + if isinstance(module, ImportError): + raise module
if parent is None: # create a new window @@ -447,8 +456,9 @@
def __init__(self, photo_description, photo, filename) -> None: """Initializer.""" - if isinstance(tkinter, ImportError): - raise tkinter + for module in (idlelib, tkinter): + if isinstance(module, ImportError): + raise module
self.root = tkinter.Tk() # "%dx%d%+d%+d" % (width, height, xoffset, yoffset)