Change log#
What is new with Pywikibot 9.6.0.dev0? What are the main changes of older version?
Current Release Changes#
Python 3.7 support will be discontinued and probably this is the last version supporting it
Retry
data.sparql.SparqlQuery.query()
on internal server error (500) (T378788)Extract
APISite.linktrail()
for hr-wiki (T378787)
Current Deprecations#
9.5.0:
DataSite.getPropertyType()
will be removed in favour ofDataSite.get_property_type()
9.4.0:
flow
support is deprecated and will be removed (T371180)9.3.0:
page.BasePage.userName()
andpage.BasePage.isIpEdit()
are deprecated in favour ofuser
oranon
attributes ofpage.BasePage.latest_revision
property9.2.0: Imports of
logging
functions frombot
module is deprecated and will be desupported9.2.0: total argument in
-logevents
pagegenerators option is deprecated; use-limit
instead (T128981)9.0.0: The content parameter of
proofreadpage.IndexPage.page_gen()
is deprecated and will be ignored (T358635)9.0.0:
userinterfaces.transliteration.transliterator
was renamed toTransliterator
9.0.0:
next
parameter ofuserinterfaces.transliteration.transliterator.transliterate()
was renamed tosucc
9.0.0:
type
parameter ofsite.APISite.protectedpages()
was renamed toprotect_type
9.0.0:
all
parameter ofsite.APISite.namespace()
was renamed toall_ns
9.0.0:
filter
parameter ofdate.dh()
was renamed tofilter_func
9.0.0:
dict
parameter ofdata.api.OptionSet
was renamed todata
9.0.0:
pywikibot.version.get_toolforge_hostname()
is deprecated without replacement9.0.0:
allrevisions
parameter ofxmlreader.XmpDump
is deprecated, userevisions
instead (T340804)9.0.0:
iteritems
method ofdata.api.Request
will be removed in favour ofitems
9.0.0:
SequenceOutputter.output()
is deprecated in favour oftools.formatter.SequenceOutputter.out
property9.0.0: nullcontext context manager and SimpleQueue queue of
backports
are derecated8.4.0: modules_only_mode parameter of
data.api.ParamInfo
, its paraminfo_keys class attribute and its preloaded_modules property will be removed8.4.0: dropdelay and releasepid attributes of
throttle.Throttle
will be removed in favour of expiry class attribute8.2.0:
tools.itertools.itergroup()
will be removed in favour ofbackports.batched()
8.2.0: normalize parameter of
WbTime.toTimestr()
andWbTime.toWikibase()
will be removed8.1.0: Dependency of
exceptions.NoSiteLinkError
fromexceptions.NoPageError
will be removed8.1.0:
exceptions.Server414Error
is deprecated in favour ofexceptions.Client414Error
8.0.0:
Timestamp.clone()
method is deprecated in favour ofTimestamp.replace()
method.8.0.0:
family.Family.maximum_GET_length()
method is deprecated in favour of config.maximum_GET_length (T325957)8.0.0:
addOnly
parameter oftextlib.replaceLanguageLinks()
andtextlib.replaceCategoryLinks()
are deprecated in favour ofadd_only
8.0.0:
textlib.TimeStripper
regex attributesptimeR
,ptimeznR
,pyearR
,pmonthR
,pdayR
are deprecated in favour ofpatterns
attribute which is atextlib.TimeStripperPatterns
.8.0.0:
textlib.TimeStripper
groups
attribute is deprecated in favour oftextlib.TIMEGROUPS
8.0.0:
LoginManager.get_login_token
was replaced bylogin.ClientLoginManager.site.tokens['login']
8.0.0:
data.api.LoginManager()
is deprecated in favour oflogin.ClientLoginManager
8.0.0:
APISite.messages()
method is deprecated in favour ofuserinfo['messages']
8.0.0:
Page.editTime()
method is deprecated and should be replaced byPage.latest_revision.timestamp
Pending removal in Pywikibot 10#
9.6.0: Python 3.7 support is deprecated and will be dropped with Pywikibot 10
9.1.0:
version.svn_rev_info()
andversion.getversion_svn()
will be removed. SVN is no longer supported. (T362484)7.7.0:
tools.threading
classes should no longer imported fromtools
7.6.0:
tools.itertools
datatypes should no longer imported fromtools
7.6.0:
tools.collections
datatypes should no longer imported fromtools
7.5.0:
textlib
.tzoneFixedOffset class will be removed in favour oftime.TZoneFixedOffset
7.4.0:
FilePage.usingPages()
was renamed tousing_pages()
7.3.0: Old color escape sequences like
\03{color}
is deprecated in favour of new color format like <<color>>7.3.0:
linktrail
method offamily.Family
is deprecated; useAPISite.linktrail()
instead7.2.0: Positional arguments decoder, layer and newline for
logging
functions were dropped; keyword arguments must be used instead.7.2.0:
tb
parameter ofexception()
function was renamed toexc_info
7.2.0: XMLDumpOldPageGenerator is deprecated in favour of a
content
parameter ofXMLDumpPageGenerator
(T306134)7.2.0: RedirectPageBot and NoRedirectPageBot bot classes are deprecated in favour of
use_redirects
attribute7.2.0:
tools.formatter.color_format
is deprecated and will be removed7.1.0: Unused
get_redirect
parameter ofPage.getOldVersion()
will be removed7.0.0: User.isBlocked() method is renamed to is_blocked for consistency
7.0.0: A boolean watch parameter in Page.save() is deprecated and will be desupported
7.0.0: baserevid parameter of editSource(), editQualifier(), removeClaims(), removeSources(), remove_qualifiers() DataSite methods will be removed
7.0.0: Values of APISite.allpages() parameter filterredir other than True, False and None are deprecated
7.0.0: The i18n identifier ‘cosmetic_changes-append’ will be removed in favour of ‘pywikibot-cosmetic-changes’
Release History#
9.5.0#
30 October 2024
Add support for tcywikisource and tcywiktionary (T378473, T378465)
i18n-updates
Update invisible chars in
tools.chars
from unicode 16.0.0Rename
DataSite.getPropertyType()
toDataSite.get_property_type()
provide XXXI with
date.romanNumToInt()
anddate.intToRomanNum()
functionsNo longer raise
exceptions.UnsupportedPageError
withindata.api.PageGenerator.result()
(T377651)Extract messages with strong tag from xtools as error message in
Page.authorship()
(T376815)
9.4.1#
15 October 2024
9.4.0#
05 October 2024
Ignore
ValueError
durig upcast ofFilePage
due to invalid file extension (T367777, T376452)Provide an entry point to connect foreign scripts with pwb wapper (T139143, T139144)
Show a warning message for a deleted or unknown
Claim
type (T374676)preload_sites
maintenance script was removed (T348925)Add
User.renamed_target()
methodCheck whether Claim exists within
Claim.fromJSON()
method (T374681)Add
logentries.LogEntry.params
as a public propertyAdd support for several wikis (T375435, T375097, T374646, T374817, T375026)
Add
title()
method topywikibot.MediaInfo
(T366424)Add tags to the wikibase functions (T372513)
diff.get_close_matches_ratio()
function was addedInitialize super classes of
EditReplacementError
(T212740)Add a hint to import missing module in
wrapper
scripti18n updates
9.3.1#
06 August 2024
Add support for bdrwiki (T371762)
i18n updates
9.3.0#
28 July 2024
Only add lang links from API response to a given page if present in family file (T371107)
Add support for
cswikivoyage
to Pywikibot (T370915)pywikibot.FilePage
has a parameter ignore_extension to ignore file extension check T352237)Provide
cosmetic_changes.main_sortkey
to localize sort key inCosmeticChangesToolkit.standardizePageFooter
Add ignore_section parameter to
site.APISite.getredirtarget()
andpage.BasePage.getRedirectTarget()
to ignoreexceptions.SectionError
(T370295)Avoid backslash in repr string of
page.WikibaseEntity
botflag parameter of
page.BasePage.save()
,page.BasePage.put()
,page.BasePage.touch()
,pywikibot.Page.set_redirect_target()
andpywikibot.ItemPage.set_redirect_target()
was renamed to bot to be in sync withAPISite.editpage
and API:edit.use
page.BasePage.templates()
inPage.templatesWithParams
to cache templatesRe-implement
Page.main_authors()
asPage.authorship()
usingxtools
(T366100);wikitextparser
packages is required for it.
9.2.1#
13 July 2024
Add support for
aewikimedia
to Pywikibot (T362529)i18n updates
9.2.0#
22 June 2024
Add support for
btmwiki
to Pywikibot (T368069)Include image repository extensions in
site.APISite.file_extensions
Add
pagegenerators.SupersetPageGenerator()
pagegenerator (T367684)No longer wait in
data.api.Request._http_request()
forImportError
andNameError
Replace
requests.utils.urlparse
withurllib.parse.urlparse
incomms.http.get_authentication()
(T367649)Show an appropiate message if
requests_oauthlib
package is required but missing (T353387)Retry
DBUnexpectedError
indata.api.Request._internal_api_error()
(T367383)Duplicated entries found in
pywikibot
were removedPass
None
instead of an empty string as expiry argument insite.APISite.protect()
(T367176)Fix keyword argument in
Page.undelete()
when callingsite.APISite.undelete()
(T367037)Check whether
BaseBot.generator
is None inrun()
methodAdd namespaces parameter to
Page.templates()
andPage.itertemplates()
and require keyword arguments; only use TEMPLATE namespace for meth:Page.isDisambig()
(T365199)Drop pheetools support for
proofreadpage
which is no longer available upstreams (T366036)Raise
exceptions.SectionError
if a section does not exists on a page (T107141)i18n updates
9.1.3#
28 May 2024
Add support for dtpwiki (T365232)
i18n updates
9.1.2#
03 May 2024
Remove line endings in
version.getversion_nightly()
(T363943)Provide
-nouser
option withpywikibot.scripts.version
i18n updates
9.1.1#
27 April 2024
9.1.0#
22 April 2024
Circumvent problems with unique and prefix parameters in
Site.alllinks()
(T359427)Detect nighly version file with
version.getversion_nightly()
(T362492)version
.github_svn_rev2hash() was removed; it was no longer functional (T362484)SVN support has been dropped;
.svnprops
property settings was removed (T362484)Skip process that requires login to logout (T326614)
File title of
specialbots.UploadRobot
must have a valid file extension (T345786)Add a
post_processor
attribute tospecialbots.UploadRobot
which can be called after each upload (T359766)Avoid using
pywikibot.handle_args()
in private scripts; usepwb
wrapper instead (T359766)Show upload count with
specialbots.UploadRobot
Use the same
iiprop
properties indata.api.PageGenerator
as inAPISite.loadimageinfo
(T360093)i18n updates
9.0.0#
08 March 2024
Improvements
Python 3.13 is supported
Update
tools
._unidata._category_cf from Unicodedata version 15.1.0Timestamp.nowutc()
andTimestamp.utcnow()
were added (T337748)Remove content parameter of
proofreadpage.IndexPage.page_gen()
method. (T358635)Backport
itertools.batched
from Python 3.13 tobackports.batched()
A copy button was added to the sphinx documentation.
Make
languages_by_size
dynamic (T78396). The property is only available forfamily.WikimediaFamily
families. Thewikimedia_sites.py
maintenance script was removed.Add
config.base_dir
to scripts search path withpwb
wrapper (T324287)pywikibot.WbTime.equal_instant()
was added (T325248)revisions
parameter ofxmlreader.XmlDump
was introduced to specify parsing method (T340804)Pass global -nolog argument into bot script from wrapper (T328900)
Add
site.APISite.ratelimit()
method andtools.collections.RateLimit
NamedTuple (T304808)L10N and i18n updates
Bugfixes
Timestamp.now()
andTimestamp.fromtimestamp()
also returns aTimestamp
object with Python 3.7Populate
pywikibot.MediaInfo
._content with expected attributes when loaded (T357608)Raise
exceptions.APIError
if the same error comes twice withindata.api.Request.submit()
loop (T357870)Only delegate
site
methods to publicfamily.Family
methods which have code as first parameter.Use
str
instead ofrepr
for several messages withfamily.Family
objects (T356782)Add
hy
to special languages intextlib.TimeStripper
(T356175)Pass login token when using
action=login
(T309898)Detect range blocks with
pywikibot.User.is_blocked()
(T301282)Use only
end
tags in ElementTree.iterparse inxmlreader
module (T354095)Suppress error in
cosmetic_changes.CosmeticChangesToolkit.cleanUpLinks()
(T337045)pywikibot.input_choice()
validates default parameter (T353097)Remove typing imports from user-config.py file (T352965)
Breaking changes and code cleanups
Cache directory was renamed from
apicache-py3
toapicache
due to timestamp changes. (T337748) Warning: Do not use Pywikibot 9+ together with Pywikibot 3.0.20181203 and below.Raise
TypeError
instead ofAttributeError
inSite.randompages()
if redirects parameter is invalid.A RuntimeError will be raised if a
family.Family
subclass has an__init__
initializer method.family.Family.__post_init__()
classmethod can be used instead.InteractiveReplace
was moved frombot
tobot_choice
moduleuserinterfaces.transliteration.transliterator
was renamed toTransliterator
pywikibot.BaseSite
andpywikibotAPISite
were dropped.pywikibot.Site()
has to be used to create asite
object.next
parameter ofuserinterfaces.transliteration.Transliterator.transliterate()
was renamed tosucc
type
parameter ofsite.APISite.protectedpages()
was renamed toprotect_type
all
parameter ofsite.APISite.namespace()
was renamed toall_ns
filter
parameter ofdate.dh()
was renamed tofilter_func
dict
parameter ofdata.api.OptionSet
was renamed todata
setuptools
package is no longer mandatory but required for tests (T340640, T347052, T354515)root
attribute ofxmlreader.XmlDump
was removedtools.Version
class was removed; use classes frompackaging.version
instead (T340640)packaging
package is mandatory;importlib_metadata
package is required for Python 3.7 (T340640)SelfCallMixin
,SelfCallDict
andSelfCallString
oftools
module were removedCalling
site.BaseSite.sitename
as a function is no longer supportedconfig.register_family_file()
function was removedrequire
PyMySQL >= 1.0.0
if necessarykeys()
anditems()
methods ofdata.api.Request
gives a view instead a list (T310953)SequenceOutputter.format_list()
was removed in favour oftools.formatter.SequenceOutputter.out
propertyoutput parameter of
bot_choice.OutputProxyOption
(i.e.OutputOption
instance) without out property is no longer supportedOutputOption.output()
method was removedContextOption.output_range()
andHighlightContextOption.output_range()
methods were removedpage.url2unicode()
function was removed in favour oftools.chars.url2string()
iterables of
tools.itertools.intersect_generators()
must not be given as a single list or tuple; either consecutive iterables must be used or ‘*’ to unpackallow_duplicates parameter of
tools.itertools.intersect_generators()
must be given as keyword argumentInfinite rotating file handler with
config.logfilesize
of -1 is no longer supportedThrottle.multiplydelay
attribute was removedPython 3.6 support was dropped (T347026)
8.6.0#
05 December 2023
Fetch URL of page scan via API:imageforpage in
proofreadpage
module (T114318, T181913, T352524)Sort page names before loading pages in
proofreadpage
moduleL10N and i18n updates
check for valid family and site option after
-help
is processed (T350756)Handle canary events in comms.eventstreams (T350756)
8.5.1#
11. November 2023
8.5.0#
05. November 2023
Add a pagegenerators filter option to check if a page is redirect (T261549)
Add support for
vikidia:nl
siteReplace MediaWiki API deprecated
inprop=preload
withpreloadcontent
(T348910)Remove check for purge right from APISite.purgepages (T349348)
Add MediaInfo editLabels, AddClaim and removeClaim functions (T348422)
Drop unused
Family.use_hard_category_redirects
(T348953)No longer drop site decorators for optimized codes (T74424)
Improve handling of uninitialized MediaInfo
Add support for
vikidia:ar
siteMake exception about missing mediainfo more friendly
L10N and i18n updates
Give visible error to user when there are no rights (T345342)
8.4.0#
07. October 2023
Add support for fonwiki (T347941)
site.BaseSite.redirects()
andsite.APISite.redirects()
methods were added (T347226)Upcast to
pywikibot.FilePage
for a proper extension only (T346889)Handle missing SDC mediainfo (T345038)
modules_only_mode parameter of
data.api.ParamInfo
, its paraminfo_keys class attribute and its preloaded_modules property was deprecated, thedata.api.ParamInfo.normalize_paraminfo()
method became a staticmethod (T306637)raise ValueError when
pywikibot.FilePage
title doesn’t have a valid file extension (T345786)site.APISite.file_extensions
property was added (T345786)dropdelay
andreleasepid
attributes ofthrottle.Throttle
where deprecated in favour ofexpiry
class attributeAdd https scheme if missing in url asked by
pywikibot.scripts.generate_family_file
L10N updates and i18n updates
use inline re.IGNORECASE flag in
textlib.case_escape()
function (T308265)Convert URL-encoded characters also for links outside main namespace with
cosmetic_changes.CosmeticChangesToolkit.cleanUpLinks()
(T342470)Implement Flow topic summaries (T109443)
8.3.3#
20. September 2023
Extract code and family from dbname in
site.APISite.fromDBName()
(T345036)L10N and i18n updates
8.3.2#
29. August 2023
Add support for tlywiki (T345172)
L10N and i18n updates
8.3.1#
17. August 2023
Add support for suwikisource and blkwiktionary (T343544, T343550)
families.wikifunctions_family
was added (T343573)i18n updates
8.3.0#
27 July 2023
Add support for btmwiktionary (T336117)
Add ‘yue’/’zh-yue’ code_aliases to family files (T341960)
All wbtypes are placed in
pywkibot._wbtypes
moduleUse
site.lang
instead ofsite.code
incomms.http.user_agent()
(T228322)Make header extraction in
textlib.extract_sections()
more robust (T341787)
8.2.0#
05 July 2023
Add support for gpewiki (T335989)
family.WikibaseFamily
andfamily.DefaultWikibaseFamily
were added tofamily
moduleRemove incorrect time normalization in
page.Claim
(T338748, T325860, T57755)Add support for other types of diffs in
Site.compare()
Improvements for
textlib.extract_sections()
function (T338748)Backport
itertools.batched()
from Python 3.12 which replacestools.itertools.itergroup()
Upcast page types in
pagegenerators.RecentChangesPageGenerator()
(T340450)Enable
FilePage.download()
to download thumbnails (T247095)Refactor
tools.compute_file_hash()
and usehashlib.file_digest
with Python 3.11Url ends with curly bracket in
textlib.compileLinkR()
(T338029)Allows spaces in environment variables for
editor.TextEditor
(T102465, T323078)Add
textlib.get_regexes()
public function (T336144)Return ‘https’ scheme with
family.Family.protocol()
(T326046)Use
build
instead ofsetuptools.setup()
to build the distributionRaise
ConnectionError
onrequests.ReadTimeout
incomms.http.error_handling_callback()
Raise
exceptions.ServerError
onrequests.ReadTimeout
incomms.http.error_handling_callback()
Do not evaluate
pywikibot.Site()
with dict.pop() as default value (T335720)L10N updates
family.Family
class was rewritten.obsolete.setter
was removed,family.Family.interwiki_replacements()
returns an invariant mapping,family.Family.interwiki_removals()
returns a frozenset.closed_wikis
,removed_wikis
andcode_aliases
arefamily.Family
class attributes. (T334834)
8.1.2#
23 April 2023
Add support for guwwikinews (T334461)
Add support for kbdwiktionary (T333271)
Fix
tools.chars.url2string()
parsing for multiple encodings (T335224)
8.1.1#
21 April 2023
8.1.0#
16 April 2023
generate_family_file
script was improved (T334775)A
quiet
parameter was added toAPISite.preloadpages()
which is True by defaultFix getting HTTPStatus enum in site_detect check_response (T334728)
Do not show a logging in message if password is entered (T178061)
Enable preleading
Bot:
prefix with twtranslate messages (T161459)Disable command.log if -nolog option is given (T334381)
Guess the last needed token key if the token is not found (T334288)
Show parameters with APIError (T333957)
Raise
exceptions.NoSiteLinkError
instead ofexceptions.NoPageError
when sitelink is missing inItemPage.getSitelink()
(T332341)exceptions.ClientError
was addedRaise
exceptions.NoPageError
when deleting a missing Page (T332924)text
parameter ofproofreadpage.PagesTagParser
has a default valueL10N updates
Ignore talk pages with
APISite.watched_pages()
(T330806)Load page info when creating a page if not updated previously (T330980)
Improve flush exception logging (T108444)
8.0.4#
13 April 2023
8.0.3#
29 March 2023
Add support for ckb-wiktionary (T332093)
8.0.2#
25 March 2023
Add support for anpwiki (T332115)
8.0.1#
04 March 2023
Add support for azwikimedia, gucwiki, gurwiki (T317121, T326238, T327844)
Avoid error when replacement includes backslash (T330021)
Copy snak IDs/hashes when using
page.WikibaseEntity.editEntity()
(T327607)Add
timezone_aware
topywikibot.WbTime.toTimestamp()
(T325868)L10N and i18n updates
8.0.0#
21 January 2023
Improvements
Allow copying timezone from timestamp in
pywikibot.WbTime
(T325864)Support federated Wikibase (T173195)
Improve warning if a Non-JSON response was received from server (T326046)
Allow normalization of
pywikibot.WbTime
objects (T123888)Add parser for
<pages />
tag toproofreadpage
addOnly
parameter oftextlib.replaceLanguageLinks()
andtextlib.replaceCategoryLinks()
were renamed toadd_only
known_codes
attribute was added tofamily.WikimediaFamily
(T325426)Unify representation for
time.Timestamp
between CPython and Pypy (T325905)Implement comparison for
pywikibot.WbTime
object (T148280, T325863)Create a cookie file for each account (T324000)
Move data.api._login.LoginManager to
login.ClientLoginManager
Let user the choice which section to be copied with
generate_user_files
(T145372)use
roundrobin_generators
to combine generators when limit option is givenIgnore OSError if API cache cannot be written
Update tools._unidata._category_cf from Unicodedata version 15.0.0
Timestamp.set_timestamp()
raises TypeError instead of ValueError if conversion failsPython 3.12 is supported
All parameters of
APISite.categorymembers()
are provided withCategory.members()
,Category.subcategories()
(member_type excluded) andCategory.articles()
(member_type excluded) (T102406)Enable site-package installation from git repository (T320851)
Enable 2FA login (T186274)
Page.editTime()
was replaced byPage.latest_revision.timestamp
Raise a generic ServerError if requests response is a ServerError (T320590)
Add a new variable ‘private_folder_permission’ to config.py (T315045)
L10N and i18n updates
Adjust subprocess args in
tools.djvu
Short site value can be given if site code is equal to family like
-site:meta
or-site:commons
Documentation improvements
Add highlighting to targeted code snippet within documentation (T323800)
Add previous, next, index, and modules links to documentation sidebar (T323803)
Introduce standard colors (legacy palette) in Furo theme (T323802)
Improve basic content structure and navigation of documentation (T323812)
Use
Furo
sphinx theme instead ofNatural
and improve documentation look and feel (T322212)MediaWiki API cross reference was added to the documentation
Bugfixes
Fix representation string for
page.Claim
stub instances (T326453)Don’t raise StopIteration in
login.LoginManager.check_user_exists()
if given user is behind the last user (T326063)Fix
pywikibot.WbTime
precision (T324798)Unquote title for red-links in class:
proofreadpage.IndexPage
Find month with first letter uppercase or lowercase with
textlib.TimeStripper
(T324310)Fix disolving script_paths for site-package (T320530)
Respect limit argument with Board.topics() (T138215, T138307)
Breaking changes
mwparserfromhell
package is mandatory (T326498)Several package dependencies were updated
All parameters of
Category.members()
,Category.subcategories()
andCategory.articles()
are keyword onlyThe
parent_id
andcontent_model
attributes ofpage.Revision
were removed in favour ofparentid
andcontentmodel
Support for MediaWiki < 1.27 was dropped
ListBoxWindows class of
userinterfaces.gui
was removedRequire Python 3.6.1+ with Pywikibot and drop support for Python 3.6.0 (T318912)
pymysql >= 0.9.3 is required (T216741)
Python 3.5 support was dropped (T301908)
See also Code cleanups below
Code cleanups
maintenance/sorting_order
script was removed (T325426)alphabetic_sv
andinterwiki_putfirst
attributes ofWiktionary
family were removed (T325426)alphabetic
,alphabetic_revised
andfyinterwiki
attributes offamily.Family
were removed (T325426)
7.7.3#
08 January 2023
7.7.2#
03 December 2022
Fix
textlib.TimeStripper
forvi
site code (T324310)
7.7.1#
10 October 2022
7.7.0#
25 September 2022
TypeError is raised if aliases parameter of
WikibasePage.editAliases
method is not a list (T318034)Raise TypeError in
AliasesDict.normalizeData
if data value is not a list (T318034)tools’ threading classes were moved to
tools.threading
submoduleNo longer raise NotimplementedError in
APISite.page_from_repository
(T318033)Ability to set
PYWIKIBOT_TEST_...
environment variables with pwb wrapper (T139847)OmegaWiki family was removed
Provide global
-config
option to specify the user config file nameRun
pywikibot.scripts.login
script in parallel tasks if-async
option is given (T57899)Ability to preload categories was added to
APISite.preloadpages
(T241689)Add
WikiBlame
support was added to get the five topmost authorsRaise KeyError instead of AttributeError if
page.FileInfo
is used as Mappingi18n and L10N updates
7.6.0#
21 August 2022
Add support for pcmwiki, guvwikt and bjnwikt (T309059, T310882, T312217)
support not loading text
site.APISite.preloadpages()
(T67163)textlib.TimeStripper.timestripper()
removes HTML elements before searching for timestamp in text (T302496)backport
backports.pairwise()
from Python 3.10L10N updates
Fix partial caching in
Category.subcategories()
(T88217)Method
Page.has_content()
was added (T313736)Discard cache and reload it if cache was loaded without content and content is required in
Page.templates()
(T313736)Add support for vikidia:oc
Exit loop in PageFromFileReader if match.end() <= 0 (T313684)
Allow Exception as parameter of pywikibot.exceptions.Error
Make
GoogleSearchPageGenerator
andPetScanPageGenerator
a restartable Generator (T313681, T313683)Provide a
collections.GeneratorWrapper
class to start/restart a generator (T301318, T312654, T312883)tools’ itertools functions were moved to
tools.itertools
submoduletools’ collections classes were moved to
tools.collections
submoduleSet successful login status for the OAuth case (T313571)
7.5.0#
22 July 2022
Add support for blkwiki (T310875)
L10N Updates
Fix duplicate source detection in
pywikibot.WikidataBot.user_add_claim_unless_exists()
pywikibot.textlib
.tzoneFixedOffset class was renamed topywikibot.time.TZoneFixedOffset
Wrapper method
parsevalue()
around wbparsevalue was added (T112140, T312755)L10N updates
Fix cp encodings in
get_charset_from_content_type()
(T312230)New
pywikibot.time
module with new functions in addition toTimestamp
Page.revisions()
supports more formats/types for starttime and endtime parameters, in addition to those allowed byTimestamp.fromISOformat()
.New
Timestamp.set_timestamp()
methodFully ISO8601 and POSIX format support with
pywikibot.Timestamp
; formats are compliant with MediaWiki supported formatsHandle asynchronous page_put_queue after KeyboardInterrupt in Python 3.9+ (T311076)
No longer expect a specific namespace alias in cosmetic_changes
translateAndCapitalizeNamespaces
7.4.0#
26 June 2022
Provide Built Distribution with Pywikibot (PEP 427)
Update
WRITE_ACTIONS
in used byapi.Request
Move
get_closest_memento_url
from weblinkchecker script to memento module.Add
memento module
to fix memento_client package (T185561)L10N and i18n updates
Fix Flow board topic continuation when iterating in reverse (T138323)
Add Avestan transliteration
Use Response.json() instead of json.loads(Response.text)
Show an APIError if PetScanPageGenerator.query() fails (T309538)
login.py
is now a utiliy script even for site-package installation (T309290)preload_sites.py
is now a utiliy script even for site-package installation (T308912)generator_completed
became a public attributeReturn gracefully from pwb.find_alternates if folder in user_script_paths does not exist (T308910)
7.3.0#
21 May 2022
Add support for kcgwiki (T305282)
Raise InvalidTitleError instead of unspecific ValueError in ProofreadPage (T308016)
Preload pages if GeneratorFactory.articlenotfilter_list is not empty; also set attribute
is_preloading
.ClaimCollection.toJSON() should not ignore new claim (T308245)
use linktrail via siteinfo and remove
update_linktrails
maintenance scriptPrint counter statistic for all counters (T307834)
Use proofreadpagesinindex query module
Prioritize -namespaces options in
pagegenerators.handle_args
(T222519)Remove
ThreadList.stop_all()
method (T307830)L10N updates
Improve get_charset_from_content_type function (T307760)
A tiny cache wrapper was added to hold results of parameterless methods and properties
Increase workers in preload_sites.py
Close logging handlers before deleting them (T91375, T286127)
Clear _sites cache if called with pwb wrapper (T225594)
Enable short creation of a site if family name is equal to site code
Use
exc_info=True
with pywikibot.exception() by default (T306762)Make IndexPage more robust when getting links in Page ns (T307280)
Do not print log header twice in log files (T264235)
Do not delegate logging output to the root logger (T281643)
Add
get_charset_from_content_type
to extract the charset from the content-type response header
7.2.0#
26 April 2022
Make logging system consistent, add pywikibot.info() alias for pywikibot.output() (T85620)
L10N updates
Circumvent circular import in tools module (T306760)
Don’t fix html inside syntaxhighlight parts in fixes.py (T306723)
Make layer parameter optional in
pywikibot.debug()
(T85620)Retry for internal_api_error_DBQueryTimeoutError errors due to T297708
Handle ParserError within xmlreader.XmlDump.parse() instead of raising an exception (T306134)
XMLDumpOldPageGenerator is deprecated in favour of a
content
parameter (T306134)use_disambig
BaseBot attribute was added to hande disambig skippingDeprecate RedirectPageBot and NoRedirectPageBot in favour of
use_redirects
attributetools.formatter.color_format is deprecated and will be removed
- A new and easier color format was implemented; colors can be used like:
'this is a <<green>>colored<<default>> text'
Unused and unsupported
xmlreader.XmlParserThread
was removedUse upercased IP user titles (T306291)
Use pathlib to extract filename and file_package in pwb.py
Fix isbn messages in fixes.py (T306166)
Fix Page.revisions() with starttime (T109181)
Use stream_output for messages inside input_list_choice method (T305940)
Expand simulate query result (T305918)
Do not delete text when updating a Revision (T304786)
Re-enable scripts package version check with pwb wrapper (T305799)
Provide textlib.ignore_case() as a public method
Don’t try to upcast timestamp from global userinfo if global account does not exists (T305351)
Archived scripts were removed; create a Phabricator task to restore some (T223826)
Add Lexeme support for Lexicographical data (T189321, T305297)
enable all parameters of
APISite.imageusage()
withFilePage.using_pages()
Don’t raise
NoPageError
withfile_is_shared
(T305182)Fix URL of GoogleOCR
Handle ratelimit with purgepages() (T152597)
Add movesubpages parameter to Page.move() and APISite.movepage() (T57084)
Do not iterate over sys.modules (T304785)
7.1.0#
26 March 2022
Add FilePage.file_is_used property to determine whether a file is used on a site
Add support for guwwiki and shnwikivoyage (T303762, T302799)
TextExtracts support was aded (T72682)
Unused
get_redirect
parameter of Page.getOldVersion() has been droppedProvide BasePage.get_parsed_page() as a public method
Provide BuiltinNamespace.canonical_namespaces() with BuiltinNamespace IntEnum
BuiltinNamespace got a canonical() method
Enable nested templates with MultiTemplateMatchBuilder (T110529)
Introduce APISite.simple_request as a public method
Provide an Uploader class to upload files
Enable use of deletetalk parameter of the delete API
Fix contextlib redirection for terminal interfaces (T283808)
No longer use win32_unicode for Python 3.6+ (T281042, T283808, T303373)
L10N updates
-cosmetic_changes (-cc) option allows to assign the value directly instead of toggle it
distutils.util.strtobool() was implemented as tools.strtobool() due to PEP 632
The “in” operator always return whether the siteinfo contains the key even it is not cached (T302859)
Siteinfo.clear() and Siteinfo.is_cached() methods were added
7.0.0#
26 February 2022
Improvements
i18n updates for date.py
Add number transliteration of ‘lo’, ‘ml’, ‘pa’, ‘te’ to NON_LATIN_DIGITS
Detect range blocks with Page.is_blocked() method (T301282)
to_latin_digits() function was added to textlib as counterpart of to_local_digits() function
api.Request.submit now handles search-title-disabled and search-text-disabled API Errors
A show_diff parameter was added to Page.put() and Page.change_category()
Allow categories when saving IndexPage (T299806)
Add a new function case_escape to textlib
Support inheritance of the __STATICREDIRECT__
Avoid non-deteministic behavior in removeDisableParts
Update isbn dependency and require python-stdnum >= 1.17
Synchronize Page.linkedPages() parameters with Site.pagelinks() parameters
Scripts hash bang was changed from python to python3
i18n.bundles(), i18n.known_languages and i18n._get_bundle() functions were added
Raise ConnectionError immediately if urllib3.NewConnectionError occurs (T297994, T298859)
Make pywikibot messages available with site package (T57109, T275981)
Add support for API:Redirects
Enable shell script with Pywikibot site package
Enable generate_user_files.py and generate_family_file with site-package (T107629)
Add support for Python 3.11
Pywikibot supports PyPy 3 (T101592)
A new method User.is_locked() was added to determine whether the user is currently locked globally (T249392)
A new method APISite.is_locked() was added to determine whether a given user or user id is locked globally (T249392)
APISite.get_globaluserinfo() method was added to retrieve globaluserinfo for any user or user id (T163629)
APISite.globaluserinfo attribute may be deleted to force reload
APISite.is_blocked() method has a force parameter to reload that info
Allow family files in base_dir by default
Make pwb wrapper script a pywikibot entry point for scripts (T139143, T270480)
Enable -version and –version with pwb wrapper or code entry point (T101828)
Add
title_delimiter_and_aliases
attribute to family files to support WikiHow family (T294761)BaseBot has a public collections.Counter for reading, writing and skipping a page
Upload: Retry upload if ‘copyuploadbaddomain’ API error occurs (T294825)
Update invisible characters from unicodedata 14.0.0
Add support for Wikimedia OCR engine with proofreadpage
Rewrite
tools.itertools.intersect_generators()
which makes it running up to 10’000 times faster. (T85623, T293276)The cached output functionality from compat release was re-implemented (T151727, T73646, T74942, T132135, T144698, T196039, T280466)
L10N updates
Adjust groupsize within pagegenerators.PreloadingGenerator (T291770)
New “maxlimit” property was added to APISite (T291770)
Bugfixes
Don’t raise an exception if BlockEntry initializer found a hidden title (T78152)
Fix KeyError in create_warnings_list (T301610)
Enable similar script call of pwb.py on toolforge (T298846)
Remove question mark character from forbidden file name characters (T93482)
Enable -interwiki option with pagegenerators (T57099)
Don’t assert login result (T298761)
Allow title placeholder $1 in the middle of an url (T111513, T298078)
Don’t create a Site object if pywikibot is not fully imported (T298384)
Use page.site.data_repository when creating a _WbDataPage (T296985)
Fix mysql AttributeError for sock.close() on toolforge (T216741)
Only search user_script_paths inside config.base_dir (T296204)
pywikibot.argv has been fixed for pwb.py wrapper if called with global args (T254435)
Only ignore FileExistsError when creating the api cache (T295924)
Only handle query limit if query module is limited (T294836)
Upload: Only set filekey/offset for files with names (T294916)
Make site parameter of textlib.replace_links() mandatory (T294649)
Raise a generic ServerError if the http status code is unofficial (T293208)
Breaking changes
Support of Python 3.5.0 - 3.5.2 has been dropped (T286867)
generate_user_files.py, generate_user_files.py, shell.py and version.py were moved to pywikibot/scripts and must be used with pwb wrapper script
See also Code cleanups below
Code cleanups
Deprecated http.get_fake_user_agent() function was removed
FilePage.fileIsShared() was removed in favour of FilePage.file_is_shared()
Page.canBeEdited() was removed in favour of Page.has_permission()
BaseBot.stop() method were removed in favour of BaseBot.generator.close()
showHelp() function was remove in favour of show_help
CombinedPageGenerator pagegenerator was removed in favour of itertools.chain
Remove deprecated echo.Notification.id
Remove APISite.newfiles() method (T168339)
Remove APISite.page_exists() method
Raise a TypeError if BaseBot.init_page return None
Remove private upload parameters in UploadRobot.upload_file(), FilePage.upload() and APISite.upload() methods
Raise an Error exception if ‘titles’ is still used as where parameter in Site.search()
Deprecated version.get_module_version() function was removed
Deprecated setOptions/getOptions OptionHandler methods were removed
Deprecated from_page() method of CosmeticChangesToolkit was removed
Deprecated diff attribute of CosmeticChangesToolkit was removed in favour of show_diff
Deprecated namespace and pageTitle parameter of CosmeticChangesToolkit were removed
Remove deprecated BaseSite namespace shortcuts
Remove deprecated Family.get_cr_templates method in favour of Site.category_redirects()
Remove deprecated Page.put_async() method (T193494)
Ignore baserevid parameter for several DataSite methods
Remove deprecated preloaditempages method
Remove disable_ssl_certificate_validation kwargs in http functions in favour of verify parameter (T265206)
Deprecated PYWIKIBOT2 environment variables were removed
version.ParseError was removed in favour of exceptions.VersionParseError
specialbots.EditReplacement and specialbots.EditReplacementError were removed in favour of exceptions.EditReplacementError
site.PageInUse exception was removed in favour of exceptions.PageInUseError
page.UnicodeToAsciiHtml and page.unicode2html were removed in favour of tools.chars.string_to_ascii_html and tools.chars.string2html
interwiki_graph.GraphImpossible and login.OAuthImpossible exception were removed in favour of ImportError
i18n.TranslationError was removed in favour of exceptions.TranslationError
WikiaFamily was removed in favour of FandomFamily
data.api exceptions were removed in favour of exceptions module
cosmetic_changes CANCEL_ALL/PAGE/METHOD/MATCH constants were removed in favour of CANCEL enum
pywikibot.__release__ was removed in favour of pywikibot.__version__
TextfilePageGenerator was replaced by TextIOPageGenerator
PreloadingItemGenerator was replaced by PreloadingEntityGenerator
DuplicateFilterPageGenerator was replaced by
tools.itertools.filter_unique()
ItemPage.concept_url method was replaced by ItemPage.concept_uri
Outdated parameter names has been dropped
Deprecated pywikibot.Error exception were removed in favour of pywikibot.exceptions.Error classes (T280227)
Deprecated exception identifiers were removed (T280227)
Deprecated date.FormatDate class was removed in favour of date.format_date function
language_by_size property of wowwiki Family was removed in favour of codes attribute
availableOptions was removed in favour of available_options
config2 was removed in favour of config
tools.RotatingFileHandler was removed in favour of logging.handlers.RotatingFileHandler
tools.DotReadableDict, tools.LazyRegex and tools.DeprecatedRegex classes were removed
tools.frozenmap was removed in favour of types.MappingProxyType
tools.empty_iterator() was removed in favour of iter(())
tools.concat_options() function was removed in favour of bot_choice.Option
tools.is_IP was be removed in favour of tools.is_ip_address()
textlib.unescape() function was be removed in favour of html.unescape()
APISite.deletepage() and APISite.deleteoldimage() methods were removed in favour of APISite.delete()
APISite.undeletepage() and APISite.undelete_file_versions() were be removed in favour of APISite.undelete() method
6.6.5#
07 February 2022
L10N updates
6.6.4#
27 January 2022
L10N updates
6.6.3#
01 December 2021
L10N updates
6.6.2#
28 October 2021
6.6.1#
21 September 2021
6.6.0#
15 September 2021
6.5.0#
05 August 2021
Add support for jvwikisource (T286247)
Handle missingtitle error code when deleting
Check for outdated setuptools in pwb.py wrapper (T286980)
Remove traceback for original exception for known API error codes
Unused strm parameter of init_handlers was removed
Ignore throttle.pid if a Site object cannot be created (T286848)
Explicitly return an empty string with OutputProxyOption.out property (T286403)
Explicitly return None from ContextOption.result() (T286403)
Add support for Lingua Libre family (T286303)
Catch invalid titles in Category.isCategoryRedirect()
L10N updates
6.4.0#
01 July 2021
Add support for dagwiki, shiwiki and banwikisource
Fix and clean up DataSite.get_property_by_name
Update handling of abusefilter-{disallow,warning} codes (T285317)
Fix terminal_interface_base.input_list_choice (T285597)
Fix ItemPage.fromPage call
Use *iterables instead of genlist in intersect_generators
Use a sentinel variable to determine the end of an iterable in roundrobin_generators
Require setuptools 20.8.1 (T284297)
Add setter and deleter for summary_parameters of AutomaticTWSummaryBot
L10N updates
Add update_options attribute to BaseBot class to update available_options
Clear put_queue when canceling page save (T284396)
Add -url option to pagegenerators (T239436)
Add add_text function to textlib (T284388)
Require setuptools >= 49.4.0 (T284297)
Require wikitextparser>=0.47.5
Allow images to upload locally even they exist in the shared repository (T267535)
Show a warning if pywikibot.__version__ is behind scripts.__version__ (T282766)
Handle <ce>/<chem> tags as <math> aliases within textlib.replaceExcept() (T283990)
Expand simulate query response for wikibase support (T76694)
Double the wait time if ratelimit exceeded (T270912)
Deprecated extract_templates_and_params_mwpfh and extract_templates_and_params_regex functions were removed
6.3.0#
31 May 2021
Check bot/nobots templates for cosmetic_changes hook (T283989)
Remove outdated opt._option which is already dropped (T284005)
Use IntEnum with cosmetic_changes CANCEL
Remove lru_cache from botMayEdit method and fix it’s logic (T283957)
DataSite.createNewItemFromPage() method was removed in favour of ImagePage.fromPage() (T98663)
mwparserfromhell or wikitextparser MediaWiki markup parser is mandatory (T106763)
6.2.0#
28 May 2021
Improvements and Bugfixes
Use different logfiles for multiple processes of the same script (T56685)
throttle.pip will be reused as soon as possbile
terminal_interface_base.TerminalHandler is subclassed from logging.StreamHandler
Fix iterating of SizedKeyCollection (T282865)
An abstract base user interface module was added
APISite method pagelanglinks() may skip links with empty titles (T223157)
Fix Page.getDeletedRevision() method which always returned an empty list
A new InvalidPageError will be raised if a Page has no version history (T280043)
L10N updates
Fix __getattr__ for WikibaseEntity (T281389)
Handle abusefilter-{disallow,warning} codes (T85656)
Code cleanups
MultipleSitesBot.site attribute was removed (T283209)
Deprecated BaseSite.category_namespaces() method was removed
i18n.twntranslate() function was removed in favour of twtranslate()
siteinfo must be used as a dictionary ad cannot be called anymore
APISite.has_transcluded_data() method was removed
Deprecated LogEntry.title() method was removed
Deprecated APISite.watchpage() method was removed
OptionHandler.options dict has been removed in favour of OptionHandler.opt
The toStdout parameter of ui.output has been dropped
terminal_interface_base.TerminalFormatter was removed
Move page functions UnicodeToAsciiHtml, unicode2html, url2unicode to tools.chars with renaming them
Rename _MultiTemplateMatchBuilder to MultiTemplateMatchBuilder
User.name() method was removed in favour of User.username property
BasePage.getLatestEditors() method was removed in favour of contributors() or revisions()
pagenenerators.handleArg() method was renamed to handle_arg() (T271437)
CategoryGenerator, FileGenerator, ImageGenerator and ReferringPageGenerator pagegenerator functions were removed
Family.ignore_certificate_error() method was removed in favour of verify_SSL_certificate (T265205)
tools.is_IP was renamed to is_ip_address due to PEP 8
config2.py was renamed to config.py
Exceptions were renamed having a suffix “Error” due to PEP 8 (T280227)
6.1.0#
17 April 2021
Improvements and Bugfixes
interwiki_graph module was restored (T223826)
proofreadpage: search for “new” class after purge (T280357)
Enable different types with BaseBot.treat()
Context manager depends on pymysql version, not Python release (T279753)
Bugfix for Site.interwiki_prefix() (T188179)
Exclude expressions from parsed template in mwparserfromhell (T71384)
Provide an object representation for DequeGenerator
Allow deleting any subclass of BasePage by title (T278659)
Add support for API:Revisiondelete with Site.deleterevs() method (T276726)
L10N updates
Family files can be collected from a zip folder (T278076)
Dependencies
mwparserfromhell or wikitextparser are strictly recommended (T106763)
Require Pillow>=8.1.1 due to vulnerability found (T278743)
TkDialog of GUI userinterface requires Python 3.6+ (T278743)
Enable textlib.extract_templates_and_params with wikitextparser package
Add support for PyMySQL 1.0.0+
Code cleanups
APISite.resolvemagicwords(), BaseSite.ns_index() and remove BaseSite.getNamespaceIndex() were removed
Deprecated MoveEntry.new_ns() and new_title() methods were removed
Unused NoSuchSite and PageNotSaved exception were removed
Unused BadTitle exception was removed (T267768)
getSite() function was removed in favour of Site() constructor
Page.fileUrl() was removed in favour of Page.get_file_url()
Deprecated getuserinfo and getglobaluserinfo Site methods were removed
6.0.1#
20 March 2021
6.0.0#
16 March 2021
Breaking changes
interwiki_graph module was removed (T223826)
Require setuptools >= 20.2 due to PEP 440
Support of MediaWiki < 1.23 has been dropped (T268979)
APISite.loadimageinfo will no longer return any content
Return requests.Response with http.request() instead of plain text (T265206)
config.db_hostname has been renamed to db_hostname_format
Code cleanups
tools.PY2 was removed (T213287)
Site.language() method was removed in favour of Site.lang property
Deprecated Page.getMovedTarget() method was removed in favour of moved_target()
Remove deprecated Wikibase.lastrevid attribute
config settings of archived scripts were removed (T223826)
Drop startsort/endsort parameter for site.categorymembers method (T74101)
Deprecated data attribute of http.fetch() result has been dropped (T265206)
toStdout parameter of pywikibot.output() has been dropped
Deprecated Site.getToken() and Site.case was removed
Deprecated Family.known_families dict was removed (T89451)
Deprecated DataSite.get_* methods was removed
Deprecated LogEntryFactory.logtypes classproperty was removed
Unused comms.threadedhttp module was removed; threadedhttp.HttpRequest was already replaced with requests.Response (T265206)
Other changes
Raise a SiteDefinitionError if api request response is Non-JSON and site is AutoFamily (T272911)
Support deleting and undeleting specific file versions (T276725)
Only add bot option generator if the bot class have it already
Raise a RuntimeError if pagegenerators -namespace option is provided too late (T276916)
Check for LookupError exception in http._decide_encoding (T276715)
Re-enable setting private family files (T270949)
Move the hardcoded namespace identifiers to an IntEnum
Buffer ‘pageprops’ in api.QueryGenerator
Ensure that BaseBot.generator is a Generator
Add additional info into log if ‘messagecode’ is missing during login (T261061, T269503)
Use hardcoded messages if i18n system is not available (T275981)
Move wikibase data structures to page/_collections.py
L10N updates
Add support for altwiki (T271984)
Add support for mniwiki and mniwiktionary (T273467, T273462)
Don’t use mime parameter as boolean in api.Request (T274723)
textlib.removeDisabledPart is able to remove templates (T274138)
Create a SiteLink with __getitem__ method and implement lazy load (T273386, T245809, T238471, T226157)
Fix date.formats[‘MonthName’] behaviour (T273573)
Implement pagegenerators.handle_args() to process all options at once
Add enabled_options, disabled_options to GeneratorFactory (T271320)
Move interwiki() interwiki_prefix() and local_interwiki() methods from BaseSite to APISite
Add requests.Response.headers to log when an API error occurs (T272325)
5.6.0#
24 January 2021
Use string instead of Path-like object with “open” function in UploadRobot for Python 3.5 compatibility (T272345)
Add support for trwikivoyage (T271263)
UI.input_list_choice() has been improved (T272237)
Global handleArgs() function was removed in favour of handle_args
Deprecated originPage and foundIn property has been removed in interwiki_graph.py
ParamInfo modules, prefixes, query_modules_with_limits properties and module_attribute_map() method was removed
Allow querying alldeletedrevisions with APISite.alldeletedrevisions() and User.deleted_contributions()
data attribute of http.fetch() response is deprecated (T265206)
Positional arguments of page.Revision aren’t supported any longer (T259428)
pagenenerators.handleArg() method was renamed to handle_arg() (T271437)
Page methods deprecated for 6 years were removed
Create a Site with AutoFamily if a family isn’t predefined (T249087)
L10N updates
5.5.0#
12 January 2021
Add support for niawiki, bclwikt, diqwikt, niawikt (T270416, T270282, T270278, T270412)
Delete page using pageid instead of title (T57072)
version.getversion_svn_setuptools function was removed (T270393)
Add support for “musical notation” data type to wikibase
-grepnot filter option was added to pagegenerators module (T219281)
L10N updates
5.4.0#
2 January 2021
Re-enable reading user-config.py from site package (T270941)
LoginManager.getCookie() was renamed to login_to_site()
Deprecation warning for MediaWiki < 1.23 (T268979)
Add backports to support some Python 3.9 changes
Desupported shared_image_repository() and nocapitalize() methods were removed (T89451)
pywikibot.cookie_jar was removed in favour of pywikibot.comms.http.cookie_jar
Align http.fetch() params with requests and rename ‘disable_ssl_certificate_validation’ to ‘verify’ (T265206)
Deprecated compat BasePage.getRestrictions() method was removed
Outdated Site.recentchanges() parameters has been dropped
site.LoginStatus has been removed in favour of login.LoginStatus
L10N Updates
5.3.0#
19 December 2020
Allow using pywikibot as site-package without user-config.py (T270474)
Python 3.10 is supported
Fix AutoFamily scriptpath() call (T270370)
Add support for skrwiki, skrwiktionary, eowikivoyage, wawikisource, madwiki (T268414, T268460, T269429, T269434, T269442)
wikistats methods fetch, raw_cached, csv, xml has been removed
PageRelatedError.getPage() has been removed in favour of PageRelatedError.page
DataSite.get_item() method has been removed
global put_throttle option may be given as float (T269741)
Property.getType() method has been removed
Family.server_time() method was removed; it is still available from Site object (T89451)
All HttpRequest parameters except of charset has been dropped (T265206)
A lot of methods and properties of HttpRequest are deprecated in favour of requests.Resonse attributes (T265206)
Method and properties of HttpRequest are delegated to requests.Response object (T265206)
comms.threadedhttp.HttpRequest.raw was replaced by HttpRequest.content property (T265206)
Desupported version.getfileversion() has been removed
site parameter of comms.http.requests() function is mandatory and cannot be omitted
date.MakeParameter() function has been removed
api.Request.http_params() method has been removed
L10N updates
5.2.0#
10 December 2020
Remove deprecated args for Page.protect() (T227610)
Move BaseSite its own site/_basesite.py file
Improve toJSON() methods in page.__init__.py
_is_wikibase_error_retryable rewritten (T48535, 268645)
Replace FrozenDict with frozenmap
WikiStats table may be sorted by any key
Retrieve month names from mediawiki_messages when required
Move Namespace and NamespacesDict to site/_namespace.py file
Fix TypeError in api.LoginManager (T268445)
Add repr() method to BaseDataDict and ClaimCollection
Define availableOptions as deprecated property
Do not strip all whitespaces from Link.title (T197642)
Introduce a common BaseDataDict as parent for LanguageDict and AliasesDict
Replaced PageNotSaved by PageSaveRelatedError (T267821)
Add -site option as -family -lang shortcut
Enable APISite.exturlusage() with default parameters (T266989)
Update tools._unidata._category_cf from Unicode version 13.0.0
Move TokenWallet to site/_tokenwallet.py file
Fix import of httplib after release of requests 2.25 (T267762)
user keyword parameter can be passed to Site.rollbackpage() (T106646)
Check for {{bots}}/{{nobots}} templates in Page.text setter (T262136, T267770)
Remove deprecated UserBlocked exception and Page.contributingUsers()
Add support for some ‘wbset’ actions in DataSite
Fix UploadRobot site attribute (T267573)
Ignore UnicodeDecodeError on input (T258143)
Replace ‘source’ exception regex with ‘syntaxhighlight’ (T257899)
Fix get_known_families() for wikipedia_family (T267196)
Move _InterwikiMap class to site/_interwikimap.py
instantiate a CosmeticChangesToolkit by passing a page
Create a Site from sitename
pywikibot.Site() parameters “interface” and “url” must be keyworded
Lookup the code parameter in xdict first (T255917)
Remove interwiki_forwarded_from list from family files (T104125)
Rewrite Revision class; each data can be accessed either by key or as an attribute (T102735, T259428)
L10N-Updates
5.1.0#
1 November 2020
Avoid conflicts between site and possible site keyword in api.Request.create_simple() (T262926)
Remove wrong param of rvision() call in Page.latest_revision_id
Do not raise Exception in Page.get_best_claim() but follow redirect (T265839)
xml-support of wikistats will be dropped
Remove deprecated mime_params in api.Request()
cleanup interwiki_graph.py and replace deprecated originPage by origin in Subjects
Upload a file that ends with the ‘r’ byte (T132676)
Fix incorrect server time (T266084)
L10N-Updates
Support Namespace packages in version.py (T265946)
Server414Error was added to pywikibot (T266000)
Deprecated editor.command() method was removed
comms.PywikibotCookieJar and comms.mode_check_decorator were deleted
Remove deprecated tools classes Stringtypes and UnicodeType
Remove deprecated tools function open_compressed and signature and UnicodeType class
HttpRequest properties were renamed to request.Response identifiers (T265206)
5.0.0#
19 October 2020
Add support for smn-wiki (T264962)
callback parameter of comms.http.fetch() is desupported
Fix api.APIError() calls for Flow and Thanks extension
edit, move, create, upload, unprotect and prompt parameters of Page.protect() are deprecated (T227610)
Accept only valid names in generate_family_file.py (T265328, T265353)
New plural.plural_rule() function returns a rule for a given language
Replace deprecated urllib.request.URLopener with http.fetch (T255575)
OptionHandler/BaseBot options are accessable as OptionHandler.opt attributes or keyword item (see also T264721)
pywikibot.setAction() function was removed
A namedtuple is the result of textlib.extract_sections()
Prevent circular imports in config2.py and http.py (T264500)
version.get_module_version() is deprecated and gives no meaningfull result
Fix version.get_module_filename() and update log lines (T264235)
Re-enable printing log header (T264235)
Fix result of
tools.itertools.intersect_generators()
(T263947)Only show _GLOBAL_HELP options if explicitly wanted
Deprecated Family.version() methods were removed
Unused parameters of page methods like forceReload, insite, throttle, step was removed
Raise RuntimeError instead of AttributeError for old wikis (T263951)
Deprecated script options were removed
lyricwiki_family was removed (T245439)
RecentChangesPageGenerator parameters has been synced with APISite.recentchanges
APISite.recentchanges accepts keyword parameters only
LoginStatus enum class was moved from site to login.py
WbRepresentation derives from abstract base class abc.ABC
Update characters in the Cf category to Unicode version 12.1.0
Update __all__ variable in pywikibot (T122879)
Use api.APIGenerator through site._generator (T129013)
Support of MediaWiki releases below 1.19 has been dropped (T245350)
Page.get_best_claim () retrieves preferred Claim of a property referring to the given page (T175207)
Check whether _putthead is current_thread() to join() (T263331)
Add BasePage.has_deleted_revisions() method
Allow querying deleted revs without the deletedhistory right
Use ignore_discard for login cookie container (T261066)
Siteinfo.get() loads data via API instead from cache if expiry parameter is True (T260490)
Move latest revision id handling to WikibaseEntity (T233406)
Load wikibase entities when necessary (T245809)
Fix path for stable release in version.getversion() (T262558)
“since” parameter in EventStreams given as Timestamp or MediaWiki timestamp string has been fixed
Methods deprecated for 6 years or longer were removed
Page.getVersionHistory and Page.fullVersionHistory() methods were removed (T136513, T151110)
Allow multiple types of contributors parameter given for Page.revision_count()
Deprecated tools.UnicodeMixin and tools.IteratorNextMixin has been removed
Localisation updates
4.3.0#
2 September 2020
4.2.0#
28 August 2020
Add support for ja.wikivoyage (T261450)
Only run cosmetic changes on wikitext pages (T260489)
Leave a script gracefully for wrong -lang and -family option (T259756)
Change meaning of BasePage.text (T260472)
site/family methods code2encodings() and code2encoding() has been removed in favour of encoding()/encodings() methods
Site.getExpandedString() method was removed in favour of expand_text
Site.Family() function was removed in favour of Family.load() method
Add wikispore family (T260049)
4.1.1#
18 August 2020
Add support for lldwiki to Pywikibot
Fix getversion_git subprocess command
4.1.0#
16 August 2020
Enable Pywikibot for Python 3.9
APISite.loadpageinfo does not discard changes to page content when information was not loaded (T260472)
tools.UnicodeType and tools.signature are deprecated
BaseBot.stop() method is deprecated in favour of BaseBot.generator.close()
Escape bot password correctly (T259488)
Bugfixes and improvements
Localisation updates
4.0.0#
4 August 2020
Read correct object in SiteLinkCollection.normalizeData (T259426)
tools.count and tools classes Counter, OrderedDict and ContextManagerWrapper were removed
Deprecate UnicodeMixin and IteratorNextMixin
Restrict site module interface
EventStreams “since” parameter settings has been fixed
Unsupported debug and uploadByUrl parameters of UploadRobot were removed
Unported compat decode parameter of Page.title() has been removed
Wikihow family file was added (T249814)
Improve performance of CosmeticChangesToolkit.translateMagicWords
Prohibit positional arguments with Page.title()
Functions dealing with stars list were removed
Some pagegenerators functions were deprecated which should be replaced by site generators
LogEntry became a UserDict; all content can be accessed by its key
URLs for new toolforge.org domain were updated
pywikibot.__release__ was deprecated
Use one central point for framework version (T106121, T171886, T197936, T253719)
rvtoken parameter of Site.loadrevisions() and Page.revisions() has been dropped (T74763)
getFilesFromAnHash and getImagesFromAnHash Site methods have been removed
Site and Page methods deprecated for 10 years or longer have been removed
Support for Python 2 and 3.4 has been dropped (T213287, T239542)
Bugfixes and improvements
Localisation updates
3.0.20200703#
3 July 2020
Page.botMayEdit() method was improved (T253709)
PageNotFound, SpamfilterError, UserActionRefuse exceptions were removed (T253681)
tools.ip submodule has been removed (T243171)
Wait in BaseBot.exit() until asynchronous saving pages are completed
Solve IndexError when showing an empty diff with a non-zero context (T252724)
linktrails were added or updated for a lot of sites
Resolve namespaces with underlines (T252940)
Bugfixes and improvements
Localisation updates
3.0.20200609#
9 June 2020
Fix page_can_be_edited for MediaWiki < 1.23 (T254623)
Show global options with pwb.py -help
Usage of SkipPageError with BaseBot has been removed
Throttle requests after ratelimits exceeded (T253180)
Make Pywikibot daemon logs unexecutable (T253472)
Check for missing generator after BaseBot.setup() call
Do not change usernames when creating a Site (T253127)
pagegenerators: handle protocols in -weblink (T251308, T251310)
Bugfixes and improvements
Localisation updates
3.0.20200508#
8 May 2020
Unify and extend formats for setting sitelinks (T225863, T251512)
Do not return a random i18n.translation() result (T220099)
tools.ip_regexp has been removed (T174482)
Page.getVersionHistory and Page.fullVersionHistory() methods has been desupported (T136513, T151110)
Update wikimediachapter_family (T250802)
Raise SpamblacklistError with spamblacklist APIError (T249436)
SpamfilterError was renamed to SpamblacklistError (T249436)
Do not removeUselessSpaces inside source/syntaxhighlight tags (T250469)
Restrict Pillow to 6.2.2+ (T249911)
Fix PetScan generator language and project (T249704)
Bugfixes and improvements
Localisation updates
3.0.20200405#
5 April 2020
Fix regression of combining sys.path in pwb.py wrapper (T249427)
Site and Page methods deprecated for 10 years or longer are desupported and may be removed (T106121)
Usage of SkipPageError with BaseBot is desupported and may be removed
Ignore InvalidTitle in textlib.replace_links() (T122091)
Raise ServerError also if connection to PetScan timeouts
pagegenerators.py no longer supports ‘oursql’ or ‘MySQLdb’. It now solely supports PyMySQL (T243154, T89976)
Disfunctional Family.versionnumber() method was removed
Refactor login functionality (T137805, T224712, T248767, T248768, T248945)
Bugfixes and improvements
Localisation updates
3.0.20200326#
26 March 2020
site.py and page.py files were moved to their own folders and will be split in the future
Refactor data attributes of Wikibase entities (T233406)
Functions dealing with stars list are desupported and may be removed
Use path’s stem of script filename within pwb.py wrapper (T248372)
Disfunctional cgi_interface.py was removed (T248292, T248250, T193978)
Fix logout on MW < 1.24 (T214009)
Fixed TypeError in getFileVersionHistoryTable method (T248266)
Outdated secure connection overrides were removed (T247668)
Check for all modules which are needed by a script within pwb.py wrapper
Check for all modules which are mandatory within pwb.py wrapper script
Enable -help option with similar search of pwb.py (T241217)
compat module has been removed (T183085)
Category.copyTo and Category.copyAndKeep methods have been removed
Site.page_restrictions() does no longer raise NoPage (T214286)
Use site.userinfo getter instead of site._userinfo within api (T243794)
Fix endprefix parameter in Category.articles() (T247201)
Fix search for changed claims when saving entity (T246359)
backports.py has been removed (T244664)
Site.has_api method has been removed (T106121)
Bugfixes and improvements
Localisation updates
3.0.20200306#
6 March 2020
Let Site(‘test’, ‘test) be equal to Site(‘test’, ‘wikipedia’) (T228839)
Support of MediaWiki releases below 1.19 will be dropped (T245350)
Provide mediawiki_messages for foreign language codes
Use mw API IP/anon user detection (T245318)
Correctly choose primary coordinates in BasePage.coordinates() (T244963)
Rewrite APISite.page_can_be_edited (T244604)
compat module is deprecated for 5 years and will be removed in next release (T183085)
ipaddress module is required for Python 2 (T243171)
tools.ip will be dropped in favour of tools.is_IP (T243171)
tools.ip_regexp is deprecatd for 5 years and will be removed in next release
backports.py will be removed in next release (T244664)
stdnum package is required for ISBN scripts and cosmetic_changes (T132919, T144288, T241141)
Drop isbn_hyphenate package due to outdated data (T243157)
Fix UnboundLocalError in ProofreadPage._ocr_callback (T243644)
Deprecate/remove sysop parameter in several methods and functions
Refactor Wikibase entity namespace handling (T160395)
Site.has_api method will be removed in next release
Category.copyTo and Category.copyAndKeep will be removed in next release
weblib module has been removed (T85001)
botirc module has been removed (T212632)
Bugfixes and improvements
Localisation updates
3.0.20200111#
11 January 2020
Fix broken get_version() in setup.py (T198374)
Rewrite site.log_page/site.unlock_page implementation
Require requests 2.20.1 (T241934)
Make bot.suggest_help a function
Fix gui settings for Python 3.7.4+ (T241216)
Better api error message handling (T235500)
Ensure that required props exists as Page attribute (T237497)
Refactor data loading for WikibaseEntities (T233406)
replaceCategoryInPlace: Allow LRM and RLM at the end of the old_cat title (T240084)
Support for Python 3.4 will be dropped (T239542)
enum34 package is mandatory for Python 2.7 (T213287)
call LoginManager with keyword arguments (T237501)
Enable Pywikibot for Python 3.8 (T238637)
Derive BaseLink from tools.UnicodeMixin (T223894)
Make _flush aware of _putthread ongoing tasks (T147178)
Add family file for foundation wiki (T237888)
Fix generate_family_file.py for private wikis (T235768)
Add rank parameter to Claim initializer
Add current directory for similar script search (T217195)
Release BaseSite.lock_page mutex during sleep
Implement deletedrevisions api call (T75370)
assert_valid_iter_params may raise AssertionError instead of pywikibot.Error (T233582)
Upcast getRedirectTarget result and return the appropriate page subclass (T233392)
Add ListGenerator for API:filearchive to site module (T230196)
Deprecate the ability to login with a secondary sysop account (T71283)
Enable global args with pwb.py wrapper script (T216825)
Add a new ConfigParserBot class to set options from the scripts.ini file (T223778)
Check a user’s rights rather than group memberships; ‘sysopnames’ will be deprecated (T229293, T189126, T122705, T119335, T75545)
proofreadpage.py: fix footer detection (T230301)
Add allowusertalk to the User.block() options (T229288)
botirc module will be removed in next release (T212632)
weblib module will be removed in next release (T85001)
Bugfixes and improvements
Localisation updates
3.0.20190722#
22 July 2019
Increase the throttling delay if maxlag >> retry-after (T210606)
Add “user_agent_description” option in config.py
APISite.fromDBName works for all known dbnames (T225590, 225723, 226960)
remove the unimplemented “proxy” variable in config.py
Make Family.langs property more robust (T226934)
Remove strategy family
Handle closed_wikis as read-only (T74674)
TokenWallet: login automatically
Add closed_wikis to Family.langs property (T225413)
Redirect ‘mo’ site code to ‘ro’ and remove interwiki_replacement_overrides (T225417, T89451)
Add support for badges on Wikibase item sitelinks through a SiteLink object instead plain str (T128202)
Remove login.showCaptchaWindow() method
New parameter supplied in suggest_help function for missing dependencies
Remove NonMWAPISite class
Introduce Claim.copy and prevent adding already saved claims (T220131)
Fix create_short_link method after MediaWiki changes (T223865)
Validate proofreadpage.IndexPage contents before saving it
Refactor Link and introduce BaseLink (T66457)
Count skipped pages in BaseBot class
‘actionthrottledtext’ is a retryable wikibase error (T192912)
Clear tokens on logout(T222508)
Deprecation warning: support for Python 2 will be dropped (T213287)
botirc.IRCBot has been dropped
Avoid using outdated browseragents (T222959)
textlib: avoid infinite execution of regex (T222671)
Add CSRF token in sitelogout() api call (T222508)
Refactor WikibasePage.get and overriding methods and improve documentation
Improve title patterns of WikibasePage extensions
Add support for property creation (T160402)
Bugfixes and improvements
Localisation updates
3.0.20190430#
30 April 2019
Unicode literals are required for all scripts; the usage of ASCII bytes may fail (T219095)
Don’t fail if the number of forms of a plural string is less than required (T99057, T219097)
Implement create_short_link Page method to use Extension:UrlShortener (T220876)
Remove wikia family file (T220921)
Remove deprecated ez_setup.py
Changed requirements for sseclient (T219024)
Set optional parameter namespace to None in site.logpages (T217664)
Add ability to display similar scripts when misspelled (T217195)
Check if QueryGenerator supports namespaces (T198452)
Bugfixes and improvements
Localisation updates
3.0.20190301#
1 March 2019
Fix version comparison (T164163)
Remove pre MediaWiki 1.14 code
Dropped support for Python 2.7.2 and 2.7.3 (T191192)
Fix header regex beginning with a comment (T209712)
Implement Claim.__eq__ (T76615)
cleanup config2.py
Add missing Wikibase API write actions
Bugfixes and improvements
Localisation updates
3.0.20190204#
4 February 2019
Support python version 3.7
pagegenerators.py: add -querypage parameter to yield pages provided by any special page (T214234)
Fix comparison of str, bytes and int literal
site.py: add generic self.querypage() to query SpecialPages
echo.Notification has a new event_id property as integer
Bugfixes and improvements
Localisation updates
3.0.20190106#
6 January 2019
Ensure “modules” parameter of ParamInfo._fetch is a set (T122763)
Support adding new claims with qualifiers and/or references (T112577, T170432)
Support LZMA and XZ compression formats
Update correct-ar Typo corrections in fixes.py (T211492)
Enable MediaWiki timestamp with EventStreams (T212133)
Convert Timestamp.fromtimestampformat() if year, month and day are given only
tools.concat_options is deprecated
Additional ListOption subclasses ShowingListOption, MultipleChoiceList, ShowingMultipleChoiceList
Bugfixes and improvements
Localisation updates
3.0.20181203#
3 December 2018
Remove compat module references from autogenerated docs (T183085)
site.preloadpages: split pagelist in most max_ids elements (T209111)
Disable empty sections in cosmetic_changes for user namespace
Prevent touch from re-creating pages (T193833)
New Page.title() parameter without_brackets; also used by titletranslate (T200399)
Security: require requests version 2.20.0 or later (T208296)
Check appropriate key in Site.messages (T163661)
Make sure the cookie file is created with the right permissions (T206387)
pydot >= 1.2 is required for interwiki_graph
Move methods for simple claim adding/removing to WikibasePage (T113131)
Enable start timestamp for EventStreams (T205121)
Re-enable notifications (T205184)
Use FutureWarning for warnings intended for end users (T191192)
api.QueryGenerator: Handle slots during initialization (T200955, T205210)
Bugfixes and improvements
Localisation updates
3.0.20180922#
22 September 2018
Enable multiple streams for EventStreams (T205114)
Fix Wikibase aliases handling (T194512)
Remove cryptography support from python<=2.7.6 requirements (T203435)
textlib._tag_pattern: Do not mistake self-closing tags with start tag (T203568)
page.Link.langlinkUnsafe: Always set _namespace to a Namespace object (T203491)
Enable Namespace.content for mw < 1.16
Allow terminating the bot generator by BaseBot.stop() method (T198801)
Allow bot parameter in set_redirect_target
Do not show empty error messages (T203462)
Show the exception message in async mode (T203448)
Fix the extended user-config extraction regex (T145371)
Solve UnicodeDecodeError in site.getredirtarget (T126192)
Introduce a new APISite property: mw_version
Improve hash method for BasePage and Link
Avoid applying two uniquifying filters (T199615)
Fix skipping of language links in CosmeticChangesToolkit.removeEmptySections (T202629)
New mediawiki projects were provided
Bugfixes and improvements
Localisation updates
3.0.20180823#
23 August 2018
Don’t reset Bot._site to None if we have already a site object (T125046)
pywikibot.site.Siteinfo: Fix the bug in cache_time when loading a CachedRequest (T202227)
pagegenerators._handle_recentchanges: Do not request for reversed results (T199199)
Use a key for filter_unique where appropriate (T199615)
pywikibot.tools: Add exceptions for first_upper (T200357)
Fix usages of site.namespaces.NAMESPACE_NAME (T201969)
pywikibot/textlib.py: Fix header regex to allow comments
Use ‘rvslots’ when fetching revisions on MW 1.32+ (T200955)
Drop the ‘2’ from PYWIKIBOT2_DIR, PYWIKIBOT2_DIR_PWB, and PYWIKIBOT2_NO_USER_CONFIG environment variables. The old names are now deprecated. The other PYWIKIBOT2_* variables which were used only for testing purposes have been renamed without deprecation. (T184674)
Introduce a timestamp in deprecated decorator (T106121)
textlib.extract_sections: Remove footer from the last section (T199751)
Don’t let WikidataBot crash on save related errors (T199642)
Allow different projects to have different L10N entries (T198889)
remove color highlights before fill function (T196874)
Fix Portuguese file namespace translation in cc (T57242)
textlib._create_default_regexes: Avoid using inline flags (T195538)
Not everything after a language link is footer (T199539)
code cleanups
New mediawiki projects were provided
Bugfixes and improvements
Localisation updates
3.0.20180710#
10 July 2018
Enable any LogEntry subclass for each logevent type (T199013)
Deprecated pagegenerators options -<logtype>log aren’t supported any longer (T199013)
Open RotatingFileHandler with utf-8 encoding (T188231)
Fix occasional failure of TestLogentries due to hidden namespace (T197506)
Remove multiple empty sections at once in cosmetic_changes (T196324)
Fix stub template position by putting it above interwiki comment (T57034)
Fix handling of API continuation in PropertyGenerator (T196876)
Use PyMySql as pure-Python MySQL client library instead of oursql, deprecate MySQLdb (T89976, T142021)
Ensure that BaseBot.treat is always processing a Page object (T196562, T196813)
Update global bot settings
New mediawiki projects were provided
Bugfixes and improvements
Localisation updates
3.0.20180603#
3 June 2018
Move main categories to top in cosmetic_changes
shell.py always imports pywikibot as default
New roundrobin_generators in tools
New BaseBot method “skip_page” to adjust page counting
Family class is made a singleton class
New rule ‘startcolon’ was introduced in textlib
BaseBot has new methods setup and teardown
UploadBot got a filename prefix parameter (T170123)
cosmetic_changes is able to remove empty sections (T140570)
Pywikibot is following PEP 396 versioning
pagegenerators AllpagesPageGenerator, CombinedPageGenerator, UnconnectedPageGenerator are deprecated
Some DayPageGenerator parameters has been renamed
unicodedata2, httpbin and Flask dependency was removed (T102461, T108068, T178864, T193383)
New projects were provided
Bugfixes and improvements
Documentation updates
Localisation updates (T194893)
Translation updates
3.0.20180505#
5 May 2018
Enable makepath and datafilepath not to create the directory
Use API’s retry-after value (T144023)
Provide startprefix parameter for Category.articles() (T74101, T143120)
Page.put_async() is marked as deprecated (T193494)
Deprecate requests-requirements.txt (T193476)
Bugfixes and improvements
New mediawiki projects were provided
Localisation updates
3.0.20180403#
3 April 2018
3.0.20180304#
4 March 2018
Bugfixes and improvements
Localisation updates
3.0.20180302#
2 March 2018
Changed requirements for requests and sseclient
Bugfixes and improvements
Localisation updates
3.0.20180204#
4 February 2018
Deprecation warning: support for py2.6 and py3.3 will be dropped
Changed requirements for cryprography, Pillow and pyOpenSSL
Bugfixes and improvements
Localisation updates
3.0.20180108#
8 January 2018
Maintenance script to download Wikimedia database dump
Option to auto-create accounts when logging in
Ship wikimania family file
Drop battlestarwiki family file
Bugfixes and improvements
Localisation updates
3.0.20171212#
12 December 2017
Introduce userscripts directory
Generator settings inside (user-)fixes.py
BaseUnlinkBot has become part of the framework in specialbots.py
Decommission of rcstream
Script files added to https://doc.wikimedia.org/pywikibot/
Other documentation updates
Bugfixes and improvements
Localisation updates
3.0.20170801#
1 August 2017
Bugfixes and improvements
Localisation updates
3.0.20170713#
13 July 2017
Deprecate APISite.newfiles()
Inverse of pagegenerators -namespace option
Bugfixes and improvements
Localisation updates
CODE_OF_CONDUCT included
Bugfixes
Manage temporary readonly error (T154011)
Unbreak wbGeoShape and WbTabularData (T166362)
Clean up issue with _WbDataPage (T166362)
Re-enable xml for WikiStats with py2 (T165830)
Solve httplib.IncompleteRead exception in eventstreams (T168535)
Only force input_choise if self.always is given (T161483)
Add colon when replacing category and file weblink (T127745)
API Request: set uiprop only when ensuring ‘userinfo’ in meta (T169202)
Improvements
Introduce the new WbUnknown data type for Wikibase (T165961)
djvu.py: add replace_page() and delete_page()
Build GeoShape and TabularData from shared base class
Remove non-breaking spaces when tidying up a link (T130818)
Replace private mylang variables with mycode in generate_user_files.py
FilePage: remove deprecated use of fileUrl
Make socket_timeout recalculation reusable (T166539)
FilePage.download(): add revision parameter to download arbitrary revision (T166939)
Make pywikibot.Error more precise (T166982)
Implement pywikibot support for adding thanks to normal revisions (T135409)
Implement server side event client EventStreams (T158943)
new pagegenerators filter option -titleregexnot
Add exception for -namepace option (T167580)
InteractiveReplace: Allow no replacements by default
Encode default globe in family file
Add on to pywikibot support for thanking normal revisions (T135409)
Add log entry code for thanks log (T135413)
Create superclass for log entries with user targets
Use relative reference to class attribute
Allow pywikibot to authenticate against a private wiki (T153903)
Make WbRepresentations hashable (T167827)
Updates
Update linktails
Update languages_by_size
Update cross_allowed (global bot wikis group)
Add atjwiki to wikipedia family file (T168049)
remove closed sites from languages_by_size list
Update category_redirect_templates for wikipedia and commons Family
Update logevent type parameter list
Disable cleanUpSectionHeaders on jbo.wiktionary (T168399)
Add kbpwiki to wikipedia family file (T169216)
Remove anarchopedia family out of the framework (T167534)
3.0.20170521#
21 May 2017
Support for Python 2.6 but higher releases are strictly recommended
Bugfixes and improvements
Localisation updates
Bugfixes
Increase the default socket_timeout to 75 seconds (T163635)
use repr() of exceptions to prevent UnicodeDecodeErrors (T120222)
Handle offset mismatches during chunked upload (T156402)
Correct _wbtypes equality comparison (T160282)
Re-enable getFileVersionHistoryTable() method (T162528)
Replaced the word ‘async’ with ‘asynchronous’ due to py3.7 (T106230)
Raise ImportError if no editor is available (T163632)
templatesWithParams: cache and standardise params (T113892)
getInternetArchiveURL: Retry http.fetch if there is a ConnectionError (T164208)
Remove wikidataquery from pywikibot (T162585)
Improvements
Introduce user_add_claim and allow asynchronous ItemPage.addClaim (T87493)
Enable private edit summary in specialbots (T162527)
Make a decorator for asynchronous methods
Provide options by a separate handler class
Show a warning when a LogEntry type is not known (T135505)
Add Wikibase Client extension requirement to APISite.unconnectedpages()
Update content after editing entity
Make WbTime from Timestamp and vice versa (T131624)
Add support for geo-shape Wikibase data type (T161726)
Add async parameter to ItemPage.editEntity (T86074)
Make sparql use Site to access sparql endpoint and entity_url (T159956)
timestripper: search wikilinks to reduce false matches
Set Coordinate globe via item
use extract_templates_and_params_regex_simple for template validation
Add _items for WbMonolingualText
Allow date-versioned pypi releases from setup.py (T152907)
Provide site to WbTime via WbTime.fromWikibase
Provide preloading via GeneratorFactory.getCombinedGenerator() (T135331)
Accept QuitKeyboardInterrupt in specialbots.Uploadbot (T163970)
Remove unnecessary description change message when uploading a file (T163108)
Add ‘OptionHandler’ to bot.__all__ tuple
Use FilePage.upload inside UploadRobot
Add support for tabular-data Wikibase data type (T163981)
Get thumburl information in FilePage() (T137011)
Updates
Update languages_by_size in family files
wikisource_family.py: Add “pa” to languages_by_size
Config2: limit the number of retries to 15 (T165898)
3.0.20170403#
3 April 2017
First major release from master branch
requests package is mandatory
Deprecate previous 2.0 branches and tags
Bugfixes
Use default summary when summary value does not contain a string (T160823)
Enable specialbots.py for PY3 (T161457)
Change tw(n)translate from Site.code to Site.lang dependency (T140624)
Do not use the “imp” module in Python 3 (T158640)
Make sure the order of parameters does not change (T161291)
Use pywikibot.tools.Counter instead of collections.Counter (T160620)
Introduce a new site method page_from_repository()
Add pagelist tag for replaceExcept (T151940)
logging in python3 when deprecated_args decorator is used (T159077)
Avoid ResourceWarning using subprocess in python 3.6 (T159646)
load_pages_from_pageids: do not fail on empty string (T153592)
Add missing not-equal comparison for wbtypes (T158848)
textlib.getCategoryLinks catch invalid category title exceptions (T154309)
Fix html2unicode (T130925)
Ignore first letter case on ‘first-letter’ sites, obey it otherwise (T130917)
textlib.py: Limit catastrophic backtracking in FILE_LINK_REGEX (T148959)
FilePage.get_file_history(): Check for len(self._file_revisions) (T155740)
Fix for positional_arg behavior of GeneratorFactory (T155227)
Fix broken LDAP based login (T90149)
Improvements
Simplify User class
Renamed isImage and isCategory
Add -property option to pagegenerators.py
Add a new site method pages_with_property
Allow retrieval of unit as ItemPage for WbQuantity (T143594)
return result of userPut with put_current method
Provide a new generator which yields a subclass of Page
Implement FilePage.download()
make general function to compute file sha
Support adding units to WbQuantity through ItemPage or entity url (T143594)
Make PropertyPage.get() return a dictionary
Add Wikibase Client extension requirement to APISite.unconnectedpages()
Make Wikibase Property provide labels data
APISite.data_repository(): handle warning with re.match() (T156596)
GeneratorFactory: make getCategory respect self.site (T155687)
Fix and improve default regexes
Updates
Update linktrails
Update languages_by_size
Updating global bot wikis, closed wikis and deleted wikis
Deprecate site.has_transcluded_data
update plural rules
Correcting month names in date.py for Euskara (eu)
Linktrail for Euskara
Define template documentation subpages for es.wikibooks
self.doc_subpages for Meta-Wiki
Updating Wikibooks projects which allows global bots
Updated list of closed projects
Add ‘Bilde’ as a namespace alias for file namespace of nn Wikipedia (T154947)
2.0rc5#
17 August 2016
Last stable 2.0 branch
Bugfixes
Establish the project’s name, once and for all
setup.py: Add Python 3.4 and 3.5 to pypi classifiers
Remove item count output in page generators
Test Python 3.5 on Travis
Fix docstring capitalization in return types and behavior
Stop reading ‘cookieprefix’ upon login
Fix travis global environment variables
Fix notifications building from JSON
pywikibot: Store ImportError in imported variable
Use default tox pip install
Add asteroids that are being used as locations
Fix ID for Rhea
[bugfix] pass User page object to NotEmailableError
Allow pywikibot to run on Windows 10 as well
listpages.py: Fix help docstring
pwb.py: make sure pywikibot is correctly loaded before starting a script
win32_unicode: force truetype font in console
Update main copyright year to 2016
[L10N] add “sco” to redirected category pages
date.py: fix Hungarian day-month title
Prevent <references…/> from being destroyed
[FIX] Page: Use repr-like if it can’t be encoded
pywikibot.WARNING -> pywikibot.logging.WARNING
Do not expand text by default in getCategoryLinks
Typo fix
Prevent AttributeError for when filename is None
Split TestUserContribs between user and non-user
2.0rc4#
15 December 2015
Bugfixes
Remove dependency on pYsearch
Require google>=0.7
Desupport Python 2.6 for Pywikibot 2.0 release branch
config: Don’t crash on later get_base_dir calls
cosmetic_changes: merge similar regexes
Update revId upon claim change
Update WOW hostnames
Mark site.patrol() as a user write action
Fix interwikiFormat support for Link
Changes are wrongly detected in the last langlink
getLanguageLinks: Skip own site
fix intersection of sets of namespaces
Import textlib.TimeStripper
Change “PyWikiBot” to “Pywikibot”
Stop crashing item loads due to support of units
__all__ items must be bytes on Python 2
Omit includeredirects parameter for allpages generator
Performance fix for sites using interwiki_putfirst option
Fix Persian Wikipedia configuration
rollback: Use Revision instance properly
Add must_be to DataSite write actions
Remove unneeded site argument to AutoFamily
Fix ComparableMixin
Deprecate ParamInfo.query_modules_with_limits
be-x-old is renamed to be-tarask
Correctly identify qualifier from JSON
2.0rc3#
30 September 2015
Bugfixes
New Wikipedia site: azb
Indexes in str.format
MediaWikiVersion: Accept new wmf style
i18n: always follow master
Bugfixes
Localisation updates
i18n: always follow master branch
exception.UploadWarning was replaced by data.api.UploadWarning
2.0rc2#
9 July 2015
Configuration updates
Changing the sandbox content template on Fa WP
Family file updates
Remove broken wikis from battlestarwiki family
Adding euskara and sicilianu languages to Vikidia family
WOW Wiki subdomains hr, ro & sr deleted
Add new Wikipedia languages gom and lrc
Bugfixes
fix UnicodeDecodeError on api error
pwb.py now correctly passes arguments to generate_family_file
Fix Win32 config.editor detection
open_compressed: Wrap BZ2File in Py 2.7
Skip RC entries without a title
PatrolEntry: Allow cur/prev id to be str
Updates to i18n changes
Do not use ParamInfo during action=login
Let pydot encode labels for Python 3 support
Fix and test interwiki_graph
textlib: replaceExcept: Handle empty matches
Bugfixes and improvements
Localisation updates
2.0rc1#
25 May 2015
Major improvements
Sphinx documentation at https://doc.wikimedia.org/pywikibot/
Initial ProofreadPage support
Improved diff output, with context
Batch upload support
Compat scripts patrol.py and piper.py ported
isbn.py now supports wikibase
RecentChanges stream (rcstream) support
Pywikibot API improvements
Python 3 ipaddress support
Support for Python warning system
- Wikibase:
added ISBN support
added redirect support
Optionally uses external library for improved isbn validation
Automatically generating user files when -user, -family and -lang are provided to a script
Page.content_model added
Page.contributors() and Page.revision_count() added
APISite.compare added
Site.undelete and Page.undelete added
DataSite.search_entities support
FilePage.latest_file_info and FilePage.oldest_file_info added
ItemClaimFilterPageGenerator added
Low-level changes
Switch to JSON-based i18n data format
Unicode_literals used throughout source code
API badtoken recovery
API client side prevention of anonymous writes
API layer support for boolean and date datatypes
Improved MediaWiki version detection
PageNotFound exception is no longer used
UserActionRefuse exception was replaced by UserRightsError and NotEmailableError
Other changes
Python 3 support fixes
Daemonize support
Allow pywikibot to load without i18n data
AppVeyor CI Win32 builds
New scripts patrol.py and piper.py ported from old compat branch
Bugfixes and improvements
Localisation updates
2.0b3#
30 November 2014
Library initialisation no longer connects to servers
generate_user_files.py rewritten
API Version 1.14 support
Support HTTPS for families with certificate validation errors (Python 2 only)
API HTTP(S) GET support
API simplified continuation support
Upload uses a fake filename to avoid various MIME encoding issues
API class ParamInfo inspects API modules
Several QueryGenerator efficiency improvements
Improved ‘same title’ detection and ‘get redirect target’ handling
Site interwiki methods now use dynamic Interwikimap
Site methods return Namespace object instead of int
New WikiStats module
New PatchManager module used for showDiff
New pagegenerators, including -intersect support
Several category_redirect.py improvements
archivebot: support more languages
reflinks: changed from GPL to MIT
Bugfixes and improvements
2.0b2#
7 October 2014
Bugfixes and improvements
2.0b1#
26 August 2013
First stable release branch
1.0 rv 2007-06-19#
19 June 2007
BeautifulSoup becomes mandatory
new scripts were added
new family files were supported
some scripts were archived
1.0#
26 September 2005
First PyWikipediaBot framework release
scripts and libraries for standardizing content
tools for making minor modifications
script making interwiki links