jenkins-bot submitted this change.

View Change

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

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

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

Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Change-Id: I8731ea58afca53da2c20a1ff614c1da4e020b5c5
Gerrit-Change-Number: 634544
Gerrit-PatchSet: 10
Gerrit-Owner: Xqt <info@gno.de>
Gerrit-Reviewer: AbdealiJK <abdealikothari@gmail.com>
Gerrit-Reviewer: Dvorapa <dvorapa@seznam.cz>
Gerrit-Reviewer: Framawiki <framawiki@tools.wmflabs.org>
Gerrit-Reviewer: Hazard-SJ <hazardsjwiki@gmail.com>
Gerrit-Reviewer: JJMC89 <JJMC89.Wikimedia@gmail.com>
Gerrit-Reviewer: Legoktm <legoktm@debian.org>
Gerrit-Reviewer: Matěj Suchánek <matejsuchanek97@gmail.com>
Gerrit-Reviewer: Merlijn van Deen <valhallasw@arctus.nl>
Gerrit-Reviewer: Mpaa <mpaa.wiki@gmail.com>
Gerrit-Reviewer: RhinosF1 <rhinosf1@gmail.com>
Gerrit-Reviewer: Xqt <info@gno.de>
Gerrit-Reviewer: Zhuyifei1999 <zhuyifei1999@gmail.com>
Gerrit-Reviewer: Zppix <Megadev44s.mail@gmail.com>
Gerrit-Reviewer: jenkins-bot
Gerrit-MessageType: merged