jenkins-bot has submitted this change. ( https://gerrit.wikimedia.org/r/c/pywikibot/core/+/634544 )
Change subject: [IMPR] Move generate_family_file.py to pywkibot/scripts ......................................................................
[IMPR] Move generate_family_file.py to pywkibot/scripts
- move generate_family_file.py to pywikibot/scripts/ This enables to run this scripts from the pywikibot site package using the already implemented pwb code entry point on any location with pwb generate_family_file <options> - Instead of pywikibot/families as target directory the families folder in the base directory is used; create the families folder if necessary. - update imports - update tests - update doc
Bug: T107629 Change-Id: I8731ea58afca53da2c20a1ff614c1da4e020b5c5 --- M .gitignore M CONTENT.rst M docs/utilities/index.rst M pywikibot/CONTENT.rst R pywikibot/scripts/generate_family_file.py M tests/generate_family_file_tests.py M tox.ini 7 files changed, 23 insertions(+), 12 deletions(-)
Approvals: Xqt: Looks good to me, approved jenkins-bot: Verified
diff --git a/.gitignore b/.gitignore index cefdbd2..9d20600 100644 --- a/.gitignore +++ b/.gitignore @@ -9,6 +9,7 @@ /*.egg /data* /category* +families/ logs* *apicache* *pycache* @@ -17,7 +18,6 @@ .cache .idea pywikibot.egg-info/ -pywikibot/families/ build dist docs/_build/ diff --git a/CONTENT.rst b/CONTENT.rst index 7f42248..9e02e4b 100644 --- a/CONTENT.rst +++ b/CONTENT.rst @@ -16,8 +16,6 @@ +---------------------------+-----------------------------------------------------------+ | Dockerfile-dev | Docker image including developement dependencies | +---------------------------+-----------------------------------------------------------+ - | generate_family_file.py | Creates a new family file | - +---------------------------+-----------------------------------------------------------+ | HISTORY.rst | PyPI version history file | +---------------------------+-----------------------------------------------------------+ | LICENSE | Reference to the MIT license | diff --git a/docs/utilities/index.rst b/docs/utilities/index.rst index 5e61800..0cbd533 100644 --- a/docs/utilities/index.rst +++ b/docs/utilities/index.rst @@ -14,7 +14,7 @@ generate_family_file script -----------------------------
-.. automodule:: generate_family_file +.. automodule:: pywikibot.scripts.generate_family_file
generate_user_files script ---------------------------- diff --git a/pywikibot/CONTENT.rst b/pywikibot/CONTENT.rst index 468259a..0556e3d 100644 --- a/pywikibot/CONTENT.rst +++ b/pywikibot/CONTENT.rst @@ -115,6 +115,8 @@ +----------------------------+------------------------------------------------------+ | scripts | Framework helper scripts and entry points | +============================+======================================================+ + | generate_family_file.py | Creates a new family file | + +----------------------------+------------------------------------------------------+ | generate_user_files.py | Creates user-config.py or user-fixes.py | +----------------------------+------------------------------------------------------+ | pwb.py | Code entry wrapper script (site-package only) | diff --git a/generate_family_file.py b/pywikibot/scripts/generate_family_file.py similarity index 91% rename from generate_family_file.py rename to pywikibot/scripts/generate_family_file.py index f3125f8..f86e655 100755 --- a/generate_family_file.py +++ b/pywikibot/scripts/generate_family_file.py @@ -1,9 +1,11 @@ #!/usr/bin/python """This script generates a family file from a given URL.
+This script must be invoked with the pwb wrapper script/code entry point. + Usage::
- generate_family_file.py [<url>] [<name>] [<dointerwiki>] [<verify>] + pwb generate_family_file.py [<url>] [<name>] [<dointerwiki>] [<verify>]
Parameters are optional. They must be given consecutively but may be omitted if there is no successor parameter. The parameters are:: @@ -15,9 +17,14 @@
Example::
- generate_family_file.py https://www.mywiki.bogus/wiki/Main_Page mywiki + pwb generate_family_file.py https://www.mywiki.bogus/wiki/Main_Page mywiki
-This will create the file mywiki_family.py in pywikibot/families folder +This will create the file mywiki_family.py in families folder of your +base directory. + +.. versionchanged:: 7.0 + moved to pywikibot.scripts folder; create family files in families + folder of your base directory instead of pywikibot/families. """ # # (C) Pywikibot team, 2010-2021 @@ -63,12 +70,15 @@ to keep it enabled. """ from pywikibot.scripts import _import_with_no_user_config - # from pywikibot.site_detect import MWSite + # from pywikibot.site_detect import MWSite and + # from pywikibot.config import base_dir # when required but disable user-config checks # so the family can be created first, # and then used when generating the user-config self.Wiki = _import_with_no_user_config( 'pywikibot.site_detect').site_detect.MWSite + self.base_dir = _import_with_no_user_config( + 'pywikibot.config').config.base_dir
self.base_url = url self.name = name @@ -200,8 +210,7 @@
def writefile(self, verify): """Write the family file.""" - fn = os.path.join(os.path.dirname(os.path.realpath(__file__)), - 'pywikibot', 'families', + fn = os.path.join(self.base_dir, 'families', '{}_family.py'.format(self.name)) print('Writing %s... ' % fn) try: @@ -239,6 +248,7 @@ def verify_SSL_certificate(self, code: str) -> bool: return False """ + os.makedirs(os.path.dirname(fn), exist_ok=True) with codecs.open(fn, 'w', 'utf-8') as fh: fh.write(content)
diff --git a/tests/generate_family_file_tests.py b/tests/generate_family_file_tests.py index f89341c..1e31ea9 100644 --- a/tests/generate_family_file_tests.py +++ b/tests/generate_family_file_tests.py @@ -9,8 +9,9 @@ from random import sample from urllib.parse import urlparse
-import generate_family_file +from pywikibot.scripts import generate_family_file from pywikibot import Site + from tests.aspects import DefaultSiteTestCase
diff --git a/tox.ini b/tox.ini index f109f51..5c9e621 100644 --- a/tox.ini +++ b/tox.ini @@ -137,7 +137,6 @@ # N816: mixedCase variable in global scope
per-file-ignores = - generate_family_file.py: T001 pwb.py: FI53, T001 pywikibot/__init__.py: N802, N806, N815 pywikibot/_wbtypes.py: N802 @@ -156,6 +155,7 @@ pywikibot/page/__init__.py: N802 pywikibot/page/_collections.py: N802 pywikibot/pagegenerators.py: N802, N803, N806, N816 + pywikibot/scripts/generate_family_file.py: T001 pywikibot/site/_datasite.py: N802 pywikibot/textlib.py: N801, N802, N803, N806 pywikibot/throttle.py: N802
pywikibot-commits@lists.wikimedia.org