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

Change subject: release: prepare next release Pywikibot 12
......................................................................

release: prepare next release Pywikibot 12

Bug: T419515
Change-Id: Ia9c2ad59281ada252ea2e571e8fcae3fbf2c1561
---
M .github/workflows/doctest.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 pwb.py
M pyproject.toml
M pywikibot/__metadata__.py
M pywikibot/diff.py
M pywikibot/scripts/wrapper.py
M scripts/__init__.py
M scripts/harvest_template.py
M scripts/pyproject.toml
M scripts/solve_disambiguation.py
M tox.ini
21 files changed, 124 insertions(+), 127 deletions(-)

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




diff --git a/.github/workflows/doctest.yml b/.github/workflows/doctest.yml
index f1cb043..c785f15 100644
--- a/.github/workflows/doctest.yml
+++ b/.github/workflows/doctest.yml
@@ -22,7 +22,7 @@
 jobs:
   build:
     runs-on: ${{ matrix.os || 'ubuntu-latest' }}
-    timeout-minutes: 15
+    timeout-minutes: 25
     strategy:
       fail-fast: false
       matrix:
@@ -30,7 +30,6 @@
         os: [windows-latest, macOS-latest, ubuntu-latest]
         include:
           - python-version: 3.16-dev
-            experimental: true
         exclude:  # Test already made on Jenkins
           - python-version: '3.10'
             os: ubuntu-latest
diff --git a/.github/workflows/login_tests-ci.yml 
b/.github/workflows/login_tests-ci.yml
index 741e2d1..f27dc6b 100644
--- a/.github/workflows/login_tests-ci.yml
+++ b/.github/workflows/login_tests-ci.yml
@@ -41,38 +41,37 @@
     name: Run Login/Logout Tests
     runs-on: ${{ matrix.os || 'ubuntu-latest' }}
     needs: wait_for_all
-    timeout-minutes: 40
+    timeout-minutes: 45
     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']
+        python-version: [pypy3.10, pypy3.11, '3.10', '3.11', '3.12', '3.13', 
'3.14', '3.15']
         site: ['wikipedia:en', 'wikisource:zh', 'wikipedia:test']
         include:
-          - python-version: '3.9'
+          - python-version: '3.10'
             site: betawikipedia:en
             os: ubuntu-22.04
-          - python-version: '3.9'
+          - python-version: '3.10'
             site: betawikipedia:zh
             os: ubuntu-22.04
-          - python-version: '3.10'
+          - python-version: '3.11'
             site: betawikisource:en
-          - python-version: '3.9'
+          - python-version: '3.10'
             site: wikidata:test
             os: ubuntu-22.04
-          - python-version: '3.11'
+          - python-version: '3.12'
             site: wiktionary:ar
-          - python-version: '3.9'
+          - python-version: '3.10'
             site: wikidata:wikidata
             os: ubuntu-22.04
-          - python-version: '3.10'
+          - python-version: '3.11'
             site: wowwiki:uk
           - python-version: '3'
             site: wikipedia:de
             os: macOS-latest
           - python-version: 3.16-dev
             site: wikipedia:test
-            experimental: true
     steps:
       - name: Checkout Repository
         uses: actions/checkout@v7
diff --git a/.github/workflows/oauth_tests-ci.yml 
b/.github/workflows/oauth_tests-ci.yml
index 1b9beca..f4ebd69 100644
--- a/.github/workflows/oauth_tests-ci.yml
+++ b/.github/workflows/oauth_tests-ci.yml
@@ -27,7 +27,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']
+        python-version: [pypy3.10, pypy3.11, '3.10', '3.11', '3.12', '3.13', 
'3.14', '3.15']
         family: [wikipedia]
         code: [test]
         domain: [test.wikipedia.org]
@@ -36,12 +36,11 @@
             family: wikipedia
             code: test
             domain: test.wikipedia.org
-            experimental: true
-          - python-version: '3.9'
+          - python-version: '3.10'
             family: betawikipedia
             code: en
             domain: en.wikipedia.beta.wmcloud.org
-          - python-version: '3.9'
+          - python-version: '3.10'
             family: betawikipedia
             code: zh
             domain: zh.wikipedia.beta.wmcloud.org
