pywikibot


Namepywikibot JSON
Version 9.0.0 PyPI version JSON
download
home_page
SummaryPython MediaWiki Bot Framework
upload_time2024-03-08 09:41:09
maintainer
docs_urlNone
author
requires_python>=3.7.0
licenseMIT License
keywords api bot client framework mediawiki pwb pybot python pywiki pywikibase pywikibot pywikipedia pywikipediabot wiki wikibase wikidata wikimedia wikipedia
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage
            .. 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://ci.appveyor.com/api/projects/status/xo2g4ctoom8k6yvw/branch/master?svg=true
   :alt: AppVeyor Build Status
   :target: https://ci.appveyor.com/project/pywikibot-core/pywikibot
.. 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://api.codeclimate.com/v1/badges/de6ca4c66e7c7bee4156/maintainability
   :alt: Maintainability
   :target: https://codeclimate.com/github/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/

*********
Pywikibot
*********

The Pywikibot framework is a Python library that interfaces with the
`MediaWiki API <https://www.mediawiki.org/wiki/API:Main_page>`_
version 1.27 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
---------------

Improvements
^^^^^^^^^^^^

* Python 3.13 is supported
* Update tools._unidata._category_cf from Unicodedata version 15.1.0
* Timestamp.nowutc()and
  Timestamp.utcnow()were added (T337748)
* Remove content parameter of proofreadpage.IndexPage.page_genmethod. (T358635)
* Backport ``itertools.batched`` from Python 3.13 to backports.batched
* A copy button was added to the sphinx documentation.
* Make languages_by_sizedynamic (T78396). The property is
  only available for family.WikimediaFamilyfamilies. The ``wikimedia_sites.py`` maintenance script was
  removed.
* Add config.base_dirto scripts search path with pwbwrapper (T324287)
* pywikibot.WbTime.equal_instantwas added (T325248)
* ``revisions`` parameter of xmlreader.XmlDumpwas introduced to specify parsing method
  (T340804)
* Pass global -nolog argument into bot script from wrapper (T328900)
* Add site.APISite.ratelimit()method
  and tools.collections.RateLimitNamedTuple (T304808)
* L10N and i18n updates
* Add pagegenerators.PagePilePageGenerator(T353086)

Bugfixes
^^^^^^^^

* Timestamp.now()and
  Timestamp.fromtimestamp()also returns a
  Timestampobject with Python 3.7
* Populate pywikibot.MediaInfo._content with expected attributes when loaded (T357608)
* Raise exceptions.APIErrorif the same error comes twice within data.api.Request.submitloop
  (T357870)
* Only delegate sitemethods to public family.Familymethods which have *code* as first parameter.
* Use ``str`` instead of ``repr`` for several messages with family.Familyobjects (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 xmlreadermodule (T354095)
* Suppress error in cosmetic_changes.CosmeticChangesToolkit.cleanUpLinks(T337045)
* pywikibot.input_choicevalidates *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()
  if *redirects* parameter is invalid.
* A RuntimeError will be raised if a family.Familysubclass has an ``__init__`` initializer method.
  family.Family.__post_init__classmethod can be used instead.
* InteractiveReplacewas moved from botto bot_choicemodule
* ``userinterfaces.transliteration.transliterator`` was renamed to Transliterator
  
* ``pywikibot.BaseSite`` and ``pywikibotAPISite`` were dropped. pywikibot.Sitehas to be used to create a
  siteobject.
* ``next`` parameter of userinterfaces.transliteration.Transliterator.transliteratewas renamed to ``succ``
* ``type`` parameter of site.APISite.protectedpages()
  was renamed to ``protect_type``
* ``all`` parameter of site.APISite.namespace()was renamed to
  ``all_ns``
* ``filter`` parameter of date.dhwas renamed to ``filter_func``
* ``dict`` parameter of data.api.OptionSetwas renamed to ``data``
* ``setuptools`` package is no longer mandatory but required for tests
  (T340640, T347052, T354515)
* ``root`` attribute of xmlreader.XmlDumpwas 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 toolsmodule were removed
* Calling site.BaseSite.sitenameas 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.Requestgives a view instead a list (T310953)
* ``SequenceOutputter.format_list()`` was removed in favour of tools.formatter.SequenceOutputter.outproperty
* *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_generatorsmust 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_generatorsmust 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)


Deprecations
------------

* 9.0.0: The *content* parameter of proofreadpage.IndexPage.page_genis deprecated and will be ignored
  (T358635)
* 9.0.0: ``userinterfaces.transliteration.transliterator`` was renamed to Transliterator
  
