Utility scripts#

cache script#

This script runs commands on each entry in the API caches


python pwb.py cache [-password] [-delete] [-c "..."] [-o "..."] [dir ...]

If no directory are specified, it will detect the API caches.

If no command is specified, it will print the filename of all entries. If only -delete is specified, it will delete all entries.

The following parameters are supported:

-delete           Delete each command filtered. If that option is set the
                  default output will be nothing.

-c                Filter command in python syntax. It must evaluate to True to
                  output anything.

-o                Output command which is output when the filter evaluated to
                  True. If it returns None it won't output anything.


Print the filename of any entry with ‘wikidata’ in the key:

-c "wikidata" in entry._uniquedescriptionstr()

Customised output if the site code is ‘ar’:

-c entry.site.code == "ar"
-o uniquedesc(entry)

Or the state of the login:

-c entry.site._loginstatus == LoginStatus.NOT_ATTEMPTED
-o uniquedesc(entry)

If the function only uses one parameter for the entry it can be omitted:

-c has_password
-o uniquedesc

Available filter commands:


There are helper functions which can be part of a command:

older_than(entry, interval)
newer_than(entry, interval)

Available output commands:


colors script#

Utility to show pywikibot colors

make_i18n_dict script#

Generate an i18n file from a given script

run IDLE at topmost level:

>>> import pwb
>>> from scripts.maintenance.make_i18n_dict import i18nBot
>>> bot = i18nBot('<scriptname>', '<msg dict>')
>>> bot.run()

If you have more than one message dictionary, give all these names to the bot:

>>> bot = i18nBot('<scriptname>', '<msg dict1>', '<msg dict2>', '<msg dict3>')

If you want to rename the message index use keyword arguments. This may be mixed with preleading positonal arguments:

>>> bot = i18nBot('<scriptname>', '<msg dict1>', the_other_msg='<msg dict2>')

If you have the messages as instance constants you may call the bot as follows:

>>> bot = i18nBot('<scriptname>.<class name>', '<msg dict1>', '<msg dict2>')

It’s also possible to make json files too by using to_json method after instantiating the bot. It also calls bot.run() to create the dictionaries:

>>> bot.to_json()

unidata script#

Script to update :mod:`pywikibot.tools._unidata`

This script is for updating _first_upper_exception_dict.


I seems that running under the latest version of Python gives a superse of the older version and should be enough. But this is not tested completely.

New in version 8.4.

wikimedia_sites script#

Script that updates the language lists in Wikimedia family files


python pwb.py wikimedia_sites [ {<family>} ]