diff --git a/.github/workflows/pre-commit.yml b/.github/workflows/pre-commit.yml
index 5cbb8fc..2c8e948 100644
--- a/.github/workflows/pre-commit.yml
+++ b/.github/workflows/pre-commit.yml
@@ -22,11 +22,11 @@
   pre-commit:
     runs-on: ${{ matrix.os || 'ubuntu-latest' }}
     continue-on-error: ${{ matrix.experimental || false }}
-    timeout-minutes: 9
+    timeout-minutes: 15
     strategy:
       fail-fast: false
       matrix:
-        python-version: ['3.10', '3.13', '3.14', '3.15']
+        python-version: ['3.11', '3.13', '3.14', '3.15']
         os: [windows-latest, macOS-latest]
         include:
           - python-version: '3.13'
diff --git a/.github/workflows/pywikibot-ci.yml 
b/.github/workflows/pywikibot-ci.yml
index 7e7aeb7..2eec49f 100644
--- a/.github/workflows/pywikibot-ci.yml
+++ b/.github/workflows/pywikibot-ci.yml
@@ -29,35 +29,25 @@
     strategy:
       fail-fast: false
       matrix:
-        python-version:
-          - pypy3.9
-          - pypy3.10
-          - pypy3.11
-          - '3.9'
-          - '3.10'
-          - '3.11'
-          - '3.12'
-          - '3.13'
-          - '3.14'
-          - '3.15'
+        python-version: [pypy3.10, pypy3.11, '3.10', '3.11', '3.12', '3.13', 
'3.14', '3.15']
         site: ['wikipedia:en', 'wikisource:zh']
         include:
-          - python-version: '3.9'
-            site: wikipedia:test
-          - python-version: '3.9'
-            site: betawikipedia:en
-          - python-version: '3.9'
-            site: betawikipedia:zh
           - python-version: '3.10'
-            site: betawikisource:en
-          - python-version: '3.9'
-            site: wikidata:test
+            site: wikipedia:test
+          - python-version: '3.10'
+            site: betawikipedia:en
+          - python-version: '3.10'
+            site: betawikipedia:zh
           - python-version: '3.11'
+            site: betawikisource:en
+          - python-version: '3.10'
+            site: wikidata:test
+          - python-version: '3.12'
             site: wiktionary:ar
             test_no_rc: true
-          - python-version: '3.9'
-            site: wikidata:wikidata
           - python-version: '3.10'
+            site: wikidata:wikidata
+          - python-version: '3.11'
             site: wowwiki:uk
           - python-version: '3'
             site: wikipedia:de
@@ -70,7 +60,6 @@
             site: wikipedia:test
           - python-version: 3.16-dev
             site: wikipedia:test
-            experimental: true
     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 ee68b5b..2090746 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: 20
+    timeout-minutes: 25
     strategy:
       fail-fast: false
       matrix:
