This is a guide to converting bot scripts from version 1 of the Pywikibot framework to version 3. Most importantly, note that the version 3 framework *only* supports wikis using MediaWiki v.1.14 or higher software. If you need to access a wiki that uses older software, you should continue using version 1 for this purpose. The root namespace used in the project has changed from "wikipedia" to "pywikibot". References to wikipedia need to be changed globally to pywikibot. Unless noted in this document, other names have not changed; for example, wikipedia.Page can be replaced by pywikibot.Page throughout any bot. An effort has been made to design the interface to be as backwards- compatible as possible, so that in most cases it should be possible to convert scripts to the new interface simply by changing import statements and doing global search-and-replace on module names, as discussed in this document. With pywikibot compat branch scripts were importing "wikipedia" or "pagegenerators" libraries; pywikibot is now written as a standard package, and other modules are contained within it (e.g., pywikibot.site contains Site classes). However, most commonly-used names are imported into the pywikibot namespace, so that module names don't need to be used unless specified in the documentation. Make sure that the directory that contains the "pywikibot" subdirectory (or folder) is in sys.path. The following changes, at a minimum, need to be made to allow scripts to run: change "import wikipedia" to "import pywikibot" change "import pagegenerators" to "from pywikibot import pagegenerators" change "import config" to "from pywikibot import config" change "catlib.Category" to "pywikibot.Category" change "catlib.change_category(page, ...)" to "page.change_category(...)" change "query.GetData(request)" to "pywikibot.data.api.request(**request).submit()" change "userlib.User" to "pywikibot.User" change "wikipedia." to "pywikibot." wikipedia.setAction() no longer works; you must revise the script to pass an explicit edit summary message on each put() call. There is a helper script which does a lot of changes automatically. Just call it: pwb.py maintenance/compat2core [