a new stable release Pywikibot 7 will be deployed at the end of this month.
There are a lot important points with this release, currently implemented in
Pywkibot support of Python 3.5.0 - 3.5.2 will be dropped. The minimum plattform
required is Python 3.5.3 which is preinstalled at toolforge. On the other hand
Pywikibot also works with new Python 3.11.0a and *new* supports PyPy 3. Most
used plattform measured by PyPy download statistic is Python 3.8 (T266984). For
developers I highly propose to use Python 3.10 due to "Better error messages"
The both scripts generate_family_file and generate_user_files were moved from
framework root directory to pywikibot/scripts folder. The two scripts shell and
version were moved from scripts folder to pywikibot/scripts. This arrangement
was necessary to implement a code entry point for Pywikibot site-package.
Possibly you have to change the path environment setting to use these scripts.
But all of them are still available through the pwb.py wrapper script.
Scripts hash bang was changed from python to python3. This enables to invoke
scripts without preleading interpreter.
Pywikibot 7 is a stable release and becomes the Pywikibot framework base on
After deployment of Pywikibot 7 this stable release will be available under
/shared/pywikibot/stable and the current master can be accessed under
/shared/pywikibot/core. The pwb.py wrapper script can be used at Tooforge
and the similar script search is functional.
No changes was made for supporting MediaWiki releases. Pywikibot 7 supports
MediaWiki 1.23-1.37. For current MediaWiki release 1.37 the minimum Pywikibot
version must be 6.6.1. MW 1.19 requires PWB 5 and MW 1.14 requires PWB 4.
Pywikibot site-package (PyPi):
Installing Pywikibot as a site package (pip install pywikibot==7.0) comes with
many innovations. pywikibot i18n messages bundle is available. Framework
scripts listed above can be used with Pywikibot 7.The pwb wrapper script is the
code entry point to invoke these scripts:
pwb [global options] <framework script> [script options|global options]
Pywikibot CI tests were moved from Travis to GitHub action. There are two
actions implemented. The first runs up tp 20 workers in parallel and does the
most tests whereas the second only runs login/logout tests but there are no
parallel task which would lead to failures due to not logged-in test account.
Support for API:Redirects was added in site and page module. User.is_locked()
and APISite.is_locked() were added to determine whether a given user or user id
is locked globally. The cached output functionality from compat release was
Allow family files reside in `families` folder in base_dir by default. This is
important if Pywikibot is used as a site-package. generate_family_file uses
this new place to save the family file. Wikihow family file was added.
bundles() yields message bundle names or Path objects; known_languages() gives
all languages we have localizations for.
isStaticRedirect() also considers transcluded __STATICREDIRECT__.
put() and change_category() now has a show_diff parameter. User.is_blocked()
can also detect range blocks.
Wikimedia OCR engine is supported.
APISite.get_globaluserinfo() method was added to retrieve globaluserinfo.
New "maxlimit" property was added to determine the limits for API loads.
textlib comes with to_latin_digits() function as counterpart of
to_local_digits() and case_escape() which gives an escaped regex pattern
depending on 'first-letter' case.
intersect_generators was rewritten which makes it running up to 10’000 times
Scripts descriptions can be viewed at
ConfigParserBot is provided for several scripts. Any option can be set within
add_text scripts provided -create and -createonly options. A CleanBot was added
in category script which can be invoked by clean action option. It removes
redundant grandchildren categories. The fixing_redirect script uses
concurrent.futures to retrieve redirect targets; this decreases processing time
by 90% if solving moved pages is enabled.
Most of the deprecated code parts were removed to start with a new proper and
maintainable code without budensome overhead. The deprecations must be solved
if you have your own code based on Pywikibot before you upgrade to the new
release. Refer https://doc.wikimedia.org/pywikibot/master/changelog.html to see
all changes. Run your scripts and focus on FutureWarnings about deprecated code
parts. Refer the logs for deprecation warnings. Scripts must be run with global
-log option; if your script does not use handle_args() function you can invoke
it with the pwb wrapper script:
pwb.py -log <yourscript> [your options]
Thank you all, comments are welcome