Xqt submitted this change.

View Change


Approvals: Xqt: Verified; Looks good to me, approved
[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(-)

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)

To view, visit change 905151. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Change-Id: I9f8f206874c8ef547da1ebb087335429fb2ca400
Gerrit-Change-Number: 905151
Gerrit-PatchSet: 3
Gerrit-Owner: Xqt <info@gno.de>
Gerrit-Reviewer: Xqt <info@gno.de>
Gerrit-Reviewer: jenkins-bot
Gerrit-MessageType: merged