Skip to content

Latest commit

 

History

History
2194 lines (1847 loc) · 96.1 KB

HISTORY.rst

File metadata and controls

2194 lines (1847 loc) · 96.1 KB

Release history

9.1.2

03 May 2024

  • Remove line endings in version.getversion_nightly (T363943)
  • Provide -nouser option with pywikibot.scripts.version
  • i18n updates

9.1.1

27 April 2024

  • Add support for new wikis (T363272, T363265, T363258, T363251, T363245, T360312, T360305)
  • i18n updates

9.1.0

22 April 2024

  • -usernames option was added to version<pywikibot.scripts.version> script
  • Circumvent problems with unique and prefix parameters in Site.alllinks() <pywikibot.site._generators.GeneratorsMixin.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<specialbots.UploadRobot.post_processor> attribute to specialbots.UploadRobot which can be called after each upload (T359766)
  • Avoid using pywikibot.handle_args in private scripts; use pwb<pywikibot.scripts.wrapper> wrapper instead (T359766)
  • Show upload count with specialbots.UploadRobot
  • Use the same iiprop properties in data.api.PageGenerator as in APISite.loadimageinfo<pywikibot.site._apisite.APISite.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.0
  • Timestamp.nowutc()<pywikibot.time.Timestamp.nowutc> and Timestamp.utcnow()<pywikibot.time.Timestamp.utcnow> were added (T337748)
  • Remove content parameter of proofreadpage.IndexPage.page_gen method. (T358635)
  • Backport itertools.batched from Python 3.13 to backports.batched
  • A copy button was added to the sphinx documentation.
  • Make languages_by_size<family.WikimediaFamily.languages_by_size> dynamic (T78396). The property is only available for family.WikimediaFamily families. The wikimedia_sites.py maintenance script was removed.
  • Add config.base_dir<config.get_base_dir> to scripts search path with pwb wrapper (T324287)
  • pywikibot.WbTime.equal_instant was added (T325248)
  • revisions parameter of xmlreader.XmlDump was introduced to specify parsing method (T340804)
  • Pass global -nolog argument into bot script from wrapper (T328900)
  • Add site.APISite.ratelimit()<pywikibot.site._apisite.APISite.ratelimit> method and tools.collections.RateLimit NamedTuple (T304808)
  • L10N and i18n updates
  • Add pagegenerators.PagePilePageGenerator (T353086)

Bugfixes

  • Timestamp.now()<pywikibot.time.Timestamp.now> and Timestamp.fromtimestamp()<pywikibot.time.Timestamp.fromtimestamp> also returns a Timestamp<pywikibot.time.Timestamp> object with Python 3.7
  • Populate pywikibot.MediaInfo._content with expected attributes when loaded (T357608)
  • Raise exceptions.APIError if the same error comes twice within data.api.Request.submit loop (T357870)
  • Only delegate site methods to public family.Family methods which have code as first parameter.
  • Use str instead of repr for several messages with family.Family objects (T356782)
  • Add hy to special languages in textlib.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 in xmlreader 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 to apicache due to timestamp changes. (T337748) Warning: Do not use Pywikibot 9+ together with Pywikibot 3.0.20181203 and below.
  • Raise TypeError instead of AttributeError in Site.randompages() <pywikibot.site._generators.GeneratorsMixin.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<bot_choice.InteractiveReplace> was moved from bot to bot_choice module
  • userinterfaces.transliteration.transliterator was renamed to Transliterator <userinterfaces.transliteration.Transliterator>
  • pywikibot.BaseSite and pywikibotAPISite were dropped. pywikibot.Site has to be used to create a site object.
  • next parameter of userinterfaces.transliteration.Transliterator.transliterate was renamed to succ
  • type parameter of site.APISite.protectedpages()<pywikibot.site._generators.GeneratorsMixin.protectedpages> was renamed to protect_type
  • all parameter of site.APISite.namespace()<pywikibot.site._apisite.APISite.namespace> was renamed to all_ns
  • filter parameter of date.dh was renamed to filter_func
  • dict parameter of data.api.OptionSet was renamed to data
  • setuptools package is no longer mandatory but required for tests (T340640, T347052, T354515)
  • root attribute of xmlreader.XmlDump was removed
  • tools.Version class was removed; use classes from packaging.version instead (T340640)
  • packaging package is mandatory; importlib_metadata package is required for Python 3.7 (T340640)
  • SelfCallMixin, SelfCallDict and SelfCallString of tools module were removed
  • Calling site.BaseSite.sitename<pywikibot.site._basesite.BaseSite.sitename> as a function is no longer supported
  • config.register_family_file() function was removed
  • require PyMySQL >= 1.0.0 if necessary
  • keys() and items() methods of data.api.Request gives a view instead a list (T310953)
  • SequenceOutputter.format_list() was removed in favour of tools.formatter.SequenceOutputter.out property
  • output parameter of bot_choice.OutputProxyOption (i.e. OutputOption instance) without out property is no longer supported
  • OutputOption.output() method was removed
  • ContextOption.output_range() and HighlightContextOption.output_range() methods were removed
  • page.url2unicode() function was removed in favour of tools.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 unpack
  • allow_duplicates parameter of tools.itertools.intersect_generators must be given as keyword argument
  • Infinite rotating file handler with config.logfilesize of -1 is no longer supported
  • Throttle.multiplydelay attribute was removed
  • Python 3.6 support was dropped (T347026)

