jenkins-bot has submitted this change. ( 
https://gerrit.wikimedia.org/r/c/pywikibot/core/+/1356649?usp=email )

Change subject: release: Prepare next release 11.10.0
......................................................................

release: Prepare next release 11.10.0

Change-Id: I6bfff972f483507c48c88a2c752d0d406287732f
---
M .github/workflows/doctest.yml
M .github/workflows/graalpy_tests.yml
M .github/workflows/login_tests-ci.yml
M .github/workflows/oauth_tests-ci.yml
M .github/workflows/pre-commit.yml
M .github/workflows/pywikibot-ci.yml
M .github/workflows/sysop_write_tests-ci.yml
M .github/workflows/windows_tests.yml
M .pre-commit-config.yaml
M HISTORY.rst
M ROADMAP.rst
M dev-requirements.txt
M pywikibot/__metadata__.py
M scripts/__init__.py
M scripts/pyproject.toml
15 files changed, 66 insertions(+), 84 deletions(-)

Approvals:
  jenkins-bot: Verified
  Xqt: Looks good to me, approved




diff --git a/.github/workflows/doctest.yml b/.github/workflows/doctest.yml
index 4740f2d..f1cb043 100644
--- a/.github/workflows/doctest.yml
+++ b/.github/workflows/doctest.yml
@@ -22,14 +22,13 @@
 jobs:
   build:
     runs-on: ${{ matrix.os || 'ubuntu-latest' }}
-    timeout-minutes: 16
+    timeout-minutes: 15
     strategy:
       fail-fast: false
       matrix:
-        python-version: [pypy3.11, '3.10', '3.11', '3.12', '3.13', '3.14']
+        python-version: [pypy3.11, '3.10', '3.11', '3.12', '3.13', '3.14', 
'3.15']
         os: [windows-latest, macOS-latest, ubuntu-latest]
         include:
-          - python-version: 3.15-dev
           - python-version: 3.16-dev
             experimental: true
         exclude:  # Test already made on Jenkins
diff --git a/.github/workflows/graalpy_tests.yml 
b/.github/workflows/graalpy_tests.yml
index faf1073..ce23ddd 100644
--- a/.github/workflows/graalpy_tests.yml
+++ b/.github/workflows/graalpy_tests.yml
@@ -23,7 +23,7 @@
   build:
     runs-on: ${{ matrix.os || 'ubuntu-latest' }}
     continue-on-error: ${{ matrix.experimental || false }}
-    timeout-minutes: 40
+    timeout-minutes: 35
     strategy:
       fail-fast: false
       matrix:
diff --git a/.github/workflows/login_tests-ci.yml 
b/.github/workflows/login_tests-ci.yml
index 4617748..741e2d1 100644
--- a/.github/workflows/login_tests-ci.yml
+++ b/.github/workflows/login_tests-ci.yml
@@ -41,21 +41,12 @@
     name: Run Login/Logout Tests
     runs-on: ${{ matrix.os || 'ubuntu-latest' }}
     needs: wait_for_all
-    timeout-minutes: 45
+    timeout-minutes: 40
     strategy:
       fail-fast: false
       max-parallel: 1
       matrix:
-        python-version:
-          - pypy3.9
-          - pypy3.11
-          - '3.9'
-          - '3.10'
-          - '3.11'
-          - '3.12'
-          - '3.13'
-          - '3.14'
-          - 3.15-dev
+        python-version: [pypy3.9, pypy3.11, '3.9', '3.10', '3.11', '3.12', 
'3.13', '3.14', '3.15']
         site: ['wikipedia:en', 'wikisource:zh', 'wikipedia:test']
         include:
           - python-version: '3.9'
diff --git a/.github/workflows/oauth_tests-ci.yml 
b/.github/workflows/oauth_tests-ci.yml
index aa288f6..1b9beca 100644
--- a/.github/workflows/oauth_tests-ci.yml
+++ b/.github/workflows/oauth_tests-ci.yml
@@ -23,20 +23,11 @@
   build:
     runs-on: ${{ matrix.os || 'ubuntu-latest' }}
     continue-on-error: ${{ matrix.experimental || false }}
-    timeout-minutes: 6
+    timeout-minutes: 7
     strategy:
       fail-fast: false
       matrix:
-        python-version:
-          - pypy3.9
-          - pypy3.11
-          - '3.9'
-          - '3.10'
-          - '3.11'
-          - '3.12'
-          - '3.13'
-          - '3.14'
-          - 3.15-dev
+        python-version: [pypy3.9, pypy3.11, '3.9', '3.10', '3.11', '3.12', 
'3.13', '3.14', '3.15']
         family: [wikipedia]
         code: [test]
         domain: [test.wikipedia.org]
diff --git a/.github/workflows/pre-commit.yml b/.github/workflows/pre-commit.yml
index 3f9cc35..5cbb8fc 100644
--- a/.github/workflows/pre-commit.yml
+++ b/.github/workflows/pre-commit.yml
@@ -22,16 +22,15 @@
   pre-commit:
     runs-on: ${{ matrix.os || 'ubuntu-latest' }}
     continue-on-error: ${{ matrix.experimental || false }}
-    timeout-minutes: 8
+    timeout-minutes: 9
     strategy:
       fail-fast: false
       matrix:
-        python-version: ['3.10', '3.13', '3.14']
+        python-version: ['3.10', '3.13', '3.14', '3.15']
         os: [windows-latest, macOS-latest]
         include:
           - python-version: '3.13'
-            os: ubuntu-latest
-          - python-version: 3.15-dev
+          - python-version: '3.15'
     steps:
       - name: set up python ${{ matrix.python-version }}
         uses: actions/setup-python@v7
diff --git a/.github/workflows/pywikibot-ci.yml 
b/.github/workflows/pywikibot-ci.yml
index 73058b4..0a8ab12 100644
--- a/.github/workflows/pywikibot-ci.yml
+++ b/.github/workflows/pywikibot-ci.yml
@@ -40,6 +40,7 @@
           - '3.12'
           - '3.13'
           - '3.14'
+          - '3.15'
         site: ['wikipedia:en', 'wikisource:zh']
         include:
           - python-version: '3.9'
@@ -66,16 +67,11 @@
             site: wikipedia:test
           - python-version: 3.14t
             site: wikipedia:test
+          - python-version: 3.15t
+            site: wikipedia:test
           - python-version: 3.16-dev
             site: wikipedia:test
             experimental: true
-          # ubuntu-22.04 required 3.15-dev due to T382214
-          - python-version: 3.15-dev
-            site: wikipedia:en
-            os: ubuntu-22.04
-          - python-version: 3.15-dev
-            site: wikisource:zh
-            os: ubuntu-22.04
     steps:
       - name: Checkout Repository
         uses: actions/checkout@v7
diff --git a/.github/workflows/sysop_write_tests-ci.yml 
b/.github/workflows/sysop_write_tests-ci.yml
index 2090746..ee68b5b 100644
--- a/.github/workflows/sysop_write_tests-ci.yml
+++ b/.github/workflows/sysop_write_tests-ci.yml
@@ -23,7 +23,7 @@
   build:
     runs-on: ubuntu-latest
     continue-on-error: ${{ matrix.experimental || false }}
-    timeout-minutes: 25
+    timeout-minutes: 20
     strategy:
       fail-fast: false
       matrix:
diff --git a/.github/workflows/windows_tests.yml 
b/.github/workflows/windows_tests.yml
index aa746dd..359a0fd 100644
--- a/.github/workflows/windows_tests.yml
+++ b/.github/workflows/windows_tests.yml
@@ -27,7 +27,7 @@
     strategy:
       fail-fast: false
       matrix:
-        python-version: [3.9.0, '3.9', '3.10', '3.11', '3.12', '3.13', '3.14']
+        python-version: [3.9.0, '3.9', '3.10', '3.11', '3.12', '3.13', '3.14', 
'3.15']
         python-arch: [x64, x86]
         site: ['wikipedia:en']
     steps:
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 98538bb..ba1cdec 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -52,7 +52,7 @@
       - id: rst-inline-touching-normal
       - id: text-unicode-replacement-char
   - repo: https://github.com/rvben/rumdl-pre-commit
-    rev: v0.2.79
+    rev: v0.3.0
     hooks:
       - id: rumdl  # Lint only; add args [--fix] to auto-fix
       - id: rumdl-fmt  # Pure format, always exits 0
@@ -69,7 +69,7 @@
     hooks:
       - id: yamlfix
   - repo: https://github.com/astral-sh/ruff-pre-commit
-    rev: v0.16.9
+    rev: v0.17.1
     hooks:
       - id: ruff-check
         alias: ruff
@@ -118,7 +118,7 @@
           - flake8-print>=5.0.0
           - pep8-naming>=0.15.1
   - repo: https://github.com/pre-commit/mirrors-mypy
-    rev: v2.3.1
+    rev: v2.4.0
     hooks:
       - id: mypy
         args: [--config-file=pyproject.toml, --follow-imports=silent]
diff --git a/HISTORY.rst b/HISTORY.rst
index 57b2e45..0b66973 100644
--- a/HISTORY.rst
+++ b/HISTORY.rst
@@ -1,9 +1,46 @@
 Release History
 ===============

+11.9.0
+------
+*18 October 2026*
+
+* Add support for mlwwikivoyage. (:phab:`T441175`)
+* Update translations (i18n).
+* Various performance, stability, and code quality improvements.
+* Fix ZIP discovery and duplicate import paths in 
:func:`config.register_families_folder`.
+* Unify negative :ref:`page generator options<GENERATOR OPTIONS>`. 
(:phab:`T219282`)
+* Keep the sign of negative POSIX 
:class:`timestamps<<pywikibot.time.Timestamp>`.
+* Use the :attr:`page.BasePage.site` in :meth:`page.BasePage.change_category` 
when calling
+  :func:`textlib.replaceCategoryLinks` to respect category namespaces and 
footer rules.
+* Validate :attr:`pywikibot.Link.title` length in UTF-8 bytes within 
:meth:`pywikibot.Link.parse`.
+* Normalize usernames in :func:`pagegenerators.UserEditFilterGenerator` to 
match
+  canonical API names.
+* Verify zero-byte stashes against the empty hash in 
:func:`tools.compute_file_hash`.
+* Accept optional leading hyphens and period or hyphen separators in beta/rc 
suffixes
+  in :class:`tools.MediaWikiVersion`. Raise ValueError instead of 
AssertionError
+  for malformed suffixes.
+* Prevent setting a class property on an instance with 
:class:`tools.classproperty`.
+* Make API cache writes of :class:`data.api.CachedRequest` atomic and 
failure-safe.
+  (:phab:`T438266`)
+* Map claims for wbeditentity of :class:`page.MediaInfo`. (:phab:`T376955`)
+* Avoid reading streamed HTTP responses to detect encoding in 
:func:`comms.http.fetch`.
+* Add *timespec* parameter to 
:meth:`Timestamp.isoformat()<pywikibot.time.Timestamp.isoformat>`
+  method. (:phab:`T439983`, :phab:`T440120`)
+* Allow :ref:`global -user option<Global options>` to override OAuth 
authentication.
+  (:phab:`T420084`)
+* The *force* parameter of :class:`pywikibot.User` methods was renamed to
+  *refresh* (:phab:`T433225`)
+* Support custom Timestamp ISO separators and restores round-trip compatibility
+  between :meth:`Timestamp.isoformat()<pywikibot.time.Timestamp.isoformat>` and
+  :meth:`Timestamp.fromISOformat()<pywikibot.time.Timestamp.fromISOformat>`. 
(:phab:`T396723`)
+* Suggest installing all requirements for missing dependencies with
+  :mod:`pwb<pywikibot.scripts.wrapper>` wrapper.
+* Support legacy encoded section titles. (:phab:`T133276`)
+
+
 11.8.0
 ------
-
 *29 September 2026*

 * Various performance, stability, and code quality improvements.
diff --git a/ROADMAP.rst b/ROADMAP.rst
index 303195e..52268ad 100644
--- a/ROADMAP.rst
+++ b/ROADMAP.rst
@@ -1,39 +1,7 @@
-Release 11.9
-============
+Release 11.10
+=============

-* Add support for mlwwikivoyage. (:phab:`T441175`)
-* Update translations (i18n).
-* Various performance, stability, and code quality improvements.
-* Fix ZIP discovery and duplicate import paths in 
:func:`config.register_families_folder`.
-* Unify negative :ref:`page generator options<GENERATOR OPTIONS>`. 
(:phab:`T219282`)
-* Keep the sign of negative POSIX 
:class:`timestamps<<pywikibot.time.Timestamp>`.
-* Use the :attr:`page.BasePage.site` in :meth:`page.BasePage.change_category` 
when calling
-  :func:`textlib.replaceCategoryLinks` to respect category namespaces and 
footer rules.
-* Validate :attr:`pywikibot.Link.title` length in UTF-8 bytes within 
:meth:`pywikibot.Link.parse`.
-* Normalize usernames in :func:`pagegenerators.UserEditFilterGenerator` to 
match
-  canonical API names.
-* Verify zero-byte stashes against the empty hash in 
:func:`tools.compute_file_hash`.
-* Accept optional leading hyphens and period or hyphen separators in beta/rc 
suffixes
-  in :class:`tools.MediaWikiVersion`. Raise ValueError instead of 
AssertionError
-  for malformed suffixes.
-* Prevent setting a class property on an instance with 
:class:`tools.classproperty`.
-* Make API cache writes of :class:`data.api.CachedRequest` atomic and 
failure-safe.
-  (:phab:`T438266`)
-* Map claims for wbeditentity of :class:`page.MediaInfo`. (:phab:`T376955`)
-* Avoid reading streamed HTTP responses to detect encoding in 
:func:`comms.http.fetch`.
-* Add *timespec* parameter to 
:meth:`Timestamp.isoformat()<pywikibot.time.Timestamp.isoformat>`
-  method. (:phab:`T439983`, :phab:`T440120`)
-* Allow :ref:`global -user option<Global options>` to override OAuth 
authentication.
-  (:phab:`T420084`)
-* The *force* parameter of :class:`pywikibot.User` methods was renamed to
-  *refresh* (:phab:`T433225`)
-* Support custom Timestamp ISO separators and restores round-trip compatibility
-  between :meth:`Timestamp.isoformat()<pywikibot.time.Timestamp.isoformat>` and
-  :meth:`Timestamp.fromISOformat()<pywikibot.time.Timestamp.fromISOformat>`. 
(:phab:`T396723`)
-* Suggest installing all requirements for missing dependencies with
-  :mod:`pwb<pywikibot.scripts.wrapper>` wrapper.
-* Support legacy encoded section titles. (:phab:`T133276`)
-
+* (no changes yet)

 Deprecations
 ============
diff --git a/dev-requirements.txt b/dev-requirements.txt
index c68f0b1..4666a6b 100644
--- a/dev-requirements.txt
+++ b/dev-requirements.txt
@@ -5,8 +5,9 @@
 pytest-attrib >= 0.1.3
 pytest-xvfb >= 3.1.1

-pre-commit >= 4.6.2; python_version > "3.9"
+pre-commit >= 4.7.0; python_version > "3.10"
+pre-commit >= 4.6.2; python_version == "3.10"
 coverage >= 7.16.2; python_version > "3.9"
 coverage==7.10.7; python_version == "3.9"
 # required for coverage (T380697)
-tomli >= 2.4.1; python_version < "3.11"
+tomli >= 2.5.0; python_version < "3.11"
diff --git a/pywikibot/__metadata__.py b/pywikibot/__metadata__.py
index 2547721..cb8eefc 100644
--- a/pywikibot/__metadata__.py
+++ b/pywikibot/__metadata__.py
@@ -12,6 +12,6 @@
 from time import strftime


-__version__ = '11.9.0'
+__version__ = '11.10.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 0e1a927..859a3b7 100644
--- a/scripts/__init__.py
+++ b/scripts/__init__.py
@@ -34,7 +34,7 @@
 from pathlib import Path


-__version__ = '11.9.0'
+__version__ = '11.10.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 26f3deb..b22cb15 100644
--- a/scripts/pyproject.toml
+++ b/scripts/pyproject.toml
@@ -7,7 +7,7 @@

 [project]
 name = "pywikibot-scripts"
-version = "11.9.0"
+version = "11.10.0"

 authors = [
     {name = "xqt", email = "[email protected]"},
@@ -19,7 +19,7 @@
 readme = "scripts/README.rst"
 requires-python = ">=3.9.0"
 dependencies = [
-    "pywikibot >= 11.9.0",
+    "pywikibot >= 11.10.0",
     "langdetect",
     "mwparserfromhell",
     "pydot",

--
To view, visit 
https://gerrit.wikimedia.org/r/c/pywikibot/core/+/1356649?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: I6bfff972f483507c48c88a2c752d0d406287732f
Gerrit-Change-Number: 1356649
Gerrit-PatchSet: 6
Gerrit-Owner: Xqt <[email protected]>
Gerrit-Reviewer: Xqt <[email protected]>
Gerrit-Reviewer: jenkins-bot
_______________________________________________
Pywikibot-commits mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to