diff --git a/.github/workflows/windows_tests.yml 
b/.github/workflows/windows_tests.yml
index 359a0fd..77e2052 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', 
'3.15']
+        python-version: [3.10.0, '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 fb71dd9..9033d63 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.3.0
+    rev: v0.3.2
     hooks:
       - id: rumdl  # Lint only; add args [--fix] to auto-fix
       - id: rumdl-fmt  # Pure format, always exits 0
@@ -69,16 +69,16 @@
     hooks:
       - id: yamlfix
   - repo: https://github.com/astral-sh/ruff-pre-commit
-    rev: v0.17.1
+    rev: v0.17.3
     hooks:
       - id: ruff-check
         alias: ruff
         args: [--fix]
   - repo: https://github.com/asottile/pyupgrade
-    rev: v3.21.2
+    rev: v3.22.0
     hooks:
       - id: pyupgrade
-        args: [--py39-plus]
+        args: [--py310-plus]
   - repo: https://github.com/PyCQA/autoflake
     rev: v2.4.0
     hooks:
@@ -91,7 +91,7 @@
           - --remove-unused-variables
         exclude: ^pywikibot/backports\.py$
   - repo: https://github.com/PyCQA/isort
-    rev: 9.0.2
+    rev: 10.0.0b2
     hooks:
       - id: isort
         name: isort
@@ -101,12 +101,12 @@
         name: isort (skip future annotations)
         files: ^(pwb|pywikibot/families/__init__)\.py$
   - repo: https://github.com/jshwi/docsig
-    rev: v0.96.0
+    rev: v0.97.0
     hooks:
       - id: docsig
         exclude: ^(tests|scripts)
   - repo: https://github.com/PyCQA/flake8
-    rev: 7.4.1
+    rev: 7.5.0
     hooks:
       - id: flake8
         args:
@@ -118,7 +118,7 @@
           - flake8-print>=5.0.0
           - pep8-naming>=0.15.1
   - repo: https://github.com/pre-commit/mirrors-mypy
-    rev: v2.4.0
+    rev: v2.4.1
     hooks:
       - id: mypy
         args: [--config-file=pyproject.toml, --follow-imports=silent]
diff --git a/HISTORY.rst b/HISTORY.rst
index 09098ae..68b39e4 100644
--- a/HISTORY.rst
+++ b/HISTORY.rst
@@ -1,6 +1,52 @@
 Release History
 ===============

+11.10.0
+-------
+*31 October 2026*
+
+* Enable lexeme creation through 
:class:`LexemePage.editEntity()<pywikibot.LexemePage.editEntity>`.
+  See :ref:`Creating Lexemes` for further information. (:phab:`T442295`)
+* Initialize :class:`LexemePage<pywikibot.LexemePage>` collections for unsaved 
entities.
+  (:phab:`T442290`)
+* Various performance, stability, and code quality improvements.
+* Serialize nested form and sense edits in :class:`page.SubEntityCollection
+  <pywikibot.page._collections.SubEntityCollection>` and 
:class:`LexemePage<pywikibot.LexemePage>`
+  (:phab:`T189321`)
+* Add 
:attr:`ignore_save_related_errors<bot.BaseBot.ignore_save_related_errors>`
+  and :attr:`ignore_server_errors<bot.BaseBot.ignore_server_errors>` attributes
+  to :class:`bot.BaseBot` and use them in 
:meth:`userPut()<bot.BaseBot.userPut>`. (:phab:`T156908`)
+* Add support for Scribunto redirects. (:phab:`T417129`)
+* Serialize term removals and empty feature sets in 
:class:`page.LexemeSubEntity`
+  and :class:`LexemeForm<pywikibot.LexemeForm>`. (:phab:`T189321`)
+* Reload :class:`page.WikibaseEntity` entity
+  state after successful saves. (:phab:`T189321`)
+* Preserve fields during data normalization in 
:class:`LexemePage<pywikibot.LexemePage>`
+  and :class:`LexemeForm<pywikibot.LexemeForm>`. (:phab:`T189321`)
+* Find headings followed by a multiline comment with 
:func:`textlib.get_regexes('header')
+  <textlib.get_regexes>`. (:phab:`T209712`)
+* Always set the comment of a :class:`page.Contribution`. (:phab:`T442114`)
+* Keep sub-entity indexes of :class:`page.SubEntityCollection
+  <pywikibot.page._collections.SubEntityCollection>` aligned after mutations. 
(:phab:`T189321`)
+* Replace recursive orchestration of 
:class:`site.Uploader<pywikibot.site._upload.Uploader>`.
+  (:phab:`T434936`)
+* Fix 
:meth:`APISite.interwiki_prefix()<pywikibot.site._apisite.APISite.interwiki_prefix>`
+  functionality. (:phab:`T312699`)
+* Normalize IPv6 addresses in user titles like MediaWiki within
+  :meth:`pywikibot.Link.parse`. (:phab:`T329819`)
+* An IP range in CIDR notation is accepted as *user* in 
:meth:`APISite.usercontribs()
+  <pywikibot.site._generators.GeneratorsMixin.usercontribs>`. (:phab:`T362377`)
+* The *strict* parameter was added to :func:`tools.is_ip_network` to ignore 
host
+  bits if set to ``False``.
+* Fix result of :func:`textlib.replaceCategoryLinks` without category links.
+* Avoid mutating class attribute 
:attr:`BaseBot.available_options<bot.BaseBot.available_options>`
+  with :attr:`BaseBot.update_options<bot.BaseBot.update_options>`. 
(:phab:`T439883`)
+* Update translations (i18n).
+* Reject nested wikilinks in file captions with 
:attr:`textlib.FILE_LINK_REGEX`. (:phab:`T396721`)
+* Speed up parsing of API ISO timestamps in :meth:`Timestamp._from_iso8601()
+  <pywikibot.time.Timestamp._from_iso8601>`.
+
+
 11.9.0
 ------
 *18 October 2026*
diff --git a/ROADMAP.rst b/ROADMAP.rst
index ef3ed78..e622026 100644
--- a/ROADMAP.rst
+++ b/ROADMAP.rst
@@ -1,46 +1,19 @@
-Release 11.10
-=============
+Release 12
+==========

-* Enable lexeme creation through 
:class:`LexemePage.editEntity()<pywikibot.LexemePage.editEntity>`.
-  See :ref:`Creating Lexemes` for further information. (:phab:`T442295`)
-* Initialize :class:`LexemePage<pywikibot.LexemePage>` collections for unsaved 
entities.
-  (:phab:`T442290`)
-* Various performance, stability, and code quality improvements.
-* Serialize nested form and sense edits in :class:`page.SubEntityCollection
-  <pywikibot.page._collections.SubEntityCollection>` and 
:class:`LexemePage<pywikibot.LexemePage>`
-  (:phab:`T189321`)
-* Add 
:attr:`ignore_save_related_errors<bot.BaseBot.ignore_save_related_errors>`
-  and :attr:`ignore_server_errors<bot.BaseBot.ignore_server_errors>` attributes
-  to :class:`bot.BaseBot` and use them in 
:meth:`userPut()<bot.BaseBot.userPut>`. (:phab:`T156908`)
-* Add support for Scribunto redirects. (:phab:`T417129`)
-* Serialize term removals and empty feature sets in 
:class:`page.LexemeSubEntity`
-  and :class:`LexemeForm<pywikibot.LexemeForm>`. (:phab:`T189321`)
-* Reload :class:`page.WikibaseEntity` entity
-  state after successful saves. (:phab:`T189321`)
-* Preserve fields during data normalization in 
:class:`LexemePage<pywikibot.LexemePage>`
-  and :class:`LexemeForm<pywikibot.LexemeForm>`. (:phab:`T189321`)
-* Find headings followed by a multiline comment with 
:func:`textlib.get_regexes('header')
-  <textlib.get_regexes>`. (:phab:`T209712`)
-* Always set the comment of a :class:`page.Contribution`. (:phab:`T442114`)
-* Keep sub-entity indexes of :class:`page.SubEntityCollection
-  <pywikibot.page._collections.SubEntityCollection>` aligned after mutations. 
(:phab:`T189321`)
-* Replace recursive orchestration of 
:class:`site.Uploader<pywikibot.site._upload.Uploader>`.
-  (:phab:`T434936`)
-* Fix 
:meth:`APISite.interwiki_prefix()<pywikibot.site._apisite.APISite.interwiki_prefix>`
-  functionality. (:phab:`T312699`)
-* Normalize IPv6 addresses in user titles like MediaWiki within
-  :meth:`pywikibot.Link.parse`. (:phab:`T329819`)
-* An IP range in CIDR notation is accepted as *user* in 
:meth:`APISite.usercontribs()
-  <pywikibot.site._generators.GeneratorsMixin.usercontribs>`. (:phab:`T362377`)
-* The *strict* parameter was added to :func:`tools.is_ip_network` to ignore 
host
-  bits if set to ``False``.
-* Fix result of :func:`textlib.replaceCategoryLinks` without category links.
-* Avoid mutating class attribute 
:attr:`BaseBot.available_options<bot.BaseBot.available_options>`
-  with :attr:`BaseBot.update_options<bot.BaseBot.update_options>`. 
(:phab:`T439883`)
-* Update translations (i18n).
-* Reject nested wikilinks in file captions with 
:attr:`textlib.FILE_LINK_REGEX`. (:phab:`T396721`)
-* Speed up parsing of API ISO timestamps in :meth:`Timestamp._from_iso8601()
-  <pywikibot.time.Timestamp._from_iso8601>`.
+**Improvements**
+
+* (No changes yet)
+
+**Bugfixes**
+
+* (No changes yet)
+
+**Code cleanups**
+
+* (No changes yet)
+
+**Other breaking changes**

 Deprecations
 ============
diff --git a/dev-requirements.txt b/dev-requirements.txt
index 4666a6b..f7a5f4d 100644
--- a/dev-requirements.txt
+++ b/dev-requirements.txt
@@ -1,13 +1,13 @@
 # This is a requirements file for development dependencies.
 #
 # Python 3.10 is required for pytest and pre-commit
-pytest >= 9.1.1; python_version > "3.9"
+pytest >= 9.2.0
 pytest-attrib >= 0.1.3
 pytest-xvfb >= 3.1.1

-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"
+# Python 3.11 is required for pre-commit
+pre-commit >= 4.7.0
+coverage >= 7.17.0; python_version > "3.10"
+coverage==7.16.2; python_version == "3.10"
 # required for coverage (T380697)
-tomli >= 2.5.0; python_version < "3.11"
+tomli >= 2.5.0; python_version == "3.10"
diff --git a/pwb.py b/pwb.py
index 47b31d1..a841a5b 100755
--- a/pwb.py
+++ b/pwb.py
@@ -16,7 +16,7 @@
 Pywikibot is not available on:
 {version}

-This version of Pywikibot only supports Python 3.9+.
+This version of Pywikibot only supports Python 3.10+.
 """

 DEPRECATED_PYTHON_MESSAGE = """
@@ -29,7 +29,7 @@

 def python_is_supported():
     """Check that Python is supported."""
-    return sys.version_info[:3] >= (3, 9)
+    return sys.version_info[:3] >= (3, 10)


 def python_is_deprecated():
diff --git a/pyproject.toml b/pyproject.toml
index 9957037..9f78143 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -17,7 +17,7 @@
     {name = "The Pywikibot team", email = "[email protected]"},
 ]
 description = "Python MediaWiki Bot Framework"
