jenkins-bot has submitted this change. ( https://gerrit.wikimedia.org/r/c/pywikibot/core/+/1123763?usp=email )
Change subject: Add compatibility informations to documentation
......................................................................
Add compatibility informations to documentation
See also https://www.mediawiki.org/wiki/Manual:Pywikibot/Compatibility
Change-Id: I107f683f7272697a253d303a0f202c812790eba0
---
A docs/compatibility.rst
M docs/index.rst
2 files changed, 48 insertions(+), 0 deletions(-)
Approvals:
jenkins-bot: Verified
Xqt: Looks good to me, approved
diff --git a/docs/compatibility.rst b/docs/compatibility.rst
new file mode 100644
index 0000000..9158fac
--- /dev/null
+++ b/docs/compatibility.rst
@@ -0,0 +1,47 @@
+*********************
+Version compatibility
+*********************
+
+This page summarizes Pywikibot compatibility with Python and MediaWiki versions.
+
+Python version support
+======================
+
+Released Pywikibot versions support all Python versions that are actively maintained
+at the time of the release:
+
+================= ===================== ====
+Pywikibot version Python version PyPy
+================= ===================== ====
+10.0+ 3.8–3.14 Yes
+9.0+ 3.7–3.13 Yes
+8.0+ 3.6.1–3.12 Yes
+7.0+ 3.5.3–3.11 Yes
+4.0+ 3.5–3.8 No
+3.0.20190301+ 2.7.4–2.7.18, 3.4–3.8 No
+3.0.20180403+ 2.7.2–2.7.18, 3.4–3.8 No
+3.0+ 2.6–2.7.18, 3.3–3.8 No
+2.0 2.7, 3.3–3.5 No
+1.0 2.5–2.7 No
+================= ===================== ====
+
+`Status of Python versions <https://devguide.python.org/versions/>`__.
+
+Mediawiki version support
+=========================
+
+Released Pywikibot versions support all MediaWiki versions that are actively maintained
+at the time of the release:
+
+================= =================
+Pywikibot version MediaWiki version
+================= =================
+10.0+ 1.31–1.44
+9.0+ 1.27–1.42
+8.0+ 1.27–1.40
+7.0+ 1.23–1.38
+6.0+ 1.23–1.36
+5.0+ 1.19–1.36
+================= =================
+
+`Status of MediaWiki versions <https://www.mediawiki.org/wiki/Version_lifecycle>`__.
diff --git a/docs/index.rst b/docs/index.rst
index 8ee6069..46b4fe6 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -81,6 +81,7 @@
:caption: About
changelog
+ compatibility
licenses
credits
glossary
--
To view, visit https://gerrit.wikimedia.org/r/c/pywikibot/core/+/1123763?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: I107f683f7272697a253d303a0f202c812790eba0
Gerrit-Change-Number: 1123763
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/core/+/1123761?usp=email )
Change subject: [10.1] Prepare next release
......................................................................
[10.1] Prepare next release
Change-Id: I82647e1e3126100b6cbf0305e3f0c32d0810e7f0
---
M HISTORY.rst
M ROADMAP.rst
M pywikibot/__metadata__.py
M scripts/__init__.py
M scripts/pyproject.toml
5 files changed, 88 insertions(+), 82 deletions(-)
Approvals:
Xqt: Looks good to me, approved
jenkins-bot: Verified
diff --git a/HISTORY.rst b/HISTORY.rst
index fcca87c..ef14faf 100644
--- a/HISTORY.rst
+++ b/HISTORY.rst
@@ -1,6 +1,89 @@
Release History
===============
+10.0.0
+------
+*01 March 2025*
+
+**Improvements**
+
+* Add *sort* parameter to :func:`pagegenerators.SearchPageGenerator` and :meth:`APISite.search()
+ <pywikibot.site._generators.GeneratorsMixin.search>`:phab:`T386594`).
+* Add support for sylwiki (:phab:`T386466`).
+* Update :attr:`Family.cross_allowed<family.Family.cross_allowed>` lists in family files.
+* Ignore empty message warning in :class:`EventStreams<comms.eventstreams.EventStreams>`
+ (:phab:`T383035`).
+* A *timeout* parameter was added to :func:`data.memento.get_closest_memento_url`
+ and the default timeout was increased to 30 s (:phab:`T382943`).
+* :func:`bot.calledModuleName` returns either 'unittest' or 'pytest' during test run (:phab:`T382797`).
+* :class:`tools.threading.BoundedPoolExecutor` was added (:phab:`T333741`).
+* *args* parameter for :mod:`logging` functions can be used as formatting arguments
+* :attr:`.login.OauthLoginManager.access_token` was added.
+* Representation string for :class:`login.LoginManager` was added.
+* i18n updates.
+
+**Bugfixes**
+
+* Allow url without api path, requests path or script path in :func:`pywikibot.Site` constuctor (:phab:`T386665`).
+* Appended <<default>> color tag before the last linefeed in
+ :class:`UI<userinterfaces.terminal_interface_base.UI>` (:phab:`T382884`).
+* Remove unintentional *args* parameter in :class:`tools.threading.ThreadList` (:phab:`T382787`).
+
+**Code cleanups**
+
+* Remove Structured Discussions/Flow support (:phab:`T381551`, :phab:`T371180`)
+* Remove old and deprecated variables in :mod:`config`.
+* Remove unintentional ``pywikibot.warn()``.
+* Unused *get_redirect* parameter of :meth:`BasePage.getOldVersion()<page.BasePage.getOldVersion>` was removed.
+* *baserevid* parameter of :class:`DataSite<pywikibot.site._datasite.DataSite>` methods
+ :meth:`editSource()<pywikibot.site._datasite.DataSite.editSource>`,
+ :meth:`editQualifier()<pywikibot.site._datasite.DataSite.editQualifier>`,
+ :meth:`removeClaims()<pywikibot.site._datasite.DataSite.removeClaims>`,
+ :meth:`removeSources()<pywikibot.site._datasite.DataSite.removeSources>`,
+ :meth:`remove_qualifiers()<pywikibot.site._datasite.DataSite.remove_qualifiers>` were be removed.
+* ``linktrail`` methods of :class:`family.Family` and :class:`BaseSite<pywikibot.site._basesite.BaseSite>`
+ were removed; use :meth:`APISite.linktrail()<pywikibot.site._apisite.APISite.linktrail>` instead.
+* Positional arguments *decoder*, *layer* and *newline* for :mod:`logging` functions are invalid;
+ keyword arguments must be used instead.
+* *tb* parameter of :func:`exception()<pywikibot.logging.exception>` function was dropped;
+ use *exc_info* instead.
+* The positional arguments of :meth:`page.BasePage.linkedPages` were removed.
+* ``FilePage.usingPages()`` was renamed to :meth:`using_pages()<pywikibot.FilePage.using_pages>`.
+* ``APISite.article_path`` was removed. :attr:`APISite.articlepath
+ <pywikibot.site._apisite.APISite.articlepath>` can be used instead.
+* ``fix_digits`` method of :class:`textlib.TimeStripper` was removed;
+ :func:`textlib.to_latin_digits` can be used instead.
+* :mod:`textlib`.tzoneFixedOffset class was removed in favour of
+ :class:`time.TZoneFixedOffse<pywikibot.time.TZoneFixedOffset>`.
+* A boolean *watch* parameter in :meth:`page.BasePage.save` is desupported.
+* ``XMLDumpOldPageGenerator`` was removed in favour of a ``content`` parameter of
+ :func:`pagegenerators.XMLDumpPageGenerator` (:phab:`T306134`).
+* :meth:`pywikibot.User.is_blocked` method was renamed from ``isBlocked`` for consistency.
+* Values of :meth:`APISite.allpages()<pywikibot.site._generators.GeneratorsMixin.allpages>`
+ parameter filterredir must be True, False or None.
+* :mod:`tools.threading` classes no longer can be imported from :mod:`tools`.
+* :mod:`tools.itertools` datatypes no longer can be imported from :mod:`tools`.
+* :mod:`tools.collections` datatypes no longer can be imported from :mod:`tools`.
+* ``svn_rev_info`` and ``getversion_svn`` of :mod:`version` module were be removed.
+ SVN repository is no longer supported. (:phab:`T362484`).
+* Old color escape sequences like ``\03{color}`` were dropped in favour of new color format like ``<<color>>``.
+* ``tools.formatter.color_format()`` was removed; the new color literals can be used instead.
+* RedirectPageBot and NoRedirectPageBot bot classes were removed in favour of
+ :attr:`use_redirects<bot.BaseBot.use_redirects>` attribute.
+
+**Other breaking changes**
+
+* Package requirements were updated (wikitextparser, pydot, python-stdnum, Pillow, PyMySQL,
+ fake-useragent)
+* Use requests_sse instead of unsupported sseclient for :mod:`comms.eventstreams` (:phab:`T309380`).
+* :mod:`backports` module is no longer a public API.
+* Drop support for MediaWiki < 1.31 (:phab:`T378984`).
+* Require ``requests >= 2.31.0`` (:phab:`T347031`).
+* Python 3.7 support was dropped (:phab:`T378893`), including *importlib_metadata* of
+ :mod:`backports`.
+* See also Current Deprecations below.
+
+
9.6.3
-----
*22 February 2025*
diff --git a/ROADMAP.rst b/ROADMAP.rst
index 0fb1b14..ba96169 100644
--- a/ROADMAP.rst
+++ b/ROADMAP.rst
@@ -1,84 +1,7 @@
Current Release Changes
=======================
-**Improvements**
-
-* Add *sort* parameter to :func:`pagegenerators.SearchPageGenerator` and :meth:`APISite.search()
- <pywikibot.site._generators.GeneratorsMixin.search>`:phab:`T386594`).
-* Add support for sylwiki (:phab:`T386466`).
-* Update :attr:`Family.cross_allowed<family.Family.cross_allowed>` lists in family files.
-* Ignore empty message warning in :class:`EventStreams<comms.eventstreams.EventStreams>`
- (:phab:`T383035`).
-* A *timeout* parameter was added to :func:`data.memento.get_closest_memento_url`
- and the default timeout was increased to 30 s (:phab:`T382943`).
-* :func:`bot.calledModuleName` returns either 'unittest' or 'pytest' during test run (:phab:`T382797`).
-* :class:`tools.threading.BoundedPoolExecutor` was added (:phab:`T333741`).
-* *args* parameter for :mod:`logging` functions can be used as formatting arguments
-* :attr:`.login.OauthLoginManager.access_token` was added.
-* Representation string for :class:`login.LoginManager` was added.
-* i18n updates.
-
-**Bugfixes**
-
-* Allow url without api path, requests path or script path in :func:`pywikibot.Site` constuctor (:phab:`T386665`).
-* Appended <<default>> color tag before the last linefeed in
- :class:`UI<userinterfaces.terminal_interface_base.UI>` (:phab:`T382884`).
-* Remove unintentional *args* parameter in :class:`tools.threading.ThreadList` (:phab:`T382787`).
-
-**Code cleanups**
-
-* Remove Structured Discussions/Flow support (:phab:`T381551`, :phab:`T371180`)
-* Remove old and deprecated variables in :mod:`config`.
-* Remove unintentional ``pywikibot.warn()``.
-* Unused *get_redirect* parameter of :meth:`BasePage.getOldVersion()<page.BasePage.getOldVersion>` was removed.
-* *baserevid* parameter of :class:`DataSite<pywikibot.site._datasite.DataSite>` methods
- :meth:`editSource()<pywikibot.site._datasite.DataSite.editSource>`,
- :meth:`editQualifier()<pywikibot.site._datasite.DataSite.editQualifier>`,
- :meth:`removeClaims()<pywikibot.site._datasite.DataSite.removeClaims>`,
- :meth:`removeSources()<pywikibot.site._datasite.DataSite.removeSources>`,
- :meth:`remove_qualifiers()<pywikibot.site._datasite.DataSite.remove_qualifiers>` were be removed.
-* ``linktrail`` methods of :class:`family.Family` and :class:`BaseSite<pywikibot.site._basesite.BaseSite>`
- were removed; use :meth:`APISite.linktrail()<pywikibot.site._apisite.APISite.linktrail>` instead.
-* Positional arguments *decoder*, *layer* and *newline* for :mod:`logging` functions are invalid;
- keyword arguments must be used instead.
-* *tb* parameter of :func:`exception()<pywikibot.logging.exception>` function was dropped;
- use *exc_info* instead.
-* The positional arguments of :meth:`page.BasePage.linkedPages` were removed.
-* ``FilePage.usingPages()`` was renamed to :meth:`using_pages()<pywikibot.FilePage.using_pages>`.
-* ``APISite.article_path`` was removed. :attr:`APISite.articlepath
- <pywikibot.site._apisite.APISite.articlepath>` can be used instead.
-* ``fix_digits`` method of :class:`textlib.TimeStripper` was removed;
- :func:`textlib.to_latin_digits` can be used instead.
-* :mod:`textlib`.tzoneFixedOffset class was removed in favour of
- :class:`time.TZoneFixedOffse<pywikibot.time.TZoneFixedOffset>`.
-* A boolean *watch* parameter in :meth:`page.BasePage.save` is desupported.
-* ``XMLDumpOldPageGenerator`` was removed in favour of a ``content`` parameter of
- :func:`pagegenerators.XMLDumpPageGenerator` (:phab:`T306134`).
-* :meth:`pywikibot.User.is_blocked` method was renamed from ``isBlocked`` for consistency.
-* Values of :meth:`APISite.allpages()<pywikibot.site._generators.GeneratorsMixin.allpages>`
- parameter filterredir must be True, False or None.
-* :mod:`tools.threading` classes no longer can be imported from :mod:`tools`.
-* :mod:`tools.itertools` datatypes no longer can be imported from :mod:`tools`.
-* :mod:`tools.collections` datatypes no longer can be imported from :mod:`tools`.
-* ``svn_rev_info`` and ``getversion_svn`` of :mod:`version` module were be removed.
- SVN repository is no longer supported. (:phab:`T362484`).
-* Old color escape sequences like ``\03{color}`` were dropped in favour of new color format like ``<<color>>``.
-* ``tools.formatter.color_format()`` was removed; the new color literals can be used instead.
-* RedirectPageBot and NoRedirectPageBot bot classes were removed in favour of
- :attr:`use_redirects<bot.BaseBot.use_redirects>` attribute.
-
-**Other breaking changes**
-
-* Package requirements were updated (wikitextparser, pydot, python-stdnum, Pillow, PyMySQL,
- fake-useragent)
-* Use requests_sse instead of unsupported sseclient for :mod:`comms.eventstreams` (:phab:`T309380`).
-* :mod:`backports` module is no longer a public API.
-* Drop support for MediaWiki < 1.31 (:phab:`T378984`).
-* Require ``requests >= 2.31.0`` (:phab:`T347031`).
-* Python 3.7 support was dropped (:phab:`T378893`), including *importlib_metadata* of
- :mod:`backports`.
-* See also Current Deprecations below.
-
+* (no changes yet)
Current Deprecations
====================
diff --git a/pywikibot/__metadata__.py b/pywikibot/__metadata__.py
index fe86eaf..7ec0048 100644
--- a/pywikibot/__metadata__.py
+++ b/pywikibot/__metadata__.py
@@ -12,6 +12,6 @@
from time import strftime
-__version__ = '10.0.0'
+__version__ = '10.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 8651d5a..260d7b6 100644
--- a/scripts/__init__.py
+++ b/scripts/__init__.py
@@ -25,7 +25,7 @@
due to spelling mistake
"""
#
-# (C) Pywikibot team, 2021-2024
+# (C) Pywikibot team, 2021-2025
#
# Distributed under the terms of the MIT license.
#
@@ -34,7 +34,7 @@
from pathlib import Path
-__version__ = '10.0.0'
+__version__ = '10.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 3c2a57f..5addb61 100644
--- a/scripts/pyproject.toml
+++ b/scripts/pyproject.toml
@@ -7,7 +7,7 @@
[project]
name = "pywikibot-scripts"
-version = "10.0.0"
+version = "10.1.0"
authors = [
{name = "xqt", email = "info(a)gno.de"},
--
To view, visit https://gerrit.wikimedia.org/r/c/pywikibot/core/+/1123761?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: I82647e1e3126100b6cbf0305e3f0c32d0810e7f0
Gerrit-Change-Number: 1123761
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/+/1123759?usp=email )
Change subject: [10] Publish Pywikibot 10
......................................................................
[10] Publish Pywikibot 10
Merge branch 'master' into stable
Bug: T378891
Change-Id: I5328baeb100e69745aa498d2ab4787e6ddc70efb
---
M .pre-commit-config.yaml
M HISTORY.rst
M ROADMAP.rst
M pywikibot/__init__.py
M pywikibot/__metadata__.py
M pywikibot/families/wikipedia_family.py
M pywikibot/site/_apisite.py
M scripts/CHANGELOG.rst
M scripts/pyproject.toml
M tests/utils.py
11 files changed, 221 insertions(+), 177 deletions(-)
Approvals:
Xqt: Looks good to me, approved
jenkins-bot: Verified
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index ec419ea..8e264d5 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -58,13 +58,7 @@
- id: rst-inline-touching-normal
- id: text-unicode-replacement-char
- repo: https://github.com/astral-sh/ruff-pre-commit
-<<<<<<< HEAD (95b965 Update git submodules)
- rev: v0.9.7
-||||||| BASE
- rev: v0.8.0
-=======
rev: v0.9.9
->>>>>>> BRANCH (c2b799 [10] Publish Pywikibot 10)
hooks:
- id: ruff
args:
@@ -87,13 +81,7 @@
- --remove-unused-variables
exclude: '^pywikibot/backports\.py$'
- repo: https://github.com/PyCQA/isort
-<<<<<<< HEAD (95b965 Update git submodules)
- rev: 6.0.0
-||||||| BASE
- rev: 5.13.2
-=======
rev: 6.0.1
->>>>>>> BRANCH (c2b799 [10] Publish Pywikibot 10)
hooks:
- id: isort
exclude: '^pwb\.py$'
diff --git a/HISTORY.rst b/HISTORY.rst
index 1e4c8a1..fcca87c 100644
--- a/HISTORY.rst
+++ b/HISTORY.rst
@@ -1,24 +1,6 @@
Release History
===============
-<<<<<<< HEAD (95b965 Update git submodules)
-9.6.2
------
-*02 February 2025*
-
-* Add support for kncwiki (:phab:`T385187`)
-* Fix a f-string in :meth:`Claim.fromJSON()<pywikibot.Claim.fromJSON>`
-* i18n updates.
-
-9.6.1
------
-*13 December 2024*
-
-* Add support for tigwiki (:phab:`T381381`)
-* Fix use of importlib.metadata.entry_points for pywikibot-scripts with Python 3.8 and 3.9 (:phab:`T358635`)
-* i18n updates.
-||||||| BASE
-=======
9.6.3
-----
*22 February 2025*
@@ -45,7 +27,6 @@
* Fix use of importlib.metadata.entry_points for pywikibot-scripts with Python 3.8 and 3.9 (:phab:`T358635`)
* i18n updates.
->>>>>>> BRANCH (c2b799 [10] Publish Pywikibot 10)
9.6.0
-----
diff --git a/ROADMAP.rst b/ROADMAP.rst
index 2024ea8..0fb1b14 100644
--- a/ROADMAP.rst
+++ b/ROADMAP.rst
@@ -1,12 +1,6 @@
Current Release Changes
=======================
-<<<<<<< HEAD (95b965 Update git submodules)
-* Add support for satwiktionary (:phab:`T386633`)
-* Update wiktionary family file
-* i18n updates.
-||||||| BASE
-=======
**Improvements**
* Add *sort* parameter to :func:`pagegenerators.SearchPageGenerator` and :meth:`APISite.search()
@@ -84,7 +78,6 @@
* Python 3.7 support was dropped (:phab:`T378893`), including *importlib_metadata* of
:mod:`backports`.
* See also Current Deprecations below.
->>>>>>> BRANCH (c2b799 [10] Publish Pywikibot 10)
Current Deprecations
@@ -122,14 +115,10 @@
* 9.0.0: ``SequenceOutputter.output()`` is deprecated in favour of :attr:`tools.formatter.SequenceOutputter.out`
property
* 9.0.0: *nullcontext* context manager and *SimpleQueue* queue of :mod:`backports` are deprecated
-<<<<<<< HEAD (95b965 Update git submodules)
-||||||| BASE
-=======
Pending removal in Pywikibot 11
-------------------------------
->>>>>>> BRANCH (c2b799 [10] Publish Pywikibot 10)
* 8.4.0: *modules_only_mode* parameter of :class:`data.api.ParamInfo`, its *paraminfo_keys* class attribute
and its preloaded_modules property will be removed
* 8.4.0: *dropdelay* and *releasepid* attributes of :class:`throttle.Throttle` will be removed
@@ -155,70 +144,3 @@
:attr:`userinfo['messages']<pywikibot.site._apisite.APISite.userinfo>`
* 8.0.0: :meth:`Page.editTime()<page.BasePage.editTime>` method is deprecated and should be replaced by
:attr:`Page.latest_revision.timestamp<page.BasePage.latest_revision>`
-<<<<<<< HEAD (95b965 Update git submodules)
-
-
-Pending removal in Pywikibot 10
--------------------------------
-
-* 9.6.0: Python 3.7 support is deprecated and will be dropped with Pywikibot 10
-* 9.4.0: :mod:`flow` support is deprecated and will be removed (:phab:`T371180`)
-* 9.1.0: :func:`version.svn_rev_info` and :func:`version.getversion_svn` will be removed. SVN is no longer supported.
- (:phab:`T362484`)
-* 7.7.0: :mod:`tools.threading` classes should no longer imported from :mod:`tools`
-* 7.6.0: :mod:`tools.itertools` datatypes should no longer imported from :mod:`tools`
-* 7.6.0: :mod:`tools.collections` datatypes should no longer imported from :mod:`tools`
-* 7.5.0: :mod:`textlib`.tzoneFixedOffset class will be removed in favour of :class:`time.TZoneFixedOffset`
-* 7.4.0: ``FilePage.usingPages()`` was renamed to :meth:`using_pages()<pywikibot.FilePage.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: ``linktrail`` method of :class:`family.Family` is deprecated; use :meth:`APISite.linktrail()
- <pywikibot.site._apisite.APISite.linktrail>` instead
-* 7.2.0: Positional arguments *decoder*, *layer* and *newline* for :mod:`logging` functions were dropped; keyword
- arguments must be used instead.
-* 7.2.0: ``tb`` parameter of :func:`exception()<pywikibot.logging.exception>` function was renamed to ``exc_info``
-* 7.2.0: XMLDumpOldPageGenerator is deprecated in favour of a ``content`` parameter of
- :func:`XMLDumpPageGenerator<pagegenerators.XMLDumpPageGenerator>` (:phab:`T306134`)
-* 7.2.0: RedirectPageBot and NoRedirectPageBot bot classes are deprecated in favour of
- :attr:`use_redirects<bot.BaseBot.use_redirects>` attribute
-* 7.2.0: :func:`tools.formatter.color_format<tools.formatter.color_format>` is deprecated and will be removed
-* 7.1.0: Unused ``get_redirect`` parameter of :meth:`Page.getOldVersion()<page.BasePage.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'
-||||||| BASE
-
-
-Pending removal in Pywikibot 10
--------------------------------
-
-* 9.6.0: Python 3.7 support is deprecated and will be dropped with Pywikibot 10
-* 9.1.0: :func:`version.svn_rev_info` and :func:`version.getversion_svn` will be removed. SVN is no longer supported.
- (:phab:`T362484`)
-* 7.7.0: :mod:`tools.threading` classes should no longer imported from :mod:`tools`
-* 7.6.0: :mod:`tools.itertools` datatypes should no longer imported from :mod:`tools`
-* 7.6.0: :mod:`tools.collections` datatypes should no longer imported from :mod:`tools`
-* 7.5.0: :mod:`textlib`.tzoneFixedOffset class will be removed in favour of :class:`time.TZoneFixedOffset`
-* 7.4.0: ``FilePage.usingPages()`` was renamed to :meth:`using_pages()<pywikibot.FilePage.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: ``linktrail`` method of :class:`family.Family` is deprecated; use :meth:`APISite.linktrail()
- <pywikibot.site._apisite.APISite.linktrail>` instead
-* 7.2.0: Positional arguments *decoder*, *layer* and *newline* for :mod:`logging` functions were dropped; keyword
- arguments must be used instead.
-* 7.2.0: ``tb`` parameter of :func:`exception()<pywikibot.logging.exception>` function was renamed to ``exc_info``
-* 7.2.0: XMLDumpOldPageGenerator is deprecated in favour of a ``content`` parameter of
- :func:`XMLDumpPageGenerator<pagegenerators.XMLDumpPageGenerator>` (:phab:`T306134`)
-* 7.2.0: RedirectPageBot and NoRedirectPageBot bot classes are deprecated in favour of
- :attr:`use_redirects<bot.BaseBot.use_redirects>` attribute
-* 7.2.0: :func:`tools.formatter.color_format<tools.formatter.color_format>` is deprecated and will be removed
-* 7.1.0: Unused ``get_redirect`` parameter of :meth:`Page.getOldVersion()<page.BasePage.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'
-=======
->>>>>>> BRANCH (c2b799 [10] Publish Pywikibot 10)
diff --git a/pywikibot/__init__.py b/pywikibot/__init__.py
index 09056e0..9449596 100644
--- a/pywikibot/__init__.py
+++ b/pywikibot/__init__.py
@@ -59,7 +59,7 @@
)
from pywikibot.site import BaseSite as _BaseSite
from pywikibot.time import Timestamp
-from pywikibot.tools import PYTHON_VERSION, normalize_username
+from pywikibot.tools import normalize_username
if TYPE_CHECKING:
@@ -87,15 +87,6 @@
_sites: dict[str, APISite] = {}
-if PYTHON_VERSION < (3, 8):
- __version = sys.version.split(maxsplit=1)[0]
- warn(f"""
-
- Python {__version} will be dropped soon with Pywikibot 10.
- It is recommended to use Python 3.8 or above.
- See phab: T379227 for further information.
-""", FutureWarning) # adjust this line no in utils.execute()
-
@cache
def _code_fam_from_url(url: str, name: str | None = None
diff --git a/pywikibot/__metadata__.py b/pywikibot/__metadata__.py
index 7e0906c..fe86eaf 100644
--- a/pywikibot/__metadata__.py
+++ b/pywikibot/__metadata__.py
@@ -12,12 +12,6 @@
from time import strftime
-<<<<<<< HEAD (95b965 Update git submodules)
-__version__ = '9.6.3'
-||||||| BASE
-__version__ = '9.6.1'
-=======
__version__ = '10.0.0'
->>>>>>> BRANCH (c2b799 [10] Publish Pywikibot 10)
__url__ = 'https://www.mediawiki.org/wiki/Manual:Pywikibot'
__copyright__ = f'2003-{strftime("%Y")}, Pywikibot team'
diff --git a/pywikibot/families/wikipedia_family.py b/pywikibot/families/wikipedia_family.py
index 1d14240..1600016 100644
--- a/pywikibot/families/wikipedia_family.py
+++ b/pywikibot/families/wikipedia_family.py
@@ -55,28 +55,12 @@
'roa-rup', 'roa-tara', 'rsk', 'ru', 'rue', 'rw', 'sa', 'sah', 'sat',
'sc', 'scn', 'sco', 'sd', 'se', 'sg', 'sh', 'shi', 'shn', 'si',
'simple', 'sk', 'skr', 'sl', 'sm', 'smn', 'sn', 'so', 'sq', 'sr',
-<<<<<<< HEAD (95b965 Update git submodules)
- 'srn', 'ss', 'st', 'stq', 'su', 'sv', 'sw', 'szl', 'szy', 'ta', 'tay',
- 'tcy', 'tdd', 'te', 'tet', 'tg', 'th', 'ti', 'tig', 'tk', 'tl', 'tly',
- 'tn', 'to', 'tpi', 'tr', 'trv', 'ts', 'tt', 'tum', 'tw', 'ty', 'tyv',
- 'udm', 'ug', 'uk', 'ur', 'uz', 've', 'vec', 'vep', 'vi', 'vls', 'vo',
- 'wa', 'war', 'wo', 'wuu', 'xal', 'xh', 'xmf', 'yi', 'yo', 'za', 'zea',
- 'zgh', 'zh', 'zh-classical', 'zh-min-nan', 'zh-yue', 'zu',
-||||||| BASE
- 'srn', 'ss', 'st', 'stq', 'su', 'sv', 'sw', 'szl', 'szy', 'ta', 'tay',
- 'tcy', 'tdd', 'te', 'tet', 'tg', 'th', 'ti', 'tk', 'tl', 'tly', 'tn',
- 'to', 'tpi', 'tr', 'trv', 'ts', 'tt', 'tum', 'tw', 'ty', 'tyv', 'udm',
- 'ug', 'uk', 'ur', 'uz', 've', 'vec', 'vep', 'vi', 'vls', 'vo', 'wa',
- 'war', 'wo', 'wuu', 'xal', 'xh', 'xmf', 'yi', 'yo', 'za', 'zea', 'zgh',
- 'zh', 'zh-classical', 'zh-min-nan', 'zh-yue', 'zu',
-=======
'srn', 'ss', 'st', 'stq', 'su', 'sv', 'sw', 'syl', 'szl', 'szy', 'ta',
'tay', 'tcy', 'tdd', 'te', 'tet', 'tg', 'th', 'ti', 'tig', 'tk', 'tl',
'tly', 'tn', 'to', 'tpi', 'tr', 'trv', 'ts', 'tt', 'tum', 'tw', 'ty',
'tyv', 'udm', 'ug', 'uk', 'ur', 'uz', 've', 'vec', 'vep', 'vi', 'vls',
'vo', 'wa', 'war', 'wo', 'wuu', 'xal', 'xh', 'xmf', 'yi', 'yo', 'za',
'zea', 'zgh', 'zh', 'zh-classical', 'zh-min-nan', 'zh-yue', 'zu',
->>>>>>> BRANCH (c2b799 [10] Publish Pywikibot 10)
}
# Sites we want to edit but not count as real languages
diff --git a/pywikibot/site/_apisite.py b/pywikibot/site/_apisite.py
index 527f9a5..9480955 100644
--- a/pywikibot/site/_apisite.py
+++ b/pywikibot/site/_apisite.py
@@ -1232,18 +1232,6 @@
raise
if MediaWikiVersion(version) < '1.31':
-<<<<<<< HEAD (95b965 Update git submodules)
- warn('\n'
- + fill(f'Support of MediaWiki {version} will be dropped. '
- 'It is recommended to use MediaWiki 1.31 or above. '
- 'You may use every Pywikibot 9.X for older MediaWiki '
- 'versions. See T378984 for further information.'),
- FutureWarning)
-
- if MediaWikiVersion(version) < '1.27':
-||||||| BASE
-=======
->>>>>>> BRANCH (c2b799 [10] Publish Pywikibot 10)
raise RuntimeError(f'Pywikibot "{pywikibot.__version__}" does not '
f'support MediaWiki "{version}".\nUse '
f'Pywikibot prior to "10.0" branch instead.')
diff --git a/scripts/CHANGELOG.rst b/scripts/CHANGELOG.rst
index 90a4772..3ec3911 100644
--- a/scripts/CHANGELOG.rst
+++ b/scripts/CHANGELOG.rst
@@ -1,13 +1,6 @@
Scripts Changelog
=================
-<<<<<<< HEAD (95b965 Update git submodules)
-9.6.1
------
-
-* Require Pywikibot 9.6.1 (:phab:`T358635`)
-||||||| BASE
-=======
10.0.0
------
@@ -38,7 +31,6 @@
* Require Pywikibot 9.6.1 (:phab:`T358635`)
* i18n updates
->>>>>>> BRANCH (c2b799 [10] Publish Pywikibot 10)
9.6.0
-----
diff --git a/scripts/pyproject.toml b/scripts/pyproject.toml
index 683ea07..3c2a57f 100644
--- a/scripts/pyproject.toml
+++ b/scripts/pyproject.toml
@@ -7,13 +7,7 @@
[project]
name = "pywikibot-scripts"
-<<<<<<< HEAD (95b965 Update git submodules)
-version = "9.6.1"
-||||||| BASE
-version = "9.6.0"
-=======
version = "10.0.0"
->>>>>>> BRANCH (c2b799 [10] Publish Pywikibot 10)
authors = [
{name = "xqt", email = "info(a)gno.de"},
@@ -25,13 +19,7 @@
readme = "scripts/README.rst"
requires-python = ">=3.8.0"
dependencies = [
-<<<<<<< HEAD (95b965 Update git submodules)
- "pywikibot >= 9.6.1",
-||||||| BASE
- "pywikibot >= 9.4.0",
-=======
"pywikibot >= 10.0.0",
->>>>>>> BRANCH (c2b799 [10] Publish Pywikibot 10)
"isbnlib",
"langdetect",
"mwparserfromhell",
diff --git a/tests/utils.py b/tests/utils.py
index 89b92bb..c80e331 100644
--- a/tests/utils.py
+++ b/tests/utils.py
@@ -23,7 +23,6 @@
from pywikibot.exceptions import APIError
from pywikibot.login import LoginStatus
from pywikibot.site import Namespace
-from pywikibot.tools import PYTHON_VERSION
from pywikibot.tools.collections import EMPTY_DEFAULT
from tests import _pwb_py
@@ -474,9 +473,6 @@
:param command: executable to run and arguments to use
"""
- if PYTHON_VERSION < (3, 8):
- command.insert(1, '-W ignore::FutureWarning:pywikibot:97')
-
env = os.environ.copy()
# Prevent output by test package; e.g. 'max_retries reduced from x to y'
--
To view, visit https://gerrit.wikimedia.org/r/c/pywikibot/core/+/1123759?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: stable
Gerrit-Change-Id: I5328baeb100e69745aa498d2ab4787e6ddc70efb
Gerrit-Change-Number: 1123759
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/+/1123740?usp=email )
Change subject: Doc: Update ROADMAP.rst and CHANGELOG.rst
......................................................................
Doc: Update ROADMAP.rst and CHANGELOG.rst
Change-Id: I9cc7f3d234899acffe963ec285d0306c9aa79ff4
---
M ROADMAP.rst
M scripts/CHANGELOG.rst
2 files changed, 20 insertions(+), 12 deletions(-)
Approvals:
Xqt: Looks good to me, approved
jenkins-bot: Verified
diff --git a/ROADMAP.rst b/ROADMAP.rst
index ec713fa..0fb1b14 100644
--- a/ROADMAP.rst
+++ b/ROADMAP.rst
@@ -3,7 +3,10 @@
**Improvements**
-* Update :attr:`Family.cross_allowed<family.Family.cross_allowed>` lists in family files
+* Add *sort* parameter to :func:`pagegenerators.SearchPageGenerator` and :meth:`APISite.search()
+ <pywikibot.site._generators.GeneratorsMixin.search>`:phab:`T386594`).
+* Add support for sylwiki (:phab:`T386466`).
+* Update :attr:`Family.cross_allowed<family.Family.cross_allowed>` lists in family files.
* Ignore empty message warning in :class:`EventStreams<comms.eventstreams.EventStreams>`
(:phab:`T383035`).
* A *timeout* parameter was added to :func:`data.memento.get_closest_memento_url`
@@ -17,14 +20,16 @@
**Bugfixes**
+* Allow url without api path, requests path or script path in :func:`pywikibot.Site` constuctor (:phab:`T386665`).
* Appended <<default>> color tag before the last linefeed in
:class:`UI<userinterfaces.terminal_interface_base.UI>` (:phab:`T382884`).
* Remove unintentional *args* parameter in :class:`tools.threading.ThreadList` (:phab:`T382787`).
**Code cleanups**
-* Remove old and deprecated variables in :mod:`config`
-* Remove unintentional ``pywikibot.warn()``
+* Remove Structured Discussions/Flow support (:phab:`T381551`, :phab:`T371180`)
+* Remove old and deprecated variables in :mod:`config`.
+* Remove unintentional ``pywikibot.warn()``.
* Unused *get_redirect* parameter of :meth:`BasePage.getOldVersion()<page.BasePage.getOldVersion>` was removed.
* *baserevid* parameter of :class:`DataSite<pywikibot.site._datasite.DataSite>` methods
:meth:`editSource()<pywikibot.site._datasite.DataSite.editSource>`,
@@ -64,9 +69,12 @@
**Other breaking changes**
+* Package requirements were updated (wikitextparser, pydot, python-stdnum, Pillow, PyMySQL,
+ fake-useragent)
+* Use requests_sse instead of unsupported sseclient for :mod:`comms.eventstreams` (:phab:`T309380`).
* :mod:`backports` module is no longer a public API.
-* Drop support for MediaWiki < 1.31 (:phab:`T378984`)
-* Require ``requests >= 2.31.0`` (:phab:`T347031`)
+* Drop support for MediaWiki < 1.31 (:phab:`T378984`).
+* Require ``requests >= 2.31.0`` (:phab:`T347031`).
* Python 3.7 support was dropped (:phab:`T378893`), including *importlib_metadata* of
:mod:`backports`.
* See also Current Deprecations below.
@@ -136,9 +144,3 @@
:attr:`userinfo['messages']<pywikibot.site._apisite.APISite.userinfo>`
* 8.0.0: :meth:`Page.editTime()<page.BasePage.editTime>` method is deprecated and should be replaced by
:attr:`Page.latest_revision.timestamp<page.BasePage.latest_revision>`
-
-
-Pending removal in Pywikibot 10
--------------------------------
-
-* 9.4.0: :mod:`flow` support is deprecated and will be removed (:phab:`T371180`)
diff --git a/scripts/CHANGELOG.rst b/scripts/CHANGELOG.rst
index a94ccee..3ec3911 100644
--- a/scripts/CHANGELOG.rst
+++ b/scripts/CHANGELOG.rst
@@ -13,7 +13,13 @@
^^^^^^^^^^
* Fix mangling screen messages in ``-async`` mode (:phab:`T382797`)
-* save the talk page in asynchronous mode if ``-async`` option was given
+* Save the talk page in asynchronous mode if ``-async`` option was given
+
+category
+^^^^^^^^
+
+* Ensure that ``-from`` and ``-to`` arguments are not equal (:phab:`T384753`)
+
dataextend
^^^^^^^^^^
--
To view, visit https://gerrit.wikimedia.org/r/c/pywikibot/core/+/1123740?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: I9cc7f3d234899acffe963ec285d0306c9aa79ff4
Gerrit-Change-Number: 1123740
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/core/+/1122110?usp=email )
Change subject: [IMPR] Add sort parameter to SearchPageGenerator and site.search()
......................................................................
[IMPR] Add sort parameter to SearchPageGenerator and site.search()
Bug: T386594
Change-Id: If30e930d9afc5847c0642b13aac2868fa8d2a1d8
---
M pywikibot/pagegenerators/_generators.py
M pywikibot/site/_generators.py
2 files changed, 55 insertions(+), 18 deletions(-)
Approvals:
Xqt: Looks good to me, approved
jenkins-bot: Verified
diff --git a/pywikibot/pagegenerators/_generators.py b/pywikibot/pagegenerators/_generators.py
index 42a54c6..e07544f 100644
--- a/pywikibot/pagegenerators/_generators.py
+++ b/pywikibot/pagegenerators/_generators.py
@@ -1,6 +1,6 @@
"""Page filter generators provided by the pagegenerators module."""
#
-# (C) Pywikibot team, 2008-2024
+# (C) Pywikibot team, 2008-2025
#
# Distributed under the terms of the MIT license.
#
@@ -815,16 +815,32 @@
query: str,
total: int | None = None,
namespaces: NamespaceArgType = None,
- site: BaseSite | None = None
+ site: BaseSite | None = None,
+ **kwargs
) -> Iterable[pywikibot.page.Page]:
- """Yield pages from the MediaWiki internal search engine.
+ r"""Yield pages from the MediaWiki internal search engine.
+ .. versionchanged:: 10.0
+ Keyword arguments *content*, *sort* and *where* was added.
+
+ .. seealso:: :meth:`site.search()
+ <pywikibot.site._generators.GeneratorsMixin.search>`
+
+ :param query: the text to search for
:param total: Maximum number of pages to retrieve in total
+ :param namespaces: search only in these namespaces (defaults to all)
:param site: Site for generator results.
+ :keyword str \| None where: Where to search; value must be one of the
+ given literals or None (many wikis do not support all search
+ types)
+ :keyword bool content: if True, load the current content of each
+ iterated page (default False)
+ :keyword sort: Set the sort order of returned results. If None is
+ given, 'none' is used. Default is sort by relevance.
"""
if site is None:
site = pywikibot.Site()
- return site.search(query, total=total, namespaces=namespaces)
+ return site.search(query, total=total, namespaces=namespaces, **kwargs)
def LiveRCPageGenerator(site: BaseSite | None = None,
diff --git a/pywikibot/site/_generators.py b/pywikibot/site/_generators.py
index 7e0bae6..92a2229 100644
--- a/pywikibot/site/_generators.py
+++ b/pywikibot/site/_generators.py
@@ -1,6 +1,6 @@
"""Objects representing API generators to MediaWiki site."""
#
-# (C) Pywikibot team, 2008-2024
+# (C) Pywikibot team, 2008-2025
#
# Distributed under the terms of the MIT license.
#
@@ -8,9 +8,10 @@
import heapq
import itertools
+import typing
from contextlib import suppress
from itertools import zip_longest
-from typing import TYPE_CHECKING, Any
+from typing import Any
import pywikibot
from pywikibot.backports import Callable, Generator, Iterable, batched
@@ -29,7 +30,7 @@
from pywikibot.tools.itertools import filter_unique
-if TYPE_CHECKING:
+if typing.TYPE_CHECKING:
from data.api import ParamInfo, Request
from pywikibot.site._apisite import _RequestWrapperT
@@ -42,7 +43,7 @@
"""API generators mixin to MediaWiki site."""
- if TYPE_CHECKING:
+ if typing.TYPE_CHECKING:
_generator: Callable[..., _RequestWrapperT]
_paraminfo: ParamInfo
_request: Callable[..., Request]
@@ -1546,14 +1547,20 @@
searchstring: str,
*,
namespaces: NamespaceArgType = None,
- where: str | None = None,
+ where: typing.Literal['text', 'title', 'nearmatch'] | None = None,
total: int | None = None,
content: bool = False,
+ sort: typing.Literal[
+ 'create_timestamp_asc', 'create_timestamp_desc',
+ 'incoming_links_asc', 'incoming_links_desc', 'just_match',
+ 'last_edit_asc', 'last_edit_desc', 'none', 'random', 'relevance',
+ 'user_random'
+ ] | None = 'relevance',
) -> Iterable[pywikibot.Page]:
"""Iterate Pages that contain the searchstring.
- Note that this may include non-existing Pages if the wiki's database
- table contains outdated entries.
+ Note that this may include non-existing Pages if the wiki's
+ database table contains outdated entries.
.. versionchanged:: 7.0
Default of `where` parameter has been changed from 'text' to
@@ -1561,15 +1568,21 @@
which is 'text' on CirrusSearch'.
raises APIError instead of Error if searchstring is not set
or what parameter is wrong.
+ .. versionchanged:: 10.0
+ The *sort* parameter was added.
.. seealso:: :api:`Search`
:param searchstring: the text to search for
- :param where: Where to search; value must be "text", "title",
- "nearmatch" or None (many wikis do not support all search types)
- :param namespaces: search only in these namespaces (defaults to all)
- :param content: if True, load the current content of each iterated page
- (default False)
+ :param namespaces: search only in these namespaces (defaults to
+ all)
+ :param where: Where to search; value must be one of the given
+ literals or None (many wikis do not support all search types)
+ :param total: limit result to this number of pages
+ :param content: if True, load the current content of each
+ iterated page (default False)
+ :param sort: Set the sort order of returned results. If None is
+ given, 'none' is used. Default is sort by relevance.
:raises KeyError: a namespace identifier was not resolved
:raises TypeError: a namespace identifier has an inappropriate
type such as NoneType or bool
@@ -1580,10 +1593,18 @@
"""
if not namespaces and namespaces != 0:
namespaces = [ns_id for ns_id in self.namespaces if ns_id >= 0]
+ parameters = {
+ 'gsrsearch': searchstring,
+ 'gsrwhat': where,
+ }
+ if sort is None:
+ sort = 'none'
+ if sort != 'relevance':
+ parameters['gsrsort'] = sort
srgen = self._generator(api.PageGenerator, type_arg='search',
- gsrsearch=searchstring, gsrwhat=where,
namespaces=namespaces,
- total=total, g_content=content)
+ total=total, g_content=content,
+ parameters=parameters)
return srgen
def usercontribs(
--
To view, visit https://gerrit.wikimedia.org/r/c/pywikibot/core/+/1122110?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: If30e930d9afc5847c0642b13aac2868fa8d2a1d8
Gerrit-Change-Number: 1122110
Gerrit-PatchSet: 2
Gerrit-Owner: Xqt <info(a)gno.de>
Gerrit-Reviewer: Xqt <info(a)gno.de>
Gerrit-Reviewer: jenkins-bot