8.6.0

05 December 2023

  • Lazy load imageinfo metadata (T253591, T258036)
  • Fetch URL of page scan via imageforpage in proofreadpage module (T114318, T181913, T352524)
  • Sort page names before loading pages in proofreadpage module
  • L10N 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

  • Add support for new wikis (T350231, T350237, T350243, T350375)

8.5.0

05. November 2023

  • Add a pagegenerators filter option to check if a page is redirect (T261549)
  • Add support for vikidia:nl site
  • Replace MediaWiki API deprecated inprop=preload with preloadcontent (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 site
  • Make 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()<pywikibot.site._basesite.BaseSite.redirects> and site.APISite.redirects()<pywikibot.site._apisite.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, the data.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 <pywikibot.site._apisite.APISite.file_extensions> property was added (T345786)
  • dropdelay and releasepid attributes of throttle.Throttle where deprecated in favour of expiry class attribute
  • Add 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() <pywikibot.site._apisite.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 module
  • Use site.lang instead of site.code in comms.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 and family.DefaultWikibaseFamily were added to family module
  • Remove incorrect time normalization in page.Claim (T338748, T325860, T57755)
  • Add support for other types of diffs in Site.compare()<pywikibot.site._apisite.APISite.compare>
  • Improvements for textlib.extract_sections function (T338748)
  • Backport itertools.batched() from Python 3.12 which replaces tools.itertools.itergroup
  • Upcast page types in pagegenerators.RecentChangesPageGenerator (T340450)
  • Enable FilePage.download()<pywikibot.FilePage.download> to download thumbnails (T247095)
  • Refactor tools.compute_file_hash and use hashlib.file_digest with Python 3.11
  • Url 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 of setuptools.setup() to build the distribution
  • Raise ConnectionError on requests.ReadTimeout in comms.http.error_handling_callback
  • Raise exceptions.ServerError on requests.ReadTimeout in comms.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 and code_aliases are family.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

  • Add support for fatwikipedia (T335021)
  • Add support for kcgwiktionary (T334742)
  • Update for wowwiki family

8.1.0

16 April 2023

  • generate_family_file<pywikibot.scripts.generate_family_file> script was improved (T334775)
  • A quiet parameter was added to APISite.preloadpages() <pywikibot.site._generators.GeneratorsMixin.preloadpages> which is True by default
  • Fix 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 of exceptions.NoPageError when sitelink is missing in ItemPage.getSitelink()<pywikibot.ItemPage.getSitelink> (T332341)
  • exceptions.ClientError was added
  • Raise exceptions.NoPageError when deleting a missing Page (T332924)
  • text parameter of proofreadpage.PagesTagParser has a default value
  • L10N updates
  • Ignore talk pages with APISite.watched_pages()<pywikibot.site._generators.GeneratorsMixin.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

  • L10N Updates
  • Minimal needed mwparserfromhell was decreased to 0.5.2 (T326498, T327600)
  • No longer lazy load password cookies (T271858, T326779, T329132, T330488, T331315)

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 to pywikibot.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 to proofreadpage
  • addOnly parameter of textlib.replaceLanguageLinks and textlib.replaceCategoryLinks were renamed to add_only
  • known_codes attribute was added to family.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 <pywikibot.scripts.generate_user_files> (T145372)
  • use roundrobin_generators<tools.itertools.roundrobin_generators> to combine generators when limit option is given
  • Ignore OSError if API cache cannot be written
  • Update tools._unidata._category_cf from Unicodedata version 15.0.0
  • Timestamp.set_timestamp()<pywikibot.time.Timestamp.set_timestamp> raises TypeError instead of ValueError if conversion fails
  • Python 3.12 is supported
  • All parameters of APISite.categorymembers() <pywikibot.site._generators.GeneratorsMixin.categorymembers> are provided with Category.members()<page.Category.members>, Category.subcategories()<page.Category.subcategories> (member_type excluded) and Category.articles()<page.Category.articles> (member_type excluded) (T102406)
  • Enable site-package installation from git repository (T320851)
  • Enable 2FA login (T186274)
  • Page.editTime()<page.BasePage.editTime> was replaced by Page.latest_revision.timestamp<page.BasePage.latest_revision>
  • 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 of Natural 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)
  • Normalize WbTimes<pywikibot.WbTime> sent to Wikidata (T325860)
  • 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()<page.Category.members>, Category.subcategories()<page.Category.subcategories> and Category.articles()<page.Category.articles> are keyword only
  • The parent_id and content_model attributes of page.Revision were removed in favour of parentid and contentmodel
  • Support for MediaWiki < 1.27 was dropped
  • ListBoxWindows class of userinterfaces.gui was removed
  • Require 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 and interwiki_putfirst attributes of Wiktionary<families.wiktionary_family.Family> family were removed (T325426)
  • alphabetic, alphabetic_revised and fyinterwiki attributes of family.Family were removed (T325426)