-requires-python = ">=3.9.0"
+requires-python = ">=3.10.0"
 keywords = [
     "API", "bot", "client", "framework", "mediawiki", "pwb", "pybot", "python",
     "pywiki", "pywikibase", "pywikibot", "pywikipedia", "pywikipediabot",
@@ -92,13 +92,13 @@
     "Programming Language :: Python",
     "Programming Language :: Python :: 3",
     "Programming Language :: Python :: 3 :: Only",
-    "Programming Language :: Python :: 3.9",
     "Programming Language :: Python :: 3.10",
     "Programming Language :: Python :: 3.11",
     "Programming Language :: Python :: 3.12",
     "Programming Language :: Python :: 3.13",
     "Programming Language :: Python :: 3.14",
     "Programming Language :: Python :: 3.15",
+    "Programming Language :: Python :: 3.16",
     "Programming Language :: Python :: Implementation :: CPython",
     "Programming Language :: Python :: Implementation :: GraalPy",
     "Programming Language :: Python :: Implementation :: PyPy",
@@ -175,7 +175,7 @@


 [tool.isort]
-py_version = 39
+py_version = 310
 atomic = true
 ensure_newline_before_comments = true
 force_grid_wrap = 0
diff --git a/pywikibot/__metadata__.py b/pywikibot/__metadata__.py
index 5d9e199..930ebcc 100644
--- a/pywikibot/__metadata__.py
+++ b/pywikibot/__metadata__.py
@@ -12,6 +12,6 @@
 from time import strftime


-__version__ = '11.10.0'
+__version__ = '12.0.0.dev0'
 __url__ = 'https://www.mediawiki.org/wiki/Manual:Pywikibot'
 __copyright__ = f'2003-{strftime("%Y")}, Pywikibot team'
diff --git a/pywikibot/diff.py b/pywikibot/diff.py
index e3954a9..ede0860 100644
--- a/pywikibot/diff.py
+++ b/pywikibot/diff.py
@@ -10,8 +10,8 @@
 import math
 from collections import abc
 from collections.abc import Iterable, Sequence
-from difflib import _format_range_unified  # type: ignore[attr-defined]
 from difflib import SequenceMatcher
+from difflib import _format_range_unified  # type: ignore[attr-defined]
 from heapq import nlargest
 from itertools import zip_longest

diff --git a/pywikibot/scripts/wrapper.py b/pywikibot/scripts/wrapper.py
index 6ec180f..9cd48c3 100755
--- a/pywikibot/scripts/wrapper.py
+++ b/pywikibot/scripts/wrapper.py
@@ -443,16 +443,10 @@

         from pywikibot.i18n import set_messages_package

-        if sys.version_info < (3, 10):
-            entry_points_items = [
-                ep for ep in entry_points().get('pywikibot', [])
-                if ep.name == 'scriptspath'
-            ]
-        else:
-            entry_points_items = entry_points(
-                name='scriptspath',
-                group='pywikibot',
-            )
+        entry_points_items = entry_points(
+            name='scriptspath',
+            group='pywikibot',
+        )

         for ep in entry_points_items:
             path = ep.load()
diff --git a/scripts/__init__.py b/scripts/__init__.py
index 859a3b7..8e0cdae 100644
--- a/scripts/__init__.py
+++ b/scripts/__init__.py
@@ -34,7 +34,7 @@
 from pathlib import Path


-__version__ = '11.10.0'
+__version__ = '12.0.0'

 #: defines the entry point for pywikibot-scripts package
 base_dir = Path(__file__).parent
diff --git a/scripts/harvest_template.py b/scripts/harvest_template.py
index 2226c83..b8a77e3 100755
--- a/scripts/harvest_template.py
+++ b/scripts/harvest_template.py
@@ -121,9 +121,8 @@
 from typing import Any

 import pywikibot
-from pywikibot import WbTime
+from pywikibot import WbTime, textlib
 from pywikibot import pagegenerators as pg
-from pywikibot import textlib
 from pywikibot.bot import ConfigParserBot, OptionHandler, WikidataBot
 from pywikibot.exceptions import (
     APIError,
diff --git a/scripts/pyproject.toml b/scripts/pyproject.toml
index b22cb15..f494477 100644
--- a/scripts/pyproject.toml
+++ b/scripts/pyproject.toml
@@ -7,7 +7,7 @@

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

 authors = [
     {name = "xqt", email = "[email protected]"},
@@ -17,9 +17,9 @@
 ]
 description = "Pywikibot Scripts Collection"
 readme = "scripts/README.rst"
-requires-python = ">=3.9.0"
+requires-python = ">=3.10.0"
 dependencies = [
-    "pywikibot >= 11.10.0",
+    "pywikibot >= 12.0.0",
     "langdetect",
     "mwparserfromhell",
     "pydot",
diff --git a/scripts/solve_disambiguation.py b/scripts/solve_disambiguation.py
index 6f9f676..f484a8b 100755
--- a/scripts/solve_disambiguation.py
+++ b/scripts/solve_disambiguation.py
@@ -86,9 +86,8 @@
 from pathlib import Path

 import pywikibot
-from pywikibot import config
+from pywikibot import config, i18n, pagegenerators
 from pywikibot import editor as editarticle
-from pywikibot import i18n, pagegenerators
 from pywikibot.bot import (
     HighlightContextOption,
     ListOption,
diff --git a/tox.ini b/tox.ini
index 0b081c6..5bb2d4c 100644
--- a/tox.ini
+++ b/tox.ini
@@ -4,7 +4,7 @@
 skip_missing_interpreters = True
 envlist =
     commit-message
-    lint-py{310,314}
+    lint-py{311,314}

 [params]
 # Note: tox 4 does not support multiple lines when doing parameters
@@ -16,7 +16,7 @@

 [testenv]
 basepython =
-    py39: python3.9
+    py39: python3.10
     py310: python3.10
     py311: python3.11
     py312: python3.12
@@ -73,7 +73,7 @@
     pytest --mypy -m mypy pywikibot

 [testenv:commit-message]
-basepython = python3.9
+basepython = python3.10
 deps = commit-message-validator
 commands = commit-message-validator


--
To view, visit 
https://gerrit.wikimedia.org/r/c/pywikibot/core/+/1361125?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: Ia9c2ad59281ada252ea2e571e8fcae3fbf2c1561
Gerrit-Change-Number: 1361125
Gerrit-PatchSet: 2
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