jenkins-bot has submitted this change. ( https://gerrit.wikimedia.org/r/c/pywikibot/core/+/1237961?usp=email )
Change subject: [11.1] Prepare next release
......................................................................
[11.1] Prepare next release
Change-Id: I3dc38ef952bbcdf32140f110c09bdf115c5753fb
---
M .pre-commit-config.yaml
M HISTORY.rst
M ROADMAP.rst
M pywikibot/__metadata__.py
M scripts/__init__.py
M scripts/pyproject.toml
6 files changed, 153 insertions(+), 146 deletions(-)
Approvals:
jenkins-bot: Verified
Xqt: Looks good to me, approved
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index c5af6e9..c0dd7ed 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -98,7 +98,7 @@
name: isort (skip future annotations)
files: ^(pwb|pywikibot/config)\.py$
- repo: https://github.com/jshwi/docsig
- rev: v0.77.0
+ rev: v0.78.0
hooks:
- id: docsig
exclude: ^(tests|scripts)
diff --git a/HISTORY.rst b/HISTORY.rst
index 489984a..ffa9cdf 100644
--- a/HISTORY.rst
+++ b/HISTORY.rst
@@ -1,6 +1,151 @@
Release History
===============
+11.0.0
+------
+*09 February 2026*
+
+**Improvements**
+
+* Use URL to bot's wiki page in :ref:`user_agent_format<Account Settings>` due to `Foundation UA
+ Policy <https://foundation.wikimedia.org/wiki/Policy:Wikimedia_Foundation_User-Agen…>`_.
+ (:phab:`T414173`, :phab:`T414201`)
+* Show Pywikibot version in deprecation warnings for :mod:`config` variables.
+* :ref:`config.pickle_protocol<Further Settings>` was updated from version `2` to `5`. Older pickle
+ files are still readable.
+* Enhance :meth:`throttle.Throttle.waittime` for read requests. (:phab:`T415891`)
+* :ref:`config.minthrottle<Settings to Avoid Server Overload>` may me a ``float``.
+ (:phab:`T414170`, :phab:`T416145`)
+* Implement :meth:`Site.abuselog()<pywikibot.site._generators.GeneratorsMixin.abuselog>` site
+ generator for :api:`AbuseLog` and :meth:`page.User.last_activity` method.
+ (:phab:`T396297`, :phab:`T396298`)
+* Use explicit utf-8 encoding with class:`GraphSavingThread.graph.write
+ <interwiki_graph.GraphSavingThread>` (:phab:`T415891`)
+* Optimize pickle file storage of :class:`WikiWho<page._toolforge.WikiWhoMixin>`
+ with subdirectory structure (:phab:`T414087`)
+* Make :class:`textlib.TimeStripper` more resilient for itwiki. (:phab:`T415880`)
+* Add :class:`WikiWho<page._toolforge.WikiWhoMixin>` API support. (:phab:`T414071`)
+* Never use None as key in WeakKeyDictionary within :class:`proofreadpage.TagAttrDesc`.
+ Class-level access returns the descriptor itself. (:phab:`T413563`)
+* *text_a* and *text_b* of :class:`diff.PatchManager` are positional-only parameters.
+ *by_letter* and *replace_invisible* are keyword-only parameters.
+* Optimize :func:`pagegenerators.SubCategoriesPageGenerator`
+* Consider ``retry_after`` in delay calculation of :meth:`throttle.Throttle.get_delay`.
+ (:phab:`T414354`)
+* Remove protocol swapping in :class:`data.api.Request`. (:phab:`T414369`)
+* Use environment variables ``PYWIKIBOT_USERNAME`` or ``PWB_USERNAME`` for ``User-Agent`` username
+ if username isn't set in :mod:`user-config.py<config>` for a given site. (:phab:`T414201`)
+* Add support for beta site in :class:`families.meta_family.Family` (:phab:`T413060`)
+* Add user agent to :class:`data.api.Request` error log (:phab:`T414170`)
+* Increase performance of delegation for :class:`BaseSite<pywikibot.site._basesite.BaseSite>`
+ methods to :class:`family.Family` methods (:phab:`T413398`)
+* Use ``queue.shutdown()`` for the async_manager queue
+* Use :class:`backports.RLock` instead of Queue to signal async_manager activity (:phab:`T147178`)
+* Add :meth:`User.is_partial_blocked()<pywikibot.User.is_partial_blocked>` and methods
+ :meth:`APISite.is_partial_blocked()<pywikibot.site._apisite.APISite.is_partial_blocked>` to detect
+ partial blocks. (:phab:`T412613`)
+* Add :meth:`get_block_info()<pywikibot.User.get_block_info>` method to :class:`pywikibot.User`
+ class to retrieve detailed block information including block ID, reason, expiry, and restrictions
+ (:phab:`T412613`)
+* Java based GraalPy is supported but Pillow cannot be used (:phab:`T412739`)
+* Free threading Python is supported with some restrictions.
+ (:phab:`T408131`, :phab:`T412605`, :phab:`T412624`)
+* i18n updates.
+* Provide a security policy with Pywikibot. (:phab:`T410753`)
+* Show a friendly install message with :mod:`pwb<pywikibot.scripts.wrapper>` wrapper
+ when mandatory packages are missing (:phab:`T409662`).
+* Update `tools._unidata.__category_cf` dict for :func:`tools.chars.contains_invisible` and
+ :func:`tools.chars.replace_invisible` to unicode version 17.0.0.
+* Update Docker files to Python 3.12. (:phab:`T408997`)
+
+**Bugfixes**
+
+* Remove invisible chars from :attr:`textlib.Section.heading`. (:phab:`T411307`)
+* Do not raise :exc:`exceptions.UnknownExtensionError` within
+ :meth:`APISite.page_from_repository()<pywikibot.site._apisite.APISite.page_from_repository>`
+ on non-Wikibase sites (:phab:`T414068`)
+* Handle retry-after value gracefully if it is a float instead an int (:phab:`T414197`)
+* Handle limit value gracefully if it is an int instead a str (:phab:`T414168`)
+* Handle `lockmanager-fail-conflict` API error in :meth:`data.api.Request.submit` as retryable
+ (:phab:`T396984`)
+* Prevent login loop in :mod:`data.superset` with unsupported auth methods (:phab:`T408287`)
+
+**Code cleanups**
+
+* ``{httplib2}`` user_agent_format variable is no longer supported (:phab:`T98439`)
+* The undocumented ``page_put_queue_busy`` was removed without deprecation period.
+* Dysfunctional :meth:`APISite.alllinks()
+ <pywikibot.site._generators.GeneratorsMixin.alllinks>` was removed.
+ (:phab:`T359427`, :phab:`T407708`)
+* The inheritance of the :exc:`exceptions.NoSiteLinkError` exception from
+ :exc:`exceptions.NoPageError` was removed
+* The *dropdelay* and *releasepid* attributes of the :class:`throttle.Throttle` class was
+ removed in favour of the *expiry* class attribute.
+* The regex attributes ``ptimeR``, ``ptimeznR``, ``pyearR``, ``pmonthR``, and ``pdayR`` of
+ the :class:`textlib.TimeStripper` class was removed in favour of the ``patterns`` attribute,
+ which is a :class:`textlib.TimeStripperPatterns` object.
+* The ``groups`` attribute of the :class:`textlib.TimeStripper` was removed in favour
+ of the :data:`textlib.TIMEGROUPS` constant.
+* The ``addOnly`` parameter in the :func:`textlib.replaceLanguageLinks` and
+ :func:`textlib.replaceCategoryLinks` was dropped in favour of ``add_only``.
+* ``load_tokens`` method of :class:`TokenWallet<pywikibot.site._tokenwallet.TokenWallet>` was
+ removed; ``clear`` method can be used instead.
+* No longer support legacy API tokens of MediaWiki 1.23 and older. (:phab:`270380`, :phab:`306637`)
+* ``use_hard_category_redirect`` Site and Family properties were removed. (:phab:`T348953`)
+* The *all* parameter of :meth:`APISite.get_tokens()<pywikibot.site._apisite.APISite.get_tokens>``
+ was removed; use an empty string instead.
+* ``APISite.validate_tokens()`` method was removed.
+* ``APISite.messages()`` method was removed in favour of the
+ :attr:`userinfo['messages']<pywikibot.site._apisite.APISite.userinfo>` attribute
+* ``Page.editTime()`` method was removed; :attr:`Page.latest_revision.timestamp
+ <page.BasePage.latest_revision>` attribute can be used instead
+* ``data.api.QueryGenerator.continuekey`` was be removed in favour of
+ :attr:`data.api.QueryGenerator.modules`
+* The ``Timestamp.clone()`` method was removed in favour of the ``Timestamp.replace()`` method
+* The ``tools.itertools.itergroup`` function was removed in favour of the
+ :func:`backports.batched` or :pylib:`itertools.batched<itertools#itertools.batched>` function.
+* The ``get_login_token()`` method of :class:`login.ClientLoginManager`
+ was removed and can be replaces by ``login.LoginManager.site.tokens['login']``
+* The :meth:`family.Family.maximum_GET_length` method was removed in favour of the
+ :ref:`config.maximum_GET_length<Account Settings>` configuration option (:phab:`T325957`)
+* The ``exceptions.Server414Error`` exception was replaced by
+ :exc:`exceptions.Client414Error` exception
+* The *modules_only_mode* parameter in the :class:`data.api.ParamInfo` class, its
+ *paraminfo_keys* class attribute, and its ``preloaded_modules`` property was removed
+* The ``data.api.LoginManager()`` constructor was removed in favour of the
+ :class:`login.ClientLoginManager` class
+* The `normalize` parameter was removed from the
+ :meth:`pywikibot.WbTime.toTimestr` and :meth:`pywikibot.WbTime.toWikibase`
+ methods in Pywikibot 8.2. Since Pywikibot 11, passing `normalize` as an argument
+ raises an error, because support for legacy arguments via was removed.
+* Several typing types were removed from :mod:`backports`.
+* The ``cache`` decorator was removed from :mod:`backports`. The :pylib:`@functools.cache()
+ <functools#functools.cache>` can be used instead. (:phab:`T401802`)
+* The functions ``removeprefix`` and ``removesuffix`` were removed from :mod:`backports`. The
+ :pylib:`stdlib methods<stdtypes.html#str.removeprefix>` can be used instead. (:phab:`T401802`)
+
+**Other breaking changes**
+
+* Set :ref:`minthrottle<Settings to Avoid Server Overload>` to 0.1 due to `Wikimedia Bot Policy
+ <https://foundation.wikimedia.org/wiki/Policy:Wikimedia_Foundation_User-Agen…>`_.
+ (:phab:`T414170`)
+* Clean up :ref:`user_agent_format<Account Settings>` string.
+ Replace the first occurrence of "family", "code", or "lang" with "site".
+ The "lang" variable never worked properly. All of these can be replaced
+ with "site", which is recognized by Wikimedia traffic management.
+ Also replace "script_product" by "script" and "version" by "revision".
+ Replace {script_product} with {username}/{script} in user_agent_format. (:phab:`T414201`)
+* Use global ``-code`` instead of ``-lang`` to determine a site.
+ The old ``-lang`` option is kept for backward compatibility.
+* Protocol swapping in :class:`data.api.Request` was removed. Family files should provide
+ the correct protocol. (:phab:`T414369`)
+* Package requirements were updated (``beautifulsoup4``, ``fake-useragent``, ``mwoauth``,
+ ``mwparserfromhell``, ``packaging``, ``Pillow``, ``pydot``, ``PyMySQL``, ``python-stdnum``,
+ ``requests``, ``requests-sse``, ``wikitextparser``)
+* Python 3.8 support was dropped. (:phab:`T401802`)
+* Remove predefined ``yu-tld`` fix in :mod:`fixes`. (:phab:`T402088`)
+
+
10.7.6
------
*31 January 2026*
diff --git a/ROADMAP.rst b/ROADMAP.rst
index 7886c42..4828861 100644
--- a/ROADMAP.rst
+++ b/ROADMAP.rst
@@ -1,145 +1,7 @@
-Release 11 (in development)
-===========================
+Release 11.1 (in development)
+=============================
+* (no changes yet)
-**Improvements**
-
-* Use URL to bot's wiki page in :ref:`user_agent_format<Account Settings>` due to `Foundation UA
- Policy <https://foundation.wikimedia.org/wiki/Policy:Wikimedia_Foundation_User-Agen…>`_.
- (:phab:`T414173`, :phab:`T414201`)
-* Show Pywikibot version in deprecation warnings for :mod:`config` variables.
-* :ref:`config.pickle_protocol<Further Settings>` was updated from version `2` to `5`. Older pickle
- files are still readable.
-* Enhance :meth:`throttle.Throttle.waittime` for read requests. (:phab:`T415891`)
-* :ref:`config.minthrottle<Settings to Avoid Server Overload>` may me a ``float``.
- (:phab:`T414170`, :phab:`T416145`)
-* Implement :meth:`Site.abuselog()<pywikibot.site._generators.GeneratorsMixin.abuselog>` site
- generator for :api:`AbuseLog` and :meth:`page.User.last_activity` method.
- (:phab:`T396297`, :phab:`T396298`)
-* Use explicit utf-8 encoding with class:`GraphSavingThread.graph.write
- <interwiki_graph.GraphSavingThread>` (:phab:`T415891`)
-* Optimize pickle file storage of :class:`WikiWho<page._toolforge.WikiWhoMixin>`
- with subdirectory structure (:phab:`T414087`)
-* Make :class:`textlib.TimeStripper` more resilient for itwiki. (:phab:`T415880`)
-* Add :class:`WikiWho<page._toolforge.WikiWhoMixin>` API support. (:phab:`T414071`)
-* Never use None as key in WeakKeyDictionary within :class:`proofreadpage.TagAttrDesc`.
- Class-level access returns the descriptor itself. (:phab:`T413563`)
-* *text_a* and *text_b* of :class:`diff.PatchManager` are positional-only parameters.
- *by_letter* and *replace_invisible* are keyword-only parameters.
-* Optimize :func:`pagegenerators.SubCategoriesPageGenerator`
-* Consider ``retry_after`` in delay calculation of :meth:`throttle.Throttle.get_delay`.
- (:phab:`T414354`)
-* Remove protocol swapping in :class:`data.api.Request`. (:phab:`T414369`)
-* Use environment variables ``PYWIKIBOT_USERNAME`` or ``PWB_USERNAME`` for ``User-Agent`` username
- if username isn't set in :mod:`user-config.py<config>` for a given site. (:phab:`T414201`)
-* Add support for beta site in :class:`families.meta_family.Family` (:phab:`T413060`)
-* Add user agent to :class:`data.api.Request` error log (:phab:`T414170`)
-* Increase performance of delegation for :class:`BaseSite<pywikibot.site._basesite.BaseSite>`
- methods to :class:`family.Family` methods (:phab:`T413398`)
-* Use ``queue.shutdown()`` for the async_manager queue
-* Use :class:`backports.RLock` instead of Queue to signal async_manager activity (:phab:`T147178`)
-* Add :meth:`User.is_partial_blocked()<pywikibot.User.is_partial_blocked>` and methods
- :meth:`APISite.is_partial_blocked()<pywikibot.site._apisite.APISite.is_partial_blocked>` to detect
- partial blocks. (:phab:`T412613`)
-* Add :meth:`get_block_info()<pywikibot.User.get_block_info>` method to :class:`pywikibot.User`
- class to retrieve detailed block information including block ID, reason, expiry, and restrictions
- (:phab:`T412613`)
-* Java based GraalPy is supported but Pillow cannot be used (:phab:`T412739`)
-* Free threading Python is supported with some restrictions.
- (:phab:`T408131`, :phab:`T412605`, :phab:`T412624`)
-* i18n updates.
-* Provide a security policy with Pywikibot. (:phab:`T410753`)
-* Show a friendly install message with :mod:`pwb<pywikibot.scripts.wrapper>` wrapper
- when mandatory packages are missing (:phab:`T409662`).
-* Update `tools._unidata.__category_cf` dict for :func:`tools.chars.contains_invisible` and
- :func:`tools.chars.replace_invisible` to unicode version 17.0.0.
-* Update Docker files to Python 3.12. (:phab:`T408997`)
-
-**Bugfixes**
-
-* Remove invisible chars from :attr:`textlib.Section.heading`. (:phab:`T411307`)
-* Do not raise :exc:`exceptions.UnknownExtensionError` within
- :meth:`APISite.page_from_repository()<pywikibot.site._apisite.APISite.page_from_repository>`
- on non-Wikibase sites (:phab:`T414068`)
-* Handle retry-after value gracefully if it is a float instead an int (:phab:`T414197`)
-* Handle limit value gracefully if it is an int instead a str (:phab:`T414168`)
-* Handle `lockmanager-fail-conflict` API error in :meth:`data.api.Request.submit` as retryable
- (:phab:`T396984`)
-* Prevent login loop in :mod:`data.superset` with unsupported auth methods (:phab:`T408287`)
-
-**Code cleanups**
-
-* ``{httplib2}`` user_agent_format variable is no longer supported (:phab:`T98439`)
-* The undocumented ``page_put_queue_busy`` was removed without deprecation period.
-* Dysfunctional :meth:`APISite.alllinks()
- <pywikibot.site._generators.GeneratorsMixin.alllinks>` was removed.
- (:phab:`T359427`, :phab:`T407708`)
-* The inheritance of the :exc:`exceptions.NoSiteLinkError` exception from
- :exc:`exceptions.NoPageError` was removed
-* The *dropdelay* and *releasepid* attributes of the :class:`throttle.Throttle` class was
- removed in favour of the *expiry* class attribute.
-* The regex attributes ``ptimeR``, ``ptimeznR``, ``pyearR``, ``pmonthR``, and ``pdayR`` of
- the :class:`textlib.TimeStripper` class was removed in favour of the ``patterns`` attribute,
- which is a :class:`textlib.TimeStripperPatterns` object.
-* The ``groups`` attribute of the :class:`textlib.TimeStripper` was removed in favour
- of the :data:`textlib.TIMEGROUPS` constant.
-* The ``addOnly`` parameter in the :func:`textlib.replaceLanguageLinks` and
- :func:`textlib.replaceCategoryLinks` was dropped in favour of ``add_only``.
-* ``load_tokens`` method of :class:`TokenWallet<pywikibot.site._tokenwallet.TokenWallet>` was
- removed; ``clear`` method can be used instead.
-* No longer support legacy API tokens of MediaWiki 1.23 and older. (:phab:`270380`, :phab:`306637`)
-* ``use_hard_category_redirect`` Site and Family properties were removed. (:phab:`T348953`)
-* The *all* parameter of :meth:`APISite.get_tokens()<pywikibot.site._apisite.APISite.get_tokens>``
- was removed; use an empty string instead.
-* ``APISite.validate_tokens()`` method was removed.
-* ``APISite.messages()`` method was removed in favour of the
- :attr:`userinfo['messages']<pywikibot.site._apisite.APISite.userinfo>` attribute
-* ``Page.editTime()`` method was removed; :attr:`Page.latest_revision.timestamp
- <page.BasePage.latest_revision>` attribute can be used instead
-* ``data.api.QueryGenerator.continuekey`` was be removed in favour of
- :attr:`data.api.QueryGenerator.modules`
-* The ``Timestamp.clone()`` method was removed in favour of the ``Timestamp.replace()`` method
-* The ``tools.itertools.itergroup`` function was removed in favour of the
- :func:`backports.batched` or :pylib:`itertools.batched<itertools#itertools.batched>` function.
-* The ``get_login_token()`` method of :class:`login.ClientLoginManager`
- was removed and can be replaces by ``login.LoginManager.site.tokens['login']``
-* The :meth:`family.Family.maximum_GET_length` method was removed in favour of the
- :ref:`config.maximum_GET_length<Account Settings>` configuration option (:phab:`T325957`)
-* The ``exceptions.Server414Error`` exception was replaced by
- :exc:`exceptions.Client414Error` exception
-* The *modules_only_mode* parameter in the :class:`data.api.ParamInfo` class, its
- *paraminfo_keys* class attribute, and its ``preloaded_modules`` property was removed
-* The ``data.api.LoginManager()`` constructor was removed in favour of the
- :class:`login.ClientLoginManager` class
-* The `normalize` parameter was removed from the
- :meth:`pywikibot.WbTime.toTimestr` and :meth:`pywikibot.WbTime.toWikibase`
- methods in Pywikibot 8.2. Since Pywikibot 11, passing `normalize` as an argument
- raises an error, because support for legacy arguments via was removed.
-* Several typing types were removed from :mod:`backports`.
-* The ``cache`` decorator was removed from :mod:`backports`. The :pylib:`@functools.cache()
- <functools#functools.cache>` can be used instead. (:phab:`T401802`)
-* The functions ``removeprefix`` and ``removesuffix`` were removed from :mod:`backports`. The
- :pylib:`stdlib methods<stdtypes.html#str.removeprefix>` can be used instead. (:phab:`T401802`)
-
-**Other breaking changes**
-
-* Set :ref:`minthrottle<Settings to Avoid Server Overload>` to 0.1 due to `Wikimedia Bot Policy
- <https://foundation.wikimedia.org/wiki/Policy:Wikimedia_Foundation_User-Agen…>`_.
- (:phab:`T414170`)
-* Clean up :ref:`user_agent_format<Account Settings>` string.
- Replace the first occurrence of "family", "code", or "lang" with "site".
- The "lang" variable never worked properly. All of these can be replaced
- with "site", which is recognized by Wikimedia traffic management.
- Also replace "script_product" by "script" and "version" by "revision".
- Replace {script_product} with {username}/{script} in user_agent_format. (:phab:`T414201`)
-* Use global ``-code`` instead of ``-lang`` to determine a site.
- The old ``-lang`` option is kept for backward compatibility.
-* Protocol swapping in :class:`data.api.Request` was removed. Family files should provide
- the correct protocol. (:phab:`T414369`)
-* Package requirements were updated (``beautifulsoup4``, ``fake-useragent``, ``mwoauth``,
- ``mwparserfromhell``, ``packaging``, ``Pillow``, ``pydot``, ``PyMySQL``, ``python-stdnum``,
- ``requests``, ``requests-sse``, ``wikitextparser``)
-* Python 3.8 support was dropped. (:phab:`T401802`)
-* Remove predefined ``yu-tld`` fix in :mod:`fixes`. (:phab:`T402088`)
Deprecations
============
diff --git a/pywikibot/__metadata__.py b/pywikibot/__metadata__.py
index 6365e29..6a54077 100644
--- a/pywikibot/__metadata__.py
+++ b/pywikibot/__metadata__.py
@@ -12,6 +12,6 @@
from time import strftime
-__version__ = '11.0.0'
+__version__ = '11.1.0.dev0'
__url__ = 'https://www.mediawiki.org/wiki/Manual:Pywikibot'
__copyright__ = f'2003-{strftime("%Y")}, Pywikibot team'
diff --git a/scripts/__init__.py b/scripts/__init__.py
index 3bc7555..aa69d1f 100644
--- a/scripts/__init__.py
+++ b/scripts/__init__.py
@@ -25,7 +25,7 @@
due to spelling mistake
"""
#
-# (C) Pywikibot team, 2021-2025
+# (C) Pywikibot team, 2021-2026
#
# Distributed under the terms of the MIT license.
#
@@ -34,7 +34,7 @@
from pathlib import Path
-__version__ = '11.0.0'
+__version__ = '11.1.0'
#: defines the entry point for pywikibot-scripts package
base_dir = Path(__file__).parent
diff --git a/scripts/pyproject.toml b/scripts/pyproject.toml
index 0e14dd1..059756d 100644
--- a/scripts/pyproject.toml
+++ b/scripts/pyproject.toml
@@ -19,7 +19,7 @@
readme = "scripts/README.rst"
requires-python = ">=3.9.0"
dependencies = [
- "pywikibot >= 11.0.0",
+ "pywikibot >= 11.1.0",
"langdetect",
"mwparserfromhell",
"pydot",
--
To view, visit https://gerrit.wikimedia.org/r/c/pywikibot/core/+/1237961?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.wikimedia.org/r/settings?usp=email
Gerrit-MessageType: merged
Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Change-Id: I3dc38ef952bbcdf32140f110c09bdf115c5753fb
Gerrit-Change-Number: 1237961
Gerrit-PatchSet: 1
Gerrit-Owner: Xqt <info(a)gno.de>
Gerrit-Reviewer: Xqt <info(a)gno.de>
Gerrit-Reviewer: jenkins-bot
jenkins-bot has submitted this change. ( https://gerrit.wikimedia.org/r/c/pywikibot/core/+/1237949?usp=email )
Change subject: [11] Publish Pywikibot 11
......................................................................
[11] Publish Pywikibot 11
Bug: T396368
Change-Id: If70ffb1a011134f185d02417a7e66522d06f698b
---
M HISTORY.rst
M ROADMAP.rst
M docs/api_ref/family.rst
M pywikibot/__metadata__.py
4 files changed, 26 insertions(+), 2 deletions(-)
Approvals:
Xqt: Looks good to me, approved
jenkins-bot: Verified
diff --git a/HISTORY.rst b/HISTORY.rst
index 8f32fe2..489984a 100644
--- a/HISTORY.rst
+++ b/HISTORY.rst
@@ -1538,7 +1538,8 @@
* LoginManager.getCookie() was renamed to login_to_site()
* Deprecation warning for MediaWiki < 1.23 (:phab:`T268979`)
* Add backports to support some Python 3.9 changes
-* Desupported shared_image_repository() and nocapitalize() methods were removed (:phab:`T89451`)
+* Desupported ``iwkeys()``, ``nicepath()``, ``nice_get_address``, ``shared_data_repository()``
+ methods and ``nocapitalize`` attribute were removed (:phab:`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' (:phab:`T265206`)
* Deprecated compat BasePage.getRestrictions() method was removed
diff --git a/ROADMAP.rst b/ROADMAP.rst
index b6eea65..7886c42 100644
--- a/ROADMAP.rst
+++ b/ROADMAP.rst
@@ -3,6 +3,9 @@
**Improvements**
+* Use URL to bot's wiki page in :ref:`user_agent_format<Account Settings>` due to `Foundation UA
+ Policy <https://foundation.wikimedia.org/wiki/Policy:Wikimedia_Foundation_User-Agen…>`_.
+ (:phab:`T414173`, :phab:`T414201`)
* Show Pywikibot version in deprecation warnings for :mod:`config` variables.
* :ref:`config.pickle_protocol<Further Settings>` was updated from version `2` to `5`. Older pickle
files are still readable.
@@ -119,6 +122,15 @@
**Other breaking changes**
+* Set :ref:`minthrottle<Settings to Avoid Server Overload>` to 0.1 due to `Wikimedia Bot Policy
+ <https://foundation.wikimedia.org/wiki/Policy:Wikimedia_Foundation_User-Agen…>`_.
+ (:phab:`T414170`)
+* Clean up :ref:`user_agent_format<Account Settings>` string.
+ Replace the first occurrence of "family", "code", or "lang" with "site".
+ The "lang" variable never worked properly. All of these can be replaced
+ with "site", which is recognized by Wikimedia traffic management.
+ Also replace "script_product" by "script" and "version" by "revision".
+ Replace {script_product} with {username}/{script} in user_agent_format. (:phab:`T414201`)
* Use global ``-code`` instead of ``-lang`` to determine a site.
The old ``-lang`` option is kept for backward compatibility.
* Protocol swapping in :class:`data.api.Request` was removed. Family files should provide
diff --git a/docs/api_ref/family.rst b/docs/api_ref/family.rst
index 314d96a..d6f6e08 100644
--- a/docs/api_ref/family.rst
+++ b/docs/api_ref/family.rst
@@ -38,3 +38,14 @@
cls.code_aliases = aliases
.. versionadded:: 8.3
+
+ .. method:: nicepath(code)
+
+ Return nice path prefix, e.g. `'/wiki/'`.
+
+ .. deprecated:: 2.0
+ Use :meth:`APISite.articlepath<pywikibot.site._apisite.APISite.articlepath>` instead.
+ .. versionremoved:: 5.4
+
+ :param str code: The site code
+ :rtype: str
diff --git a/pywikibot/__metadata__.py b/pywikibot/__metadata__.py
index 6fb0f15..6365e29 100644
--- a/pywikibot/__metadata__.py
+++ b/pywikibot/__metadata__.py
@@ -12,6 +12,6 @@
from time import strftime
-__version__ = '11.0.0.dev12'
+__version__ = '11.0.0'
__url__ = 'https://www.mediawiki.org/wiki/Manual:Pywikibot'
__copyright__ = f'2003-{strftime("%Y")}, Pywikibot team'
--
To view, visit https://gerrit.wikimedia.org/r/c/pywikibot/core/+/1237949?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.wikimedia.org/r/settings?usp=email
Gerrit-MessageType: merged
Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Change-Id: If70ffb1a011134f185d02417a7e66522d06f698b
Gerrit-Change-Number: 1237949
Gerrit-PatchSet: 1
Gerrit-Owner: Xqt <info(a)gno.de>
Gerrit-Reviewer: Xqt <info(a)gno.de>
Gerrit-Reviewer: jenkins-bot
jenkins-bot has submitted this change. ( https://gerrit.wikimedia.org/r/c/pywikibot/i18n/+/1237885?usp=email )
Change subject: Localisation updates from https://translatewiki.net.
......................................................................
Localisation updates from https://translatewiki.net.
Change-Id: Ib49800004fb09ca990da47803a3d60e814a01e5a
---
M add_text/id.json
M imagetransfer/ur.json
M weblinkchecker/it.json
M weblinkchecker/nb.json
4 files changed, 5 insertions(+), 3 deletions(-)
Approvals:
L10n-bot: Looks good to me, approved
jenkins-bot: Verified
diff --git a/add_text/id.json b/add_text/id.json
index 43f7842..51697e3 100644
--- a/add_text/id.json
+++ b/add_text/id.json
@@ -2,6 +2,7 @@
"@metadata": {
"authors": [
"ArlandGa",
+ "Jawadywn",
"Rachmat.Wahidi",
"Rachmat04"
]
diff --git a/imagetransfer/ur.json b/imagetransfer/ur.json
index 31a5f3c..966038d 100644
--- a/imagetransfer/ur.json
+++ b/imagetransfer/ur.json
@@ -1,9 +1,10 @@
{
"@metadata": {
"authors": [
+ "BukhariSaeed",
"Muhammad Shuaib"
]
},
"imagetransfer-file_page_message": "یہ تصویر %(site)s سے ماخوذ ہے۔ اس کی اصل وضاحت حسب ذیل ہے:\n\n\n%(description)s",
- "imagetransfer-nowcommons_notice": "اب فائل ویکیمیڈیا کامنز پر دستیاب ہے۔"
+ "imagetransfer-nowcommons_notice": "اب فائل ویکی ذخائر پر دستیاب ہے۔"
}
diff --git a/weblinkchecker/it.json b/weblinkchecker/it.json
index fc07f31..5119407 100644
--- a/weblinkchecker/it.json
+++ b/weblinkchecker/it.json
@@ -5,7 +5,7 @@
]
},
"weblinkchecker-archive_msg": "La pagina web è stata salvata da Internet Archive. Prendi in considerazione di collegare alla versione archiviata appropriata: [%(URL)s].",
- "weblinkchecker-badurl": "Il collegamento fornito non sembra essere un URL valido",
+ "weblinkchecker-badurl": "Il collegamento fornito non sembra essere un URL valido: [%(URL)s]",
"weblinkchecker-caption": "Collegamento interrotto",
"weblinkchecker-report": "Durante varie esecuzioni del bot i seguenti collegamenti esterni si sono rivelati non raggiungibili. Si prega di controllare se il link è effettivamente errato, quindi correggerlo o rimuoverlo.",
"weblinkchecker-summary": "Bot: segnalo collegamenti esterni non raggiungibili"
diff --git a/weblinkchecker/nb.json b/weblinkchecker/nb.json
index 6216a57..4ead52f 100644
--- a/weblinkchecker/nb.json
+++ b/weblinkchecker/nb.json
@@ -7,7 +7,7 @@
]
},
"weblinkchecker-archive_msg": "Denne nettsiden er lagret i Internet Archive. Vurder om lenka kan endres til å peke til en av de arkiverte versjonene: [%(URL)s].",
- "weblinkchecker-badurl": "Lenken ser ikke ut til å være en gyldig nettadresse",
+ "weblinkchecker-badurl": "Den angitte lenken ser ikke ut til å være en gyldig URL: [%(URL)s]",
"weblinkchecker-caption": "Død lenke",
"weblinkchecker-report": "I løpet av flere automatiske botkjøringer ble følgende lenke funnet å være utilgjengelig. Sjekk om lenken faktisk er død, og fiks eller fjern den om det er tilfelle.",
"weblinkchecker-summary": "Robot: Rapporter utilgjengelig eksternlenke"
--
To view, visit https://gerrit.wikimedia.org/r/c/pywikibot/i18n/+/1237885?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.wikimedia.org/r/settings?usp=email
Gerrit-MessageType: merged
Gerrit-Project: pywikibot/i18n
Gerrit-Branch: master
Gerrit-Change-Id: Ib49800004fb09ca990da47803a3d60e814a01e5a
Gerrit-Change-Number: 1237885
Gerrit-PatchSet: 1
Gerrit-Owner: L10n-bot <l10n-bot(a)translatewiki.net>
Gerrit-Reviewer: L10n-bot <l10n-bot(a)translatewiki.net>
Gerrit-Reviewer: jenkins-bot
jenkins-bot has submitted this change. ( https://gerrit.wikimedia.org/r/c/pywikibot/core/+/1237694?usp=email )
Change subject: UA: use URL to user page in user agent
......................................................................
UA: use URL to user page in user agent
If a site does not start with "wiki" like in commons or "wiktionary"
or the site code has more than 2 characters (e.g, 'test'), the backend
does not accept (site; User:username) as contact information introduced
with T414173
(https://gerrit.wikimedia.org/r/c/operations/puppet/+/1224977)
Use the URL to the user page in that case.
Update tests accordingly.
Bug: T414201
Change-Id: Icd70607c7f9abb58d211b5e9fe6ac2dd875800ac
---
M pywikibot/comms/http.py
M tests/dry_site_tests.py
2 files changed, 33 insertions(+), 11 deletions(-)
Approvals:
jenkins-bot: Verified
Xqt: Looks good to me, approved
diff --git a/pywikibot/comms/http.py b/pywikibot/comms/http.py
index d248334..3b88f32 100644
--- a/pywikibot/comms/http.py
+++ b/pywikibot/comms/http.py
@@ -160,7 +160,10 @@
"""User-agent formatter to load version/revision only if necessary."""
def get_value(self, key, args, kwargs):
- """Lazy load revision key. Also replace deprecated variables."""
+ """Lazy load revision key. Also replace deprecated variables.
+
+ See :func:`user_agent` for the deprecated variables.
+ """
replacements = {
'script_product': 'script',
'version': 'revision',
@@ -230,9 +233,16 @@
"""Generate the user agent string for a given site and format.
.. versionchanged:: 11.0
- ``code``, ``lang`` and ``family`` variables within format string
- are no longer supported. They will be replaced by ``site``
- during deprecation period.
+ The ``code``, ``lang`` and ``family`` variables in the format
+ string are deprecated and replaced by ``site``. The
+ ``script_version`` and ``version`` variables are deprecated and
+ replaced by ``script`` and ``revision`` respectively.
+
+ If *site* is provided and a username is returned by the helper
+ function :func:`user_agent_username`, the URL to the user's wiki
+ page is added to ``script_comments`` when the sitename does not
+ start with "wiki" (e.g., commons or wiktionary) or the site code
+ has more than two characters.
:param site: The site for which this user agent is intended. May be
None.
@@ -241,6 +251,7 @@
empty.
:return: The formatted user agent
"""
+ # NOTE: only BaseSite methods can be used here
values = USER_AGENT_PRODUCTS.copy()
values['script'] = pywikibot.bot.calledModuleName()
values['site'] = ''
@@ -253,10 +264,15 @@
if site:
values['site'] = site.sitename
- script_comments.append(site.sitename)
-
- if username:
- script_comments.append('User:' + username)
+ if site.sitename.startswith('wiki') and len(site.code) == 2:
+ # use "sitename:code; User:username"
+ script_comments.append(site.sitename)
+ if username:
+ script_comments.append('User:' + username)
+ elif username:
+ # use url to user wikipage
+ full_url = site.base_url(f'wiki/User:{username}')
+ script_comments.append(full_url)
values['username'] = username
values['script_comments'] = '; '.join(script_comments)
diff --git a/tests/dry_site_tests.py b/tests/dry_site_tests.py
index 8b5e39e..c813e1f 100755
--- a/tests/dry_site_tests.py
+++ b/tests/dry_site_tests.py
@@ -108,10 +108,16 @@
x._username = None
# user_agent_username() may set ua_username from environment variable
- ua_username = user_agent_username()
- self.assertEqual(f'Foo {ua_username}'.strip(),
+ ua_user = user_agent_username()
+ self.assertEqual(f'Foo {ua_user}'.strip(),
user_agent(x, format_string='Foo {username}'))
- res = f'Foo ({x}; User:{ua_username})' if ua_username else f'Foo ({x})'
+
+ if self.site.sitename.startswith('wiki') and len(self.site.code) == 2:
+ res = f'Foo ({x}; User:{ua_user})' if ua_user else f'Foo ({x})'
+ else:
+ full_url = self.site.base_url(f'wiki/User:{ua_user}')
+ res = f'Foo ({full_url})' if ua_user else 'Foo'
+
self.assertEqual(
res, user_agent(x, format_string='Foo ({script_comments})'))
--
To view, visit https://gerrit.wikimedia.org/r/c/pywikibot/core/+/1237694?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.wikimedia.org/r/settings?usp=email
Gerrit-MessageType: merged
Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Change-Id: Icd70607c7f9abb58d211b5e9fe6ac2dd875800ac
Gerrit-Change-Number: 1237694
Gerrit-PatchSet: 4
Gerrit-Owner: Xqt <info(a)gno.de>
Gerrit-Reviewer: Xqt <info(a)gno.de>
Gerrit-Reviewer: jenkins-bot
Xqt has submitted this change. ( https://gerrit.wikimedia.org/r/c/pywikibot/core/+/1237676?usp=email )
Change subject: config: set minthrottle to 0.1 due to WM Bot Policy
......................................................................
config: set minthrottle to 0.1 due to WM Bot Policy
See https://wikitech.wikimedia.org/wiki/Robot_policy
Bug: T414170
Change-Id: I573b9b8713d7bee95ad8dde82a6cea017fcf62e9
---
M pywikibot/config.py
1 file changed, 3 insertions(+), 2 deletions(-)
Approvals:
Xqt: Verified; Looks good to me, approved
diff --git a/pywikibot/config.py b/pywikibot/config.py
index 16572d4..6bdfc5f 100644
--- a/pywikibot/config.py
+++ b/pywikibot/config.py
@@ -707,11 +707,12 @@
# 'minthrottle' seconds. This delay may be increased if the server is slow
# or requests are limited by bot policy, but never beyond 'maxthrottle'
# seconds. When running multiple bots in parallel, the effective waiting
-# time is increased accordingly.
+# time is increased accordingly. The default setting is 0.1 seconds per
+# https://wikitech.wikimedia.org/wiki/Robot_policy.
#
# 'maxlag' is used to control the rate of server access (see below).
# Set minthrottle to non-zero to use a throttle on read access.
-minthrottle = 0.0
+minthrottle = 0.1
maxthrottle = 60
# Slow down the robot such that it never makes a second page edit within
--
To view, visit https://gerrit.wikimedia.org/r/c/pywikibot/core/+/1237676?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.wikimedia.org/r/settings?usp=email
Gerrit-MessageType: merged
Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Change-Id: I573b9b8713d7bee95ad8dde82a6cea017fcf62e9
Gerrit-Change-Number: 1237676
Gerrit-PatchSet: 2
Gerrit-Owner: Xqt <info(a)gno.de>
Gerrit-Reviewer: Xqt <info(a)gno.de>
Gerrit-Reviewer: jenkins-bot
jenkins-bot has submitted this change. ( https://gerrit.wikimedia.org/r/c/pywikibot/i18n/+/1237678?usp=email )
Change subject: weblinkchecker: Add URL field to weblinkchecker-badurl
......................................................................
weblinkchecker: Add URL field to weblinkchecker-badurl
Also update metadata.
Bug: T416785
Change-Id: I7debde7b995d1f600171c246064142360f9dd244
---
M weblinkchecker/en.json
M weblinkchecker/qqq.json
2 files changed, 8 insertions(+), 2 deletions(-)
Approvals:
jenkins-bot: Verified
Xqt: Looks good to me, approved
diff --git a/weblinkchecker/en.json b/weblinkchecker/en.json
index 496c62e..59a4969 100644
--- a/weblinkchecker/en.json
+++ b/weblinkchecker/en.json
@@ -1,7 +1,12 @@
{
- "@metadata": [],
+ "@metadata": {
+ "authors": [
+ "Marcin Cieslak",
+ "Xqt"
+ ]
+ },
"weblinkchecker-archive_msg": "The web page has been saved by the Internet Archive. Please consider linking to an appropriate archived version: [%(URL)s].",
- "weblinkchecker-badurl": "The link provided does not seem to be a valid URL",
+ "weblinkchecker-badurl": "The link provided does not seem to be a valid URL: [%(URL)s]",
"weblinkchecker-caption": "Dead link",
"weblinkchecker-report": "During several automated bot runs the following external link was found to be unavailable. Please check if the link is in fact down and fix or remove it in that case!",
"weblinkchecker-summary": "Bot: Reporting unavailable external link"
diff --git a/weblinkchecker/qqq.json b/weblinkchecker/qqq.json
index cdd3799..8542b46 100644
--- a/weblinkchecker/qqq.json
+++ b/weblinkchecker/qqq.json
@@ -1,6 +1,7 @@
{
"@metadata": {
"authors": [
+ "Marcin Cieslak",
"Xqt"
]
},
--
To view, visit https://gerrit.wikimedia.org/r/c/pywikibot/i18n/+/1237678?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.wikimedia.org/r/settings?usp=email
Gerrit-MessageType: merged
Gerrit-Project: pywikibot/i18n
Gerrit-Branch: master
Gerrit-Change-Id: I7debde7b995d1f600171c246064142360f9dd244
Gerrit-Change-Number: 1237678
Gerrit-PatchSet: 1
Gerrit-Owner: Xqt <info(a)gno.de>
Gerrit-Reviewer: Xqt <info(a)gno.de>
Gerrit-Reviewer: jenkins-bot
Xqt has submitted this change. ( https://gerrit.wikimedia.org/r/c/pywikibot/core/+/1237639?usp=email )
Change subject: doc: Update ROADMAP.rst, AUTHORS.rst and CHANGELOG.rst
......................................................................
doc: Update ROADMAP.rst, AUTHORS.rst and CHANGELOG.rst
Change-Id: I2437154e38d65a7ba16296eb81ea08ba78930b44
---
M AUTHORS.rst
M ROADMAP.rst
M scripts/CHANGELOG.rst
3 files changed, 18 insertions(+), 1 deletion(-)
Approvals:
Xqt: Looks good to me, approved
jenkins-bot: Verified
diff --git a/AUTHORS.rst b/AUTHORS.rst
index 31c30e4..e2919ae 100644
--- a/AUTHORS.rst
+++ b/AUTHORS.rst
@@ -198,6 +198,7 @@
Lewis Cawte
Lichinsol
Linedwell
+ Louperivois
luzpaz
M
diff --git a/ROADMAP.rst b/ROADMAP.rst
index 11c562e..b6eea65 100644
--- a/ROADMAP.rst
+++ b/ROADMAP.rst
@@ -3,10 +3,21 @@
**Improvements**
+* Show Pywikibot version in deprecation warnings for :mod:`config` variables.
* :ref:`config.pickle_protocol<Further Settings>` was updated from version `2` to `5`. Older pickle
files are still readable.
+* Enhance :meth:`throttle.Throttle.waittime` for read requests. (:phab:`T415891`)
+* :ref:`config.minthrottle<Settings to Avoid Server Overload>` may me a ``float``.
+ (:phab:`T414170`, :phab:`T416145`)
+* Implement :meth:`Site.abuselog()<pywikibot.site._generators.GeneratorsMixin.abuselog>` site
+ generator for :api:`AbuseLog` and :meth:`page.User.last_activity` method.
+ (:phab:`T396297`, :phab:`T396298`)
+* Use explicit utf-8 encoding with class:`GraphSavingThread.graph.write
+ <interwiki_graph.GraphSavingThread>` (:phab:`T415891`)
+* Optimize pickle file storage of :class:`WikiWho<page._toolforge.WikiWhoMixin>`
+ with subdirectory structure (:phab:`T414087`)
* Make :class:`textlib.TimeStripper` more resilient for itwiki. (:phab:`T415880`)
-* Add WikiWho API support. (:phab:`T414071`)
+* Add :class:`WikiWho<page._toolforge.WikiWhoMixin>` API support. (:phab:`T414071`)
* Never use None as key in WeakKeyDictionary within :class:`proofreadpage.TagAttrDesc`.
Class-level access returns the descriptor itself. (:phab:`T413563`)
* *text_a* and *text_b* of :class:`diff.PatchManager` are positional-only parameters.
diff --git a/scripts/CHANGELOG.rst b/scripts/CHANGELOG.rst
index 03b2ad5..df664bb 100644
--- a/scripts/CHANGELOG.rst
+++ b/scripts/CHANGELOG.rst
@@ -7,6 +7,11 @@
* L10N and i18n updates
* ``create_isbn_edition`` script was removed from scripts package (:phab:`T398140`)
+addwikis:
+^^^^^^^^^
+
+* Show the difference instead of the new list.
+
archivebot
^^^^^^^^^^
--
To view, visit https://gerrit.wikimedia.org/r/c/pywikibot/core/+/1237639?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.wikimedia.org/r/settings?usp=email
Gerrit-MessageType: merged
Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Change-Id: I2437154e38d65a7ba16296eb81ea08ba78930b44
Gerrit-Change-Number: 1237639
Gerrit-PatchSet: 1
Gerrit-Owner: Xqt <info(a)gno.de>
Gerrit-Reviewer: Xqt <info(a)gno.de>
Gerrit-Reviewer: jenkins-bot