jenkins-bot has submitted this change. ( 
https://gerrit.wikimedia.org/r/c/pywikibot/core/+/1251963?usp=email )

Change subject: [bugfix] Re-enable code entry point
......................................................................

[bugfix] Re-enable code entry point

With 7266b7c2 the code entry point was broken in Pywikibot 11.
Now handle missing wikitextparser and mwparserfromhell gracefully
in textlib and lazy raise ModuleNotFoundError when using
extract_templates_and_params.4

Also as a sanity check raise a RuntimeError if check_modules function
is called from site-package and remove the code which has broken the
entry point.

Bug: T420086
Change-Id: I0aa14e30022f0e08da335c2bd468a7ac53b48bc0
---
M pywikibot/scripts/wrapper.py
M pywikibot/textlib.py
2 files changed, 24 insertions(+), 12 deletions(-)

Approvals:
  JJMC89: Looks good to me, approved
  jenkins-bot: Verified




diff --git a/pywikibot/scripts/wrapper.py b/pywikibot/scripts/wrapper.py
index dff7baa..a7e607b 100755
--- a/pywikibot/scripts/wrapper.py
+++ b/pywikibot/scripts/wrapper.py
@@ -236,19 +236,24 @@

     :param script: The script name to be checked for dependencies
     :return: True if all dependencies are installed
-    :raise RuntimeError: wrong Python version found in setup.py
+    :raise RuntimeError: wrong Python version found in setup.py or
+        function is called in site-package environment.
     """
+    if site_package:
+        raise RuntimeError(
+            "check_modules function shouldn't be called from site-package"
+        )
+
     try:
         from packaging.requirements import Requirement
     except ModuleNotFoundError:
         _print_requirements(['packaging'], None, 'missing')
         sys.exit()

-    from setup import script_deps
-
     missing_requirements = []
     version_conflicts = []

+    from setup import script_deps
     if script:
         dependencies = script_deps.get(Path(script).name, [])
     else:
@@ -294,9 +299,6 @@
     return not missing_requirements


-if not check_modules():
-    sys.exit()
-
 filename, script_args, global_args, environ = handle_args(*sys.argv)

 # Search for user config file (user-config.py) before creating one.
@@ -558,6 +560,7 @@
     """
     global site_package
     site_package = True
+
     if not execute():
         print(__doc__)

diff --git a/pywikibot/textlib.py b/pywikibot/textlib.py
index 5ccaacf..269f43e 100644
--- a/pywikibot/textlib.py
+++ b/pywikibot/textlib.py
@@ -28,8 +28,11 @@

 try:
     import wikitextparser
-except ImportError:
-    import mwparserfromhell as wikitextparser
+except ModuleNotFoundError:
+    try:
+        import mwparserfromhell as wikitextparser
+    except ModuleNotFoundError as e:
+        wikitextparser = e


 # cache for replaceExcept to avoid recompile or regexes each call
@@ -2046,15 +2049,18 @@
     To replicate that behaviour, enable both `remove_disabled_parts`
     and `strip` parameters.

+    .. version-changed:: 6.1
+       *wikitextparser* package is supported; either *wikitextparser* or
+       *mwparserfromhell* is strictly recommended.
+    .. version-changed:: 11.1
+       Raise ModuleNotFoundError if no wikitext parser is installed.
+
     :param text: The wikitext from which templates are extracted
     :param remove_disabled_parts: If enabled, remove disabled wikitext
         such as comments and pre.
     :param strip: If enabled, strip arguments and values of templates.
     :return: List of template name and params
-
-    .. version-changed:: 6.1
-       *wikitextparser* package is supported; either *wikitextparser* or
-       *mwparserfromhell* is strictly recommended.
+    :raises ModuleNotFoundError: No wikitext parser is installed.
     """
     def explicit(param):
         try:
@@ -2063,6 +2069,9 @@
             attr = not param.positional
         return attr

+    if isinstance(wikitextparser, Exception):
+        raise wikitextparser
+
     if remove_disabled_parts:
         text = removeDisabledParts(text)


--
To view, visit 
https://gerrit.wikimedia.org/r/c/pywikibot/core/+/1251963?usp=email
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.wikimedia.org/r/settings?usp=email

Gerrit-MessageType: merged
Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Change-Id: I0aa14e30022f0e08da335c2bd468a7ac53b48bc0
Gerrit-Change-Number: 1251963
Gerrit-PatchSet: 1
Gerrit-Owner: Xqt <[email protected]>
Gerrit-Reviewer: JJMC89 <[email protected]>
Gerrit-Reviewer: jenkins-bot
_______________________________________________
Pywikibot-commits mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to