7.7.3

08 January 2023

  • Add support for shn-wikibooks, as quote, guw quote, got-wikt families (T148280, T326141, T321285, T321297)

7.7.2

03 December 2022

  • Fix textlib.TimeStripper for vi site code (T324310)

7.7.1

10 October 2022

  • New wikis are supported (T314642, T314648, T316459, T317115, T319193)

7.7.0

25 September 2022

  • TypeError is raised if aliases parameter of WikibasePage.editAliases <page.WikibasePage.editEntity> method is not a list (T318034)
  • Raise TypeError in AliasesDict.normalizeData <pywikibot.page._collections.AliasesDict.normalizeData> if data value is not a list (T318034)
  • tools' threading classes were moved to tools.threading submodule
  • No longer raise NotimplementedError in APISite.page_from_repository <pywikibot.site._apisite.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 name
  • Run pywikibot.scripts.login script in parallel tasks if -async option is given (T57899)
  • Ability to preload categories was added to APISite.preloadpages <pywikibot.site._generators.GeneratorsMixin.preloadpages> (T241689)
  • Add WikiBlame<page._toolforge.WikiBlameMixin> support was added to get the five topmost authors
  • Raise KeyError instead of AttributeError if page.FileInfo is used as Mapping
  • i18n 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()<backports> from Python 3.10
  • L10N updates
  • Fix partial caching in Category.subcategories()<page.Category.subcategories> (T88217)
  • Method Page.has_content()<page.BasePage.has_content> was added (T313736)
  • Discard cache and reload it if cache was loaded without content and content is required in Page.templates()<page.BasePage.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<pagegenerators.GoogleSearchPageGenerator> and PetScanPageGenerator<pagegenerators.PetScanPageGenerator> a restartable Generator (T313681, T313683)
  • Provide a collections.GeneratorWrapper<tools.collections.GeneratorWrapper> class to start/restart a generator (T301318, T312654, T312883)
  • tools' itertools functions were moved to tools.itertools submodule
  • tools' collections classes were moved to tools.collections submodule
  • Set 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 to pywikibot.time.TZoneFixedOffset
  • Wrapper method parsevalue()<pywikibot.site._datasite.DataSite.parsevalue> around wbparsevalue was added (T112140, T312755)
  • L10N updates
  • Fix cp encodings in get_charset_from_content_type() <comms.http.get_charset_from_content_type> (T312230)
  • New pywikibot.time module with new functions in addition to Timestamp
  • Page.revisions()<page.BasePage.revisions> supports more formats/types for starttime and endtime parameters, in addition to those allowed by Timestamp.fromISOformat()<pywikibot.Timestamp.fromISOformat>.
  • New Timestamp.set_timestamp()<pywikibot.Timestamp.set_timestamp> method
  • Fully ISO8601 and POSIX format support with pywikibot.Timestamp; formats are compliant with MediaWiki supported formats
  • Handle asynchronous page_put_queue after KeyboardInterrupt in Python 3.9+ (T311076)
  • No longer expect a specific namespace alias in cosmetic_changes translateAndCapitalizeNamespaces <cosmetic_changes.CosmeticChangesToolkit.translateAndCapitalizeNamespaces>

7.4.0

26 June 2022

  • Provide Built Distribution with Pywikibot (427)
  • Update WRITE_ACTIONS in used by api.Request<data.api.Request>
  • Move get_closest_memento_url<data.memento.get_closest_memento_url> from weblinkchecker script to memento module.
  • Add memento module<data.memento> 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<bot.BaseBot.generator_completed> became a public attribute
  • Return 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_linkrtrails maintenance script
  • Print 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 skipping
  • Deprecate RedirectPageBot and NoRedirectPageBot in favour of use_redirects attribute
  • tools.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 removed
  • Use 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() with FilePage.using_pages()
  • Don't raise NoPageError with file_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 dropped
  • Provide 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 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

  • L10N updates (T292423, T294526, T294527)

6.6.1

21 September 2021

  • Fix for removed action API token parameters of MediaWiki 1.37 (T291202)
  • APISite.validate_tokens() no longer replaces outdated tokens (T291202)
  • L10N updates

6.6.0

15 September 2021

  • Drop piprop from meta=proofreadinfo API call (T290585)
  • Remove use_2to3 with setup.py (T290451)
  • Unify WbRepresentation's abstract method signature
  • L10N updates

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
  • Provide structured data on Commons (T213904, T223820)

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
  • Async chunked uploads are supported (T129216, T133443)
  • 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 8
  • config2.py was renamed to config.py
  • Exceptions were renamed having a suffix "Error" due to 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

  • Add support for taywiki, trvwiki and mnwwiktionary (T275838, T276128, T276250)

6.0.0

16 March 2021

Breaking changes

  • interwiki_graph module was removed (T223826)
  • Require setuptools >= 20.2 due to 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

  • Don't check for valid Family/Site if running generate_user_files.py (T261771)
  • Remove socket_timeout fix in config2.py introduced with T103069
  • Prevent huge traceback from underlying python libraries (T253236)
  • Localisation updates

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)
  • Fix getversion_svn for Python 3.6+ (T253617, T132292)
  • 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

  • Fix mul Wikisource aliases (T242537, T241413)
  • 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)
  • preload urllib.quote() with Python 2 (T243710, T222623)
  • 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)
  • Derive LoginStatus from IntEnum (T213287, T239533)
  • 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)
  • Provide new -wanted... page generators (T56557, T150222)
  • 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 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

  • Deprecation warning: support for Python 2.7.2 and 2.7.3 will be dropped (T191192)
  • Dropped support for Python 2.6 (T154771)
  • Dropped support for Python 3.3 (T184508)
  • Bugfixes and improvements
  • Localisation updates

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 include:

  • 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 include:

  • 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 include:

  • 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 include:

  • 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