.. image:: https://github.com/wikimedia/pywikibot/actions/workflows/pywikibot-ci.yml/badge.svg?branch=master
:alt: GitHub CI
:target: https://github.com/wikimedia/pywikibot/actions/workflows/pywikibot-ci.yml
.. image:: https://codecov.io/gh/wikimedia/pywikibot/branch/master/graph/badge.svg
:alt: Code coverage
:target: https://app.codecov.io/gh/wikimedia/pywikibot
.. image:: https://img.shields.io/pypi/pyversions/pywikibot.svg
:alt: Python
:target: https://www.python.org/downloads/
.. image:: https://img.shields.io/github/languages/top/wikimedia/pywikibot
:alt: Top language
:target: https://www.python.org/downloads/
.. image:: https://img.shields.io/pypi/v/pywikibot.svg
:alt: Pywikibot release
:target: https://pypi.org/project/pywikibot/
.. image:: https://img.shields.io/pypi/wheel/pywikibot
:alt: wheel
:target: https://pypi.org/project/pywikibot/
.. image:: https://static.pepy.tech/badge/pywikibot
:alt: Total downloads
:target: https://pepy.tech/project/pywikibot
.. image:: https://static.pepy.tech/personalized-badge/pywikibot?period=month&units=international_system&left_color=black&right_color=blue&left_text=monthly
:alt: Monthly downloads
:target: https://pepy.tech/project/pywikibot
.. image:: https://img.shields.io/github/last-commit/wikimedia/pywikibot
:alt: Last commit
:target: https://gerrit.wikimedia.org/r/plugins/gitiles/pywikibot/core/
.. image:: https://snyk.io/advisor/python/pywikibot/badge.svg
:target: https://snyk.io/advisor/python/pywikibot
:alt: pywikibot
*********
Pywikibot
*********
The Pywikibot framework is a Python library that interfaces with the
`MediaWiki API <https://www.mediawiki.org/wiki/API:Main_page>`_
version 1.31 or higher.
Also included are various general function scripts that can be adapted for
different tasks.
For further information about the library excluding scripts see
the full `code documentation <https://doc.wikimedia.org/pywikibot/stable/>`_.
Quick start
===========
.. code:: text
git clone https://gerrit.wikimedia.org/r/pywikibot/core.git
cd core
git submodule update --init
pip install -r requirements.txt
python pwb.py <script_name>
Or to install using PyPI (excluding scripts)
.. code:: text
pip install pywikibot
pwb <scriptname>
Our `installation
guide <https://www.mediawiki.org/wiki/Manual:Pywikibot/Installation>`_
has more details for advanced usage.
Basic Usage
===========
If you wish to write your own script it's very easy to get started:
.. code:: python
import pywikibot
site = pywikibot.Site('en', 'wikipedia') # The site we want to run our bot on
page = pywikibot.Page(site, 'Wikipedia:Sandbox')
page.text = page.text.replace('foo', 'bar')
page.save('Replacing "foo" with "bar"') # Saves the page
Wikibase Usage
==============
Wikibase is a flexible knowledge base software that drives Wikidata.
A sample pywikibot script for getting data from Wikibase:
.. code:: python
import pywikibot
site = pywikibot.Site('wikipedia:en')
repo = site.data_repository() # the Wikibase repository for given site
page = repo.page_from_repository('Q91') # create a local page for the given item
item = pywikibot.ItemPage(repo, 'Q91') # a repository item
data = item.get() # get all item data from repository for this item
Script example
==============
Pywikibot provides bot classes to develop your own script easily:
.. code:: python
import pywikibot
from pywikibot import pagegenerators
from pywikibot.bot import ExistingPageBot
class MyBot(ExistingPageBot):
update_options = {
'text': 'This is a test text',
'summary': 'Bot: a bot test edit with Pywikibot.'
}
def treat_page(self):
"""Load the given page, do some changes, and save it."""
text = self.current_page.text
text += '\n' + self.opt.text
self.put_current(text, summary=self.opt.summary)
def main():
"""Parse command line arguments and invoke bot."""
options = {}
gen_factory = pagegenerators.GeneratorFactory()
# Option parsing
local_args = pywikibot.handle_args(args) # global options
local_args = gen_factory.handle_args(local_args) # generators options
for arg in local_args:
opt, sep, value = arg.partition(':')
if opt in ('-summary', '-text'):
options[opt[1:]] = value
MyBot(generator=gen_factory.getCombinedGenerator(), **options).run()
if __name == '__main__':
main()
For more documentation on Pywikibot see our `docs <https://doc.wikimedia.org/pywikibot/>`_.
Roadmap
=======
Current Release Changes
=======================
* Apply client-side filtering for *maxsize* in misermode in
Site.allpages()(T402995)
* Add filter_func()and filter_item()
filter function in APIGeneratorBase
and modify `generator` property to implement filtering in
`APIGeneratorBase` subclasses (T402995)
* All parameters of Site.allpages()
except *start* must be given as keyword arguments.
* Add support for bewwiktionary (T402136)
* Add user-agent header to eventstreamsrequests (T402796)
* Update i18n
* Save global options in bot.global_args(T250034)
* Update pluralforms from unicode.org (T114978)
* Add textlib.SectionListto hold textlib.Content.sections(T401464)
* pywikibot.Coordinateparameters are keyword only
* Add *strict* parameter to Site.unconnected_pages()
and pagegenerators.UnconnectedPageGenerator
(T401699)
* Raise ValueError if a VAR_POSITIONAL parameter like *\*args* is used with
tools.deprecate_positionalsdecorator
* Add get_value_at_timestamp()API
to pywikibot.ItemPage(T400612)
* Clean up setupmodule (T396356)
* Implement pywikibot.ItemPage.get_best_claim(T400610)
* Add *expiry* parameter to BasePage.watch()and
Site.watch(); fix the methods to return False if
page is missing and no expiry is set (T330839)
Deprecations
============
Pending removal in Pywikibot 13
-------------------------------
* 10.4.0: Require all parameters of Site.allpages()
except *start* to be keyword arguments.
* 10.4.0: Positional arguments of pywikibot.Coordinateare deprecated and must be given as
keyword arguments.
* 10.3.0: throttle.Throttle.getDelayand throttle.Throttle.setDelayswere renamed to
get_delay()and set_delays()
; the old methods will be removed (T289318)
* 10.3.0: throttle.Throttle.next_multiplicityattribute is unused and will be removed
(T289318)
* 10.3.0: *requestsize* parameter of throttle.Throttlecall is deprecated and will be
dropped (T289318)
* 10.3.0: textlib.to_latin_digitswill be removed in favour of
textlib.to_ascii_digits, ``NON_LATIN_DIGITS`` of userinterfaces.transliteration
will be removed in favour of ``NON_ASCII_DIGITS`` (T398146#10958283)
* 10.2.0: tools.threading.RLockis deprecated and moved to backports
module. The backports.RLock.countmethod is also deprecated. For Python 3.14+ use ``RLock``
from Python library ``threading`` instead. (T395182)
* 10.1.0: *revid* and *date* parameters of Page.authorship()
were dropped
* 10.0.0: *last_id* of comms.eventstreams.EventStreamswas renamed to *last_event_id*
(T309380)
* 10.0.0: 'millenia' argument for *precision* parameter of pywikibot.WbTimeis deprecated;
'millennium' must be used instead
* 10.0.0: *includeredirects* parameter of pagegenerators.AllpagesPageGeneratorand
pagegenerators.PrefixingPageGeneratoris deprecated and should be replaced by *filterredir*
Pending removal in Pywikibot 12
-------------------------------
* 9.6.0: BaseSite.languages()will be removed in
favour of BaseSite.codes
* 9.5.0: DataSite.getPropertyType()will be removed
in favour of DataSite.get_property_type()
* 9.3.0: page.BasePage.userNameand page.BasePage.isIpEditare deprecated in favour of
``user`` or ``anon`` attributes of page.BasePage.latest_revisionproperty
* 9.3.0: *botflag* parameter of Page.save(), Page.put()
and
Page.set_redirect_target()was renamed to *bot*
* 9.2.0: All parameters of Page.templatesand
Page.itertemplates()must be given as keyworded arguments
* 9.2.0: Imports of loggingfunctions from the botmodule are deprecated and will be desupported
* 9.2.0: *total* argument in ``-logevents`` pagegenerators option is deprecated;
use ``-limit`` instead (T128981)
* 9.0.0: The *content* parameter of proofreadpage.IndexPage.page_genis deprecated and will be
ignored (T358635)
* 9.0.0: ``next`` parameter of userinterfaces.transliteration.Transliterator.transliteratewas
renamed to ``succ``
* 9.0.0: ``userinterfaces.transliteration.transliterator`` object was renamed to Transliterator
* 9.0.0: The ``type`` parameter of site.APISite.protectedpages()
was renamed to ``protect_type``
* 9.0.0: The ``all`` parameter of site.APISite.namespace()
was renamed to ``all_ns``
* 9.0.0: ``filter`` parameter of date.dhwas renamed to ``filter_func``
* 9.0.0: ``dict`` parameter of data.api.OptionSetwas renamed to ``data``
* 9.0.0: pywikibot.version.get_toolforge_hostnameis deprecated with no replacement
* 9.0.0: ``allrevisions`` parameter of xmlreader.XmpDumpis deprecated, use ``revisions`` instead
(T340804)
* 9.0.0: ``iteritems`` method of data.api.Requestwill be removed in favour of ``items``
* 9.0.0: ``SequenceOutputter.output()`` is deprecated in favour of the
tools.formatter.SequenceOutputter.outproperty
Pending removal in Pywikibot 11
-------------------------------
* 8.4.0: data.api.QueryGenerator.continuekeywill be removed in favour of
data.api.QueryGenerator.modules
* 8.4.0: The *modules_only_mode* parameter in the data.api.ParamInfoclass, its
*paraminfo_keys* class attribute, and its ``preloaded_modules`` property will be removed
* 8.4.0: The *dropdelay* and *releasepid* attributes of the throttle.Throttleclass will be
removed in favour of the *expiry* class attribute
* 8.2.0: The tools.itertools.itergroupfunction will be removed in favour of the
backports.batchedfunction
* 8.2.0: The *normalize* parameter in the pywikibot.WbTime.toTimestrand
pywikibot.WbTime.toWikibasemethods will be removed
* 8.1.0: The inheritance of the exceptions.NoSiteLinkErrorexception from
exceptions.NoPageErrorwill be removed
* 8.1.0: The ``exceptions.Server414Error`` exception is deprecated in favour of the
exceptions.Client414Errorexception
* 8.0.0: The Timestamp.clone()method is deprecated in
favour of the ``Timestamp.replace()`` method
* 8.0.0: The family.Family.maximum_GET_lengthmethod is deprecated in favour of the
config.maximum_GET_lengthconfiguration option (T325957)
* 8.0.0: The ``addOnly`` parameter in the textlib.replaceLanguageLinksand
textlib.replaceCategoryLinksfunctions is deprecated in favour of ``add_only``
* 8.0.0: The regex attributes ``ptimeR``, ``ptimeznR``, ``pyearR``, ``pmonthR``, and ``pdayR`` of
the textlib.TimeStripperclass are deprecated in favour of the ``patterns`` attribute,
which is a textlib.TimeStripperPatternsobject
* 8.0.0: The ``groups`` attribute of the textlib.TimeStripperclass is deprecated in favour
of the textlib.TIMEGROUPSconstant
* 8.0.0: The LoginManager.get_login_tokenmethod
has been replaced by ``login.ClientLoginManager.site.tokens['login']``
* 8.0.0: The ``data.api.LoginManager()`` constructor is deprecated in favour of the
login.ClientLoginManagerclass
* 8.0.0: The APISite.messages()method is
deprecated in favour of the userinfo['messages']
attribute
* 8.0.0: The Page.editTime()method is deprecated and should be
replaced by the Page.latest_revision.timestampattribute
Release history
===============
See https://github.com/wikimedia/pywikibot/blob/stable/HISTORY.rst
Contributing
============
Our code is maintained on Wikimedia's `Gerrit installation <https://gerrit.wikimedia.org/>`_,
`learn <https://www.mediawiki.org/wiki/Developer_account>`_ how to get
started.
Code of Conduct
===============
The development of this software is covered by a
`Code of Conduct <https://www.mediawiki.org/wiki/Special:MyLanguage/Code_of_Conduct>`_.
Raw data
{
"_id": null,
"home_page": null,
"name": "pywikibot",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8.0",
"maintainer_email": "The Pywikibot team <pywikibot@lists.wikimedia.org>",
"keywords": "API, bot, client, framework, mediawiki, pwb, pybot, python, pywiki, pywikibase, pywikibot, pywikipedia, pywikipediabot, wiki, wikibase, wikidata, wikimedia, wikipedia",
"author": null,
"author_email": "xqt <info@gno.de>",
"download_url": "https://files.pythonhosted.org/packages/1c/58/4cfe574685543c9a4721d126374b0957bf5d78e85c1bbe4a92a61dc8b9a6/pywikibot-10.4.0.tar.gz",
"platform": null,
"description": ".. image:: https://github.com/wikimedia/pywikibot/actions/workflows/pywikibot-ci.yml/badge.svg?branch=master\r\n :alt: GitHub CI\r\n :target: https://github.com/wikimedia/pywikibot/actions/workflows/pywikibot-ci.yml\r\n.. image:: https://codecov.io/gh/wikimedia/pywikibot/branch/master/graph/badge.svg\r\n :alt: Code coverage\r\n :target: https://app.codecov.io/gh/wikimedia/pywikibot\r\n.. image:: https://img.shields.io/pypi/pyversions/pywikibot.svg\r\n :alt: Python\r\n :target: https://www.python.org/downloads/\r\n.. image:: https://img.shields.io/github/languages/top/wikimedia/pywikibot\r\n :alt: Top language\r\n :target: https://www.python.org/downloads/\r\n.. image:: https://img.shields.io/pypi/v/pywikibot.svg\r\n :alt: Pywikibot release\r\n :target: https://pypi.org/project/pywikibot/\r\n.. image:: https://img.shields.io/pypi/wheel/pywikibot\r\n :alt: wheel\r\n :target: https://pypi.org/project/pywikibot/\r\n.. image:: https://static.pepy.tech/badge/pywikibot\r\n :alt: Total downloads\r\n :target: https://pepy.tech/project/pywikibot\r\n.. image:: https://static.pepy.tech/personalized-badge/pywikibot?period=month&units=international_system&left_color=black&right_color=blue&left_text=monthly\r\n :alt: Monthly downloads\r\n :target: https://pepy.tech/project/pywikibot\r\n.. image:: https://img.shields.io/github/last-commit/wikimedia/pywikibot\r\n :alt: Last commit\r\n :target: https://gerrit.wikimedia.org/r/plugins/gitiles/pywikibot/core/\r\n.. image:: https://snyk.io/advisor/python/pywikibot/badge.svg\r\n :target: https://snyk.io/advisor/python/pywikibot\r\n :alt: pywikibot\r\n\r\n\r\n*********\r\nPywikibot\r\n*********\r\n\r\nThe Pywikibot framework is a Python library that interfaces with the\r\n`MediaWiki API <https://www.mediawiki.org/wiki/API:Main_page>`_\r\nversion 1.31 or higher.\r\n\r\nAlso included are various general function scripts that can be adapted for\r\ndifferent tasks.\r\n\r\nFor further information about the library excluding scripts see\r\nthe full `code documentation <https://doc.wikimedia.org/pywikibot/stable/>`_.\r\n\r\nQuick start\r\n===========\r\n\r\n.. code:: text\r\n\r\n git clone https://gerrit.wikimedia.org/r/pywikibot/core.git\r\n cd core\r\n git submodule update --init\r\n pip install -r requirements.txt\r\n python pwb.py <script_name>\r\n\r\nOr to install using PyPI (excluding scripts)\r\n\r\n.. code:: text\r\n\r\n pip install pywikibot\r\n pwb <scriptname>\r\n\r\nOur `installation\r\nguide <https://www.mediawiki.org/wiki/Manual:Pywikibot/Installation>`_\r\nhas more details for advanced usage.\r\n\r\nBasic Usage\r\n===========\r\n\r\nIf you wish to write your own script it's very easy to get started:\r\n\r\n.. code:: python\r\n\r\n import pywikibot\r\n site = pywikibot.Site('en', 'wikipedia') # The site we want to run our bot on\r\n page = pywikibot.Page(site, 'Wikipedia:Sandbox')\r\n page.text = page.text.replace('foo', 'bar')\r\n page.save('Replacing \"foo\" with \"bar\"') # Saves the page\r\n\r\nWikibase Usage\r\n==============\r\n\r\nWikibase is a flexible knowledge base software that drives Wikidata.\r\nA sample pywikibot script for getting data from Wikibase:\r\n\r\n.. code:: python\r\n\r\n import pywikibot\r\n site = pywikibot.Site('wikipedia:en')\r\n repo = site.data_repository() # the Wikibase repository for given site\r\n page = repo.page_from_repository('Q91') # create a local page for the given item\r\n item = pywikibot.ItemPage(repo, 'Q91') # a repository item\r\n data = item.get() # get all item data from repository for this item\r\n\r\nScript example\r\n==============\r\n\r\nPywikibot provides bot classes to develop your own script easily:\r\n\r\n.. code:: python\r\n\r\n import pywikibot\r\n from pywikibot import pagegenerators\r\n from pywikibot.bot import ExistingPageBot\r\n\r\n class MyBot(ExistingPageBot):\r\n\r\n update_options = {\r\n 'text': 'This is a test text',\r\n 'summary': 'Bot: a bot test edit with Pywikibot.'\r\n }\r\n\r\n def treat_page(self):\r\n \"\"\"Load the given page, do some changes, and save it.\"\"\"\r\n text = self.current_page.text\r\n text += '\\n' + self.opt.text\r\n self.put_current(text, summary=self.opt.summary)\r\n\r\n def main():\r\n \"\"\"Parse command line arguments and invoke bot.\"\"\"\r\n options = {}\r\n gen_factory = pagegenerators.GeneratorFactory()\r\n # Option parsing\r\n local_args = pywikibot.handle_args(args) # global options\r\n local_args = gen_factory.handle_args(local_args) # generators options\r\n for arg in local_args:\r\n opt, sep, value = arg.partition(':')\r\n if opt in ('-summary', '-text'):\r\n options[opt[1:]] = value\r\n MyBot(generator=gen_factory.getCombinedGenerator(), **options).run()\r\n\r\n if __name == '__main__':\r\n main()\r\n\r\n\r\nFor more documentation on Pywikibot see our `docs <https://doc.wikimedia.org/pywikibot/>`_.\r\n\r\n\r\nRoadmap\r\n=======\r\n\r\nCurrent Release Changes\r\n=======================\r\n\r\n* Apply client-side filtering for *maxsize* in misermode in\r\n Site.allpages()(T402995)\r\n* Add filter_func()and filter_item()\r\n filter function in APIGeneratorBase\r\n and modify `generator` property to implement filtering in\r\n `APIGeneratorBase` subclasses (T402995)\r\n* All parameters of Site.allpages()\r\n except *start* must be given as keyword arguments.\r\n* Add support for bewwiktionary (T402136)\r\n* Add user-agent header to eventstreamsrequests (T402796)\r\n* Update i18n\r\n* Save global options in bot.global_args(T250034)\r\n* Update pluralforms from unicode.org (T114978)\r\n* Add textlib.SectionListto hold textlib.Content.sections(T401464)\r\n* pywikibot.Coordinateparameters are keyword only\r\n* Add *strict* parameter to Site.unconnected_pages()\r\n and pagegenerators.UnconnectedPageGenerator\r\n (T401699)\r\n* Raise ValueError if a VAR_POSITIONAL parameter like *\\*args* is used with\r\n tools.deprecate_positionalsdecorator\r\n* Add get_value_at_timestamp()API\r\n to pywikibot.ItemPage(T400612)\r\n* Clean up setupmodule (T396356)\r\n* Implement pywikibot.ItemPage.get_best_claim(T400610)\r\n* Add *expiry* parameter to BasePage.watch()and\r\n Site.watch(); fix the methods to return False if\r\n page is missing and no expiry is set (T330839)\r\n\r\n\r\nDeprecations\r\n============\r\n\r\nPending removal in Pywikibot 13\r\n-------------------------------\r\n\r\n* 10.4.0: Require all parameters of Site.allpages()\r\n except *start* to be keyword arguments.\r\n* 10.4.0: Positional arguments of pywikibot.Coordinateare deprecated and must be given as\r\n keyword arguments.\r\n* 10.3.0: throttle.Throttle.getDelayand throttle.Throttle.setDelayswere renamed to\r\n get_delay()and set_delays()\r\n ; the old methods will be removed (T289318)\r\n* 10.3.0: throttle.Throttle.next_multiplicityattribute is unused and will be removed\r\n (T289318)\r\n* 10.3.0: *requestsize* parameter of throttle.Throttlecall is deprecated and will be\r\n dropped (T289318)\r\n* 10.3.0: textlib.to_latin_digitswill be removed in favour of\r\n textlib.to_ascii_digits, ``NON_LATIN_DIGITS`` of userinterfaces.transliteration\r\n will be removed in favour of ``NON_ASCII_DIGITS`` (T398146#10958283)\r\n* 10.2.0: tools.threading.RLockis deprecated and moved to backports\r\n module. The backports.RLock.countmethod is also deprecated. For Python 3.14+ use ``RLock``\r\n from Python library ``threading`` instead. (T395182)\r\n* 10.1.0: *revid* and *date* parameters of Page.authorship()\r\n were dropped\r\n* 10.0.0: *last_id* of comms.eventstreams.EventStreamswas renamed to *last_event_id*\r\n (T309380)\r\n* 10.0.0: 'millenia' argument for *precision* parameter of pywikibot.WbTimeis deprecated;\r\n 'millennium' must be used instead\r\n* 10.0.0: *includeredirects* parameter of pagegenerators.AllpagesPageGeneratorand\r\n pagegenerators.PrefixingPageGeneratoris deprecated and should be replaced by *filterredir*\r\n\r\n\r\nPending removal in Pywikibot 12\r\n-------------------------------\r\n\r\n* 9.6.0: BaseSite.languages()will be removed in\r\n favour of BaseSite.codes\r\n* 9.5.0: DataSite.getPropertyType()will be removed\r\n in favour of DataSite.get_property_type()\r\n* 9.3.0: page.BasePage.userNameand page.BasePage.isIpEditare deprecated in favour of\r\n ``user`` or ``anon`` attributes of page.BasePage.latest_revisionproperty\r\n* 9.3.0: *botflag* parameter of Page.save(), Page.put()\r\n and\r\n Page.set_redirect_target()was renamed to *bot*\r\n* 9.2.0: All parameters of Page.templatesand\r\n Page.itertemplates()must be given as keyworded arguments\r\n* 9.2.0: Imports of loggingfunctions from the botmodule are deprecated and will be desupported\r\n* 9.2.0: *total* argument in ``-logevents`` pagegenerators option is deprecated;\r\n use ``-limit`` instead (T128981)\r\n* 9.0.0: The *content* parameter of proofreadpage.IndexPage.page_genis deprecated and will be\r\n ignored (T358635)\r\n* 9.0.0: ``next`` parameter of userinterfaces.transliteration.Transliterator.transliteratewas\r\n renamed to ``succ``\r\n* 9.0.0: ``userinterfaces.transliteration.transliterator`` object was renamed to Transliterator\r\n \r\n* 9.0.0: The ``type`` parameter of site.APISite.protectedpages()\r\n was renamed to ``protect_type``\r\n* 9.0.0: The ``all`` parameter of site.APISite.namespace()\r\n was renamed to ``all_ns``\r\n* 9.0.0: ``filter`` parameter of date.dhwas renamed to ``filter_func``\r\n* 9.0.0: ``dict`` parameter of data.api.OptionSetwas renamed to ``data``\r\n* 9.0.0: pywikibot.version.get_toolforge_hostnameis deprecated with no replacement\r\n* 9.0.0: ``allrevisions`` parameter of xmlreader.XmpDumpis deprecated, use ``revisions`` instead\r\n (T340804)\r\n* 9.0.0: ``iteritems`` method of data.api.Requestwill be removed in favour of ``items``\r\n* 9.0.0: ``SequenceOutputter.output()`` is deprecated in favour of the\r\n tools.formatter.SequenceOutputter.outproperty\r\n\r\n\r\nPending removal in Pywikibot 11\r\n-------------------------------\r\n\r\n* 8.4.0: data.api.QueryGenerator.continuekeywill be removed in favour of\r\n data.api.QueryGenerator.modules\r\n* 8.4.0: The *modules_only_mode* parameter in the data.api.ParamInfoclass, its\r\n *paraminfo_keys* class attribute, and its ``preloaded_modules`` property will be removed\r\n* 8.4.0: The *dropdelay* and *releasepid* attributes of the throttle.Throttleclass will be\r\n removed in favour of the *expiry* class attribute\r\n* 8.2.0: The tools.itertools.itergroupfunction will be removed in favour of the\r\n backports.batchedfunction\r\n* 8.2.0: The *normalize* parameter in the pywikibot.WbTime.toTimestrand\r\n pywikibot.WbTime.toWikibasemethods will be removed\r\n* 8.1.0: The inheritance of the exceptions.NoSiteLinkErrorexception from\r\n exceptions.NoPageErrorwill be removed\r\n* 8.1.0: The ``exceptions.Server414Error`` exception is deprecated in favour of the\r\n exceptions.Client414Errorexception\r\n* 8.0.0: The Timestamp.clone()method is deprecated in\r\n favour of the ``Timestamp.replace()`` method\r\n* 8.0.0: The family.Family.maximum_GET_lengthmethod is deprecated in favour of the\r\n config.maximum_GET_lengthconfiguration option (T325957)\r\n* 8.0.0: The ``addOnly`` parameter in the textlib.replaceLanguageLinksand\r\n textlib.replaceCategoryLinksfunctions is deprecated in favour of ``add_only``\r\n* 8.0.0: The regex attributes ``ptimeR``, ``ptimeznR``, ``pyearR``, ``pmonthR``, and ``pdayR`` of\r\n the textlib.TimeStripperclass are deprecated in favour of the ``patterns`` attribute,\r\n which is a textlib.TimeStripperPatternsobject\r\n* 8.0.0: The ``groups`` attribute of the textlib.TimeStripperclass is deprecated in favour\r\n of the textlib.TIMEGROUPSconstant\r\n* 8.0.0: The LoginManager.get_login_tokenmethod\r\n has been replaced by ``login.ClientLoginManager.site.tokens['login']``\r\n* 8.0.0: The ``data.api.LoginManager()`` constructor is deprecated in favour of the\r\n login.ClientLoginManagerclass\r\n* 8.0.0: The APISite.messages()method is\r\n deprecated in favour of the userinfo['messages']\r\n attribute\r\n* 8.0.0: The Page.editTime()method is deprecated and should be\r\n replaced by the Page.latest_revision.timestampattribute\r\n\r\nRelease history\r\n===============\r\n\r\nSee https://github.com/wikimedia/pywikibot/blob/stable/HISTORY.rst\r\n\r\nContributing\r\n============\r\n\r\nOur code is maintained on Wikimedia's `Gerrit installation <https://gerrit.wikimedia.org/>`_,\r\n`learn <https://www.mediawiki.org/wiki/Developer_account>`_ how to get\r\nstarted.\r\n\r\nCode of Conduct\r\n===============\r\n\r\nThe development of this software is covered by a\r\n`Code of Conduct <https://www.mediawiki.org/wiki/Special:MyLanguage/Code_of_Conduct>`_.\r\n",
"bugtrack_url": null,
"license": "MIT License",
"summary": "Python MediaWiki Bot Framework",
"version": "10.4.0",
"project_urls": {
"Changelog": "https://doc.wikimedia.org/pywikibot/master/changelog.html",
"Documentation": "https://doc.wikimedia.org/pywikibot/stable/",
"Download": "https://www.pywikibot.org",
"GitHub Mirror": "https://github.com/wikimedia/pywikibot",
"Homepage": "https://www.mediawiki.org/wiki/Manual:Pywikibot",
"Repository": "https://gerrit.wikimedia.org/r/plugins/gitiles/pywikibot/core/",
"Tracker": "https://phabricator.wikimedia.org/tag/pywikibot/"
},
"split_keywords": [
"api",
" bot",
" client",
" framework",
" mediawiki",
" pwb",
" pybot",
" python",
" pywiki",
" pywikibase",
" pywikibot",
" pywikipedia",
" pywikipediabot",
" wiki",
" wikibase",
" wikidata",
" wikimedia",
" wikipedia"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "e511c52528c52402e698a459c8b575b3c8f2b83048a110dd708dbd06a5fbc227",
"md5": "af34ea6eb1481488e6d2cd6519468309",
"sha256": "d905fd682bfaad16f5d32e328cd8f8b34dfe1be63757727007b72f3367c81c53"
},
"downloads": -1,
"filename": "pywikibot-10.4.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "af34ea6eb1481488e6d2cd6519468309",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8.0",
"size": 730672,
"upload_time": "2025-08-31T07:28:00",
"upload_time_iso_8601": "2025-08-31T07:28:00.974319Z",
"url": "https://files.pythonhosted.org/packages/e5/11/c52528c52402e698a459c8b575b3c8f2b83048a110dd708dbd06a5fbc227/pywikibot-10.4.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "1c584cfe574685543c9a4721d126374b0957bf5d78e85c1bbe4a92a61dc8b9a6",
"md5": "9d723630f8c6db40ca0cebafbbcfc5c9",
"sha256": "6690ffcd31d40d1fe8c0ff52ed64e2a59a0626e1ddb0e46cfbbc36deed48af17"
},
"downloads": -1,
"filename": "pywikibot-10.4.0.tar.gz",
"has_sig": false,
"md5_digest": "9d723630f8c6db40ca0cebafbbcfc5c9",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8.0",
"size": 629411,
"upload_time": "2025-08-31T07:28:03",
"upload_time_iso_8601": "2025-08-31T07:28:03.165181Z",
"url": "https://files.pythonhosted.org/packages/1c/58/4cfe574685543c9a4721d126374b0957bf5d78e85c1bbe4a92a61dc8b9a6/pywikibot-10.4.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-08-31 07:28:03",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "wikimedia",
"github_project": "pywikibot",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [
{
"name": "mwparserfromhell",
"specs": [
[
">=",
"0.5.2"
]
]
},
{
"name": "packaging",
"specs": []
},
{
"name": "requests",
"specs": [
[
">=",
"2.31.0"
]
]
},
{
"name": "wikitextparser",
"specs": [
[
">=",
"0.56.3"
]
]
},
{
"name": "PyJWT",
"specs": [
[
"!=",
"2.10.0"
],
[
"!=",
"2.10.1"
]
]
},
{
"name": "mwoauth",
"specs": [
[
">=",
"0.2.4"
],
[
"!=",
"0.3.1"
]
]
},
{
"name": "pydot",
"specs": [
[
">=",
"3.0.2"
]
]
},
{
"name": "python-stdnum",
"specs": [
[
">=",
"1.20"
]
]
},
{
"name": "Pillow",
"specs": [
[
">=",
"11.1.0"
]
]
},
{
"name": "Pillow",
"specs": [
[
"==",
"10.4.0"
]
]
},
{
"name": "googlesearch-python",
"specs": [
[
">=",
"1.3.0"
]
]
},
{
"name": "requests-sse",
"specs": [
[
">=",
"0.5.0"
]
]
},
{
"name": "PyMySQL",
"specs": [
[
">=",
"1.1.1"
]
]
},
{
"name": "beautifulsoup4",
"specs": [
[
">=",
"4.7.1"
]
]
},
{
"name": "memento_client",
"specs": [
[
"==",
"0.6.1"
]
]
}
],
"tox": true,
"lcname": "pywikibot"
}