* 9.0.0: ``next`` parameter of userinterfaces.transliteration.transliterator.transliteratewas renamed to
  ``succ``
* 9.0.0: ``type`` parameter of site.APISite.protectedpages()
  was renamed to ``protect_type``
* 9.0.0: ``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_hostname()`` is deprecated without 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 tools.formatter.SequenceOutputter.out
  property
* 9.0.0: *nullcontext* context manager and *SimpleQueue* queue of backportsare derecated
* 8.4.0: *modules_only_mode* parameter of data.api.ParamInfo, its *paraminfo_keys* class attribute
  and its preloaded_modules property will be removed
* 8.4.0: *dropdelay* and *releasepid* attributes of throttle.Throttlewill be removed
  in favour of *expiry* class attribute
* 8.2.0: tools.itertools.itergroupwill be removed in favour of backports.batched
* 8.2.0: *normalize* parameter of WbTime.toTimestrand WbTime.toWikibasewill be removed
* 8.1.0: Dependency of exceptions.NoSiteLinkErrorfrom exceptions.NoPageErrorwill be removed
* 8.1.0: ``exceptions.Server414Error`` is deprecated in favour of exceptions.Client414Error
* 8.0.0: Timestamp.clone()method is deprecated
  in favour of ``Timestamp.replace()`` method.
* 8.0.0: family.Family.maximum_GET_lengthmethod is deprecated in favour of
  config.maximum_GET_length(T325957)
* 8.0.0: ``addOnly`` parameter of textlib.replaceLanguageLinksand
  textlib.replaceCategoryLinksare deprecated in favour of ``add_only``
* 8.0.0: textlib.TimeStripperregex attributes ``ptimeR``, ``ptimeznR``, ``pyearR``, ``pmonthR``,
  ``pdayR`` are deprecated in favour of ``patterns`` attribute which is a
  textlib.TimeStripperPatterns.
* 8.0.0: textlib.TimeStripper``groups`` attribute is deprecated in favour of ``textlib.TIMEGROUPS``
* 8.0.0: LoginManager.get_login_tokenwas
  replaced by ``login.ClientLoginManager.site.tokens['login']``
* 8.0.0: ``data.api.LoginManager()`` is deprecated in favour of login.ClientLoginManager
* 8.0.0: APISite.messages()method is deprecated in favour of
  userinfo['messages']
* 8.0.0: Page.editTime()method is deprecated and should be replaced by
  Page.latest_revision.timestamp


Will be removed in Pywikibot 10
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

* 7.7.0: tools.threadingclasses should no longer imported from tools
* 7.6.0: tools.itertoolsdatatypes should no longer imported from tools
* 7.6.0: tools.collectionsdatatypes should no longer imported from tools
* 7.5.0: textlib.tzoneFixedOffset class will be removed in favour of time.TZoneFixedOffset
* 7.4.0: ``FilePage.usingPages()`` was renamed to using_pages()
* 7.3.0: Old color escape sequences like ``\03{color}`` is deprecated in favour of new color format like <<color>>
* 7.3.0: ``linkitrail`` method of family.Familyis deprecated; use APISite.linktrail()
  instead
* 7.2.0: ``tb`` parameter of exception()function was renamed to ``exc_info``
* 7.2.0: XMLDumpOldPageGenerator is deprecated in favour of a ``content`` parameter of
  XMLDumpPageGenerator(T306134)
* 7.2.0: RedirectPageBot and NoRedirectPageBot bot classes are deprecated in favour of
  use_redirectsattribute
* 7.2.0: tools.formatter.color_formatis deprecated and will be removed
* 7.1.0: Unused ``get_redirect`` parameter of Page.getOldVersion()will be removed
* 7.0.0: User.isBlocked() method is renamed to is_blocked for consistency
* 7.0.0: A boolean watch parameter in Page.save() is deprecated and will be desupported
* 7.0.0: baserevid parameter of editSource(), editQualifier(), removeClaims(), removeSources(), remove_qualifiers()
  DataSite methods will be removed
* 7.0.0: Values of APISite.allpages() parameter filterredir other than True, False and None are deprecated
* 7.0.0: The i18n identifier 'cosmetic_changes-append' will be removed in favour of 'pywikibot-cosmetic-changes'

Release history
===============

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": "",
    "name": "pywikibot",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.7.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": "",
    "author_email": "xqt <info@gno.de>",
    "download_url": "https://files.pythonhosted.org/packages/af/06/7e28b4ebb1bfd176e5094807254660a35ba4a63e1ef0b050051621454722/pywikibot-9.0.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://ci.appveyor.com/api/projects/status/xo2g4ctoom8k6yvw/branch/master?svg=true\r\n   :alt: AppVeyor Build Status\r\n   :target: https://ci.appveyor.com/project/pywikibot-core/pywikibot\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://api.codeclimate.com/v1/badges/de6ca4c66e7c7bee4156/maintainability\r\n   :alt: Maintainability\r\n   :target: https://codeclimate.com/github/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\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.27 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\r\n---------------\r\n\r\nImprovements\r\n^^^^^^^^^^^^\r\n\r\n* Python 3.13 is supported\r\n* Update tools._unidata._category_cf from Unicodedata version 15.1.0\r\n* Timestamp.nowutc()and\r\n  Timestamp.utcnow()were added (T337748)\r\n* Remove content parameter of proofreadpage.IndexPage.page_genmethod. (T358635)\r\n* Backport ``itertools.batched`` from Python 3.13 to backports.batched\r\n* A copy button was added to the sphinx documentation.\r\n* Make languages_by_sizedynamic (T78396). The property is\r\n  only available for family.WikimediaFamilyfamilies. The ``wikimedia_sites.py`` maintenance script was\r\n  removed.\r\n* Add config.base_dirto scripts search path with pwbwrapper (T324287)\r\n* pywikibot.WbTime.equal_instantwas added (T325248)\r\n* ``revisions`` parameter of xmlreader.XmlDumpwas introduced to specify parsing method\r\n  (T340804)\r\n* Pass global -nolog argument into bot script from wrapper (T328900)\r\n* Add site.APISite.ratelimit()method\r\n  and tools.collections.RateLimitNamedTuple (T304808)\r\n* L10N and i18n updates\r\n* Add pagegenerators.PagePilePageGenerator(T353086)\r\n\r\nBugfixes\r\n^^^^^^^^\r\n\r\n* Timestamp.now()and\r\n  Timestamp.fromtimestamp()also returns a\r\n  Timestampobject with Python 3.7\r\n* Populate pywikibot.MediaInfo._content with expected attributes when loaded (T357608)\r\n* Raise exceptions.APIErrorif the same error comes twice within data.api.Request.submitloop\r\n  (T357870)\r\n* Only delegate sitemethods to public family.Familymethods which have *code* as first parameter.\r\n* Use ``str`` instead of ``repr`` for several messages with family.Familyobjects (T356782)\r\n* Add ``hy`` to special languages in textlib.TimeStripper(T356175)\r\n* Pass login token when using ``action=login`` (T309898)\r\n* Detect range blocks with pywikibot.User.is_blocked(T301282)\r\n* Use only ``end`` tags in ElementTree.iterparse in xmlreadermodule (T354095)\r\n* Suppress error in cosmetic_changes.CosmeticChangesToolkit.cleanUpLinks(T337045)\r\n* pywikibot.input_choicevalidates *default* parameter (T353097)\r\n* Remove typing imports from user-config.py file (T352965)\r\n\r\nBreaking changes and code cleanups\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\n* Cache directory was renamed from ``apicache-py3`` to ``apicache`` due to timestamp changes. (T337748)\r\n  **Warning:** Do not use Pywikibot 9+ together with Pywikibot 3.0.20181203 and below.\r\n* Raise ``TypeError`` instead of ``AttributeError`` in Site.randompages()\r\n  if *redirects* parameter is invalid.\r\n* A RuntimeError will be raised if a family.Familysubclass has an ``__init__`` initializer method.\r\n  family.Family.__post_init__classmethod can be used instead.\r\n* InteractiveReplacewas moved from botto bot_choicemodule\r\n* ``userinterfaces.transliteration.transliterator`` was renamed to Transliterator\r\n  \r\n* ``pywikibot.BaseSite`` and ``pywikibotAPISite`` were dropped. pywikibot.Sitehas to be used to create a\r\n  siteobject.\r\n* ``next`` parameter of userinterfaces.transliteration.Transliterator.transliteratewas renamed to ``succ``\r\n* ``type`` parameter of site.APISite.protectedpages()\r\n  was renamed to ``protect_type``\r\n* ``all`` parameter of site.APISite.namespace()was renamed to\r\n  ``all_ns``\r\n* ``filter`` parameter of date.dhwas renamed to ``filter_func``\r\n* ``dict`` parameter of data.api.OptionSetwas renamed to ``data``\r\n* ``setuptools`` package is no longer mandatory but required for tests\r\n  (T340640, T347052, T354515)\r\n* ``root`` attribute of xmlreader.XmlDumpwas removed\r\n* ``tools.Version`` class was removed; use classes from ``packaging.version`` instead (T340640)\r\n* ``packaging`` package is mandatory; ``importlib_metadata`` package is required for Python 3.7 (T340640)\r\n* ``SelfCallMixin``, ``SelfCallDict`` and ``SelfCallString`` of toolsmodule were removed\r\n* Calling site.BaseSite.sitenameas a function\r\n  is no longer supported\r\n* ``config.register_family_file()`` function was removed\r\n* require ``PyMySQL >= 1.0.0`` if necessary\r\n* ``keys()`` and ``items()`` methods of data.api.Requestgives a view instead a list (T310953)\r\n* ``SequenceOutputter.format_list()`` was removed in favour of tools.formatter.SequenceOutputter.outproperty\r\n* *output* parameter of bot_choice.OutputProxyOption(i.e. ``OutputOption`` instance) without *out* property is\r\n  no longer supported\r\n* ``OutputOption.output()`` method was removed\r\n* ``ContextOption.output_range()`` and ``HighlightContextOption.output_range()`` methods were removed\r\n* ``page.url2unicode()`` function was removed in favour of tools.chars.url2string\r\n* *iterables* of tools.itertools.intersect_generatorsmust not be given as a single list or tuple;\r\n  either consecutive iterables must be used or '*' to unpack\r\n* *allow_duplicates* parameter of tools.itertools.intersect_generatorsmust be given as keyword argument\r\n* Infinite rotating file handler with ``config.logfilesize`` of -1 is no longer supported\r\n* ``Throttle.multiplydelay`` attribute was removed\r\n* Python 3.6 support was dropped (T347026)\r\n\r\n\r\nDeprecations\r\n------------\r\n\r\n* 9.0.0: The *content* parameter of proofreadpage.IndexPage.page_genis deprecated and will be ignored\r\n  (T358635)\r\n* 9.0.0: ``userinterfaces.transliteration.transliterator`` was renamed to Transliterator\r\n  \r\n* 9.0.0: ``next`` parameter of userinterfaces.transliteration.transliterator.transliteratewas renamed to\r\n  ``succ``\r\n* 9.0.0: ``type`` parameter of site.APISite.protectedpages()\r\n  was renamed to ``protect_type``\r\n* 9.0.0: ``all`` parameter of site.APISite.namespace()was renamed to\r\n  ``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_hostname()`` is deprecated without 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 tools.formatter.SequenceOutputter.out\r\n  property\r\n* 9.0.0: *nullcontext* context manager and *SimpleQueue* queue of backportsare derecated\r\n* 8.4.0: *modules_only_mode* parameter of data.api.ParamInfo, its *paraminfo_keys* class attribute\r\n  and its preloaded_modules property will be removed\r\n* 8.4.0: *dropdelay* and *releasepid* attributes of throttle.Throttlewill be removed\r\n  in favour of *expiry* class attribute\r\n* 8.2.0: tools.itertools.itergroupwill be removed in favour of backports.batched\r\n* 8.2.0: *normalize* parameter of WbTime.toTimestrand WbTime.toWikibasewill be removed\r\n* 8.1.0: Dependency of exceptions.NoSiteLinkErrorfrom exceptions.NoPageErrorwill be removed\r\n* 8.1.0: ``exceptions.Server414Error`` is deprecated in favour of exceptions.Client414Error\r\n* 8.0.0: Timestamp.clone()method is deprecated\r\n  in favour of ``Timestamp.replace()`` method.\r\n* 8.0.0: family.Family.maximum_GET_lengthmethod is deprecated in favour of\r\n  config.maximum_GET_length(T325957)\r\n* 8.0.0: ``addOnly`` parameter of textlib.replaceLanguageLinksand\r\n  textlib.replaceCategoryLinksare deprecated in favour of ``add_only``\r\n* 8.0.0: textlib.TimeStripperregex attributes ``ptimeR``, ``ptimeznR``, ``pyearR``, ``pmonthR``,\r\n  ``pdayR`` are deprecated in favour of ``patterns`` attribute which is a\r\n  textlib.TimeStripperPatterns.\r\n* 8.0.0: textlib.TimeStripper``groups`` attribute is deprecated in favour of ``textlib.TIMEGROUPS``\r\n* 8.0.0: LoginManager.get_login_tokenwas\r\n  replaced by ``login.ClientLoginManager.site.tokens['login']``\r\n* 8.0.0: ``data.api.LoginManager()`` is deprecated in favour of login.ClientLoginManager\r\n* 8.0.0: APISite.messages()method is deprecated in favour of\r\n  userinfo['messages']\r\n* 8.0.0: Page.editTime()method is deprecated and should be replaced by\r\n  Page.latest_revision.timestamp\r\n\r\n\r\nWill be removed in Pywikibot 10\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\n* 7.7.0: tools.threadingclasses should no longer imported from tools\r\n* 7.6.0: tools.itertoolsdatatypes should no longer imported from tools\r\n* 7.6.0: tools.collectionsdatatypes should no longer imported from tools\r\n* 7.5.0: textlib.tzoneFixedOffset class will be removed in favour of time.TZoneFixedOffset\r\n* 7.4.0: ``FilePage.usingPages()`` was renamed to using_pages()\r\n* 7.3.0: Old color escape sequences like ``\\03{color}`` is deprecated in favour of new color format like <<color>>\r\n* 7.3.0: ``linkitrail`` method of family.Familyis deprecated; use APISite.linktrail()\r\n  instead\r\n* 7.2.0: ``tb`` parameter of exception()function was renamed to ``exc_info``\r\n* 7.2.0: XMLDumpOldPageGenerator is deprecated in favour of a ``content`` parameter of\r\n  XMLDumpPageGenerator(T306134)\r\n* 7.2.0: RedirectPageBot and NoRedirectPageBot bot classes are deprecated in favour of\r\n  use_redirectsattribute\r\n* 7.2.0: tools.formatter.color_formatis deprecated and will be removed\r\n* 7.1.0: Unused ``get_redirect`` parameter of Page.getOldVersion()will be removed\r\n* 7.0.0: User.isBlocked() method is renamed to is_blocked for consistency\r\n* 7.0.0: A boolean watch parameter in Page.save() is deprecated and will be desupported\r\n* 7.0.0: baserevid parameter of editSource(), editQualifier(), removeClaims(), removeSources(), remove_qualifiers()\r\n  DataSite methods will be removed\r\n* 7.0.0: Values of APISite.allpages() parameter filterredir other than True, False and None are deprecated\r\n* 7.0.0: The i18n identifier 'cosmetic_changes-append' will be removed in favour of 'pywikibot-cosmetic-changes'\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\r\n",
    "bugtrack_url": null,
    "license": "MIT License",
    "summary": "Python MediaWiki Bot Framework",
    "version": "9.0.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": "",
            "digests": {
                "blake2b_256": "d3a56deca4067d30b2b1bdc9c6d9b5d810003222b7e1324abd667f77b27030ae",
                "md5": "9b45f2e55abdde884c57e37c01e7d971",
                "sha256": "09b786b2159d6e443d8447fc56b5f9bfa5478fbb7f587487ac7b3f42ba4cd51a"
            },
            "downloads": -1,
            "filename": "pywikibot-9.0.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "9b45f2e55abdde884c57e37c01e7d971",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.7.0",
            "size": 713783,
            "upload_time": "2024-03-08T09:41:05",
            "upload_time_iso_8601": "2024-03-08T09:41:05.508665Z",
            "url": "https://files.pythonhosted.org/packages/d3/a5/6deca4067d30b2b1bdc9c6d9b5d810003222b7e1324abd667f77b27030ae/pywikibot-9.0.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "af067e28b4ebb1bfd176e5094807254660a35ba4a63e1ef0b050051621454722",
                "md5": "f1a5e90ff547ba511733b9c9c5e3914c",
                "sha256": "82120dd4dd275a48c0eaa2a459faad928211e7b43cf6efe4110ad95e805e7317"
            },
            "downloads": -1,
            "filename": "pywikibot-9.0.0.tar.gz",
            "has_sig": false,
            "md5_digest": "f1a5e90ff547ba511733b9c9c5e3914c",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.7.0",
            "size": 612776,
            "upload_time": "2024-03-08T09:41:09",
            "upload_time_iso_8601": "2024-03-08T09:41:09.368749Z",
            "url": "https://files.pythonhosted.org/packages/af/06/7e28b4ebb1bfd176e5094807254660a35ba4a63e1ef0b050051621454722/pywikibot-9.0.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-03-08 09:41:09",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "wikimedia",
    "github_project": "pywikibot",
    "travis_ci": false,
    "coveralls": true,
    "github_actions": true,
    "appveyor": true,
    "requirements": [],
    "tox": true,
    "lcname": "pywikibot"
}
        
Elapsed time: 0.22156s