jenkins-bot has submitted this change. ( https://gerrit.wikimedia.org/r/c/pywikibot/core/+/1221621?usp=email )
Change subject: doc: Update documentation in several files like ROADMAP.rst and AUTHORS.rst ......................................................................
doc: Update documentation in several files like ROADMAP.rst and AUTHORS.rst
Additional changes: - force parameter of User.is_partial_blocked(), User.get_block_info() and APISite.is_partial_blocked() is keyword only. - update references
Change-Id: Id52809291bde159a3952f4db78a175460a5ba772 --- M AUTHORS.rst M README.rst M ROADMAP.rst M docs/compatibility.rst M pywikibot/page/_user.py M pywikibot/site/_apisite.py M scripts/CHANGELOG.rst 7 files changed, 87 insertions(+), 38 deletions(-)
Approvals: jenkins-bot: Verified Xqt: Looks good to me, approved
diff --git a/AUTHORS.rst b/AUTHORS.rst index d4a6221..04188ba 100644 --- a/AUTHORS.rst +++ b/AUTHORS.rst @@ -76,14 +76,17 @@ David Wood David-Sarah Hopwood dennisroczek + DerIch27 Denny Vrandecic - DMaggot Didicodes + Dikkulah Diwanshu Mittal + DMaggot Dmytro Dziuma Dr03ramos Draco flavus DrTrigon + Dumbledore Dvorapa
E @@ -227,6 +230,7 @@ mjbmr mloc-gci Mohamed Magdy + MonAx the Developer Mpaa murfel MuhammadShuaib @@ -321,6 +325,7 @@
Tacsipacsi + Tbodt Tejashxv Tgr TheRogueMule @@ -360,6 +365,7 @@
Warddr + WASP-Outis Wieland Hoffmann Wikihermit Wikipedian diff --git a/README.rst b/README.rst index d251928..a2ac3c8 100644 --- a/README.rst +++ b/README.rst @@ -148,17 +148,6 @@
See https://github.com/wikimedia/pywikibot/blob/stable/HISTORY.rst
-Current Development -=================== - -The following features are available in the development version and will be -included in the next release: - -* Add ``is_partial_blocked()`` method to ``User`` and ``APISite`` classes to detect partial blocks -* Add ``get_block_info()`` method to ``User`` class to retrieve detailed block information including block ID, reason, expiry, and restrictions - -See `T412613 https://phabricator.wikimedia.org/T412613`_ for details. - Contributing ============
diff --git a/ROADMAP.rst b/ROADMAP.rst index 2fbbe04..0905cf3 100644 --- a/ROADMAP.rst +++ b/ROADMAP.rst @@ -3,6 +3,16 @@
**Improvements**
+* 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`) diff --git a/docs/compatibility.rst b/docs/compatibility.rst index 46231db..96c788a 100644 --- a/docs/compatibility.rst +++ b/docs/compatibility.rst @@ -10,23 +10,35 @@ Released Pywikibot versions support all actively maintained Python and MediaWiki versions at the time of release:
-================= ===================== ==== ================= ================ -Pywikibot version Python version PyPy MediaWiki version 1st Release Date -================= ===================== ==== ================= ================ -11.0+ 3.9–3.15 ✅ 1.31–1.45 2025 -10.0–10.7 3.8–3.14 ✅ 1.31–1.44 2025-03-01 -9.0–9.6.3 3.7–3.13 ✅ 1.27–1.42 2024-03-08 -8.0–8.6 3.6.1–3.12 ✅ 1.27–1.41 2023-01-21 -7.0–7.7.3 3.5.3–3.11 ✅ 1.23–1.39 2022-02-26 -6.0–6.6.5 3.5–3.10 ❌ 1.23–1.37 2021-03-16 -5.0–5.6 3.5–3.10 ❌ 1.19–1.36 2020-10-19 -4.0–4.3 3.5–3.9 ❌ 1.14–1.36 2020-08-04 -3.0.20190301+ 2.7.4–2.7.18, 3.4–3.8 ❌ 1.14–1.33 2019-03-01 -3.0.20180403+ 2.7.2–2.7.18, 3.4–3.8 ❌ 1.14–1.31 2018-04-03 -3.0.20170403+ 2.6–2.7.18, 3.3–3.8 ❌ 1.14–1.29 2017-04-04 -2.0 2.7, 3.3–3.5 ❌ 1.14–1.25 2015-05-25 -1.0 2.5–2.7 ❌ 1.2–1.24 2003–2016 -================= ===================== ==== ================= ================ +================= ===================== ====== ==== ======= ================= ================ +Pywikibot version Python version No GIL PyPy GraalPy MediaWiki version 1st Release Date +================= ===================== ====== ==== ======= ================= ================ +11.0+ 3.9–3.15 ⚠️ ✅ ❓ 1.31–1.46 2026 +10.0–10.7.4 3.8–3.14 ❓ ✅ ❌ 1.31–1.44 2025-03-01 +9.0–9.6.3 3.7–3.13 ❓ ✅ ❌ 1.27–1.42 2024-03-08 +8.0–8.6 3.6.1–3.12 ❌ ✅ ❌ 1.27–1.41 2023-01-21 +7.0–7.7.3 3.5.3–3.11 ❌ ✅ ❌ 1.23–1.39 2022-02-26 +6.0–6.6.5 3.5–3.10 ❌ ❌ ❌ 1.23–1.37 2021-03-16 +5.0–5.6 3.5–3.10 ❌ ❌ ❌ 1.19–1.36 2020-10-19 +4.0–4.3 3.5–3.9 ❌ ❌ ❌ 1.14–1.36 2020-08-04 +3.0.20190301+ 2.7.4–2.7.18, 3.4–3.8 ❌ ❌ ❌ 1.14–1.33 2019-03-01 +3.0.20180403+ 2.7.2–2.7.18, 3.4–3.8 ❌ ❌ ❌ 1.14–1.31 2018-04-03 +3.0.20170403+ 2.6–2.7.18, 3.3–3.8 ❌ ❌ ❌ 1.14–1.29 2017-04-04 +2.0 2.7, 3.3–3.5 ❌ ❌ ❌ 1.14–1.25 2015-05-25 +1.0 2.5–2.7 ❌ ❌ ❌ 1.2–1.24 2003–2016 +================= ===================== ====== ==== ======= ================= ================ + +.. admonition:: Version status legend + + **No GIL** – Free-Threading Python build (CPython 3.13+); + runs without the Global Interpreter Lock (GIL), allowing true multithreading (:pep:`703`). + + | ❌ **not available** – functionality does not exist for this version + | ❓ **not tested** – has not been verified yet + | ⚠️ **unstable** – active development, breaking changes possible + | 🧪 **beta** – feature complete, testing phase + | ✅ **stable** – production ready + | 🛡️ **resilient** – long-term proven, robust operation
.. note:: All versions listed refer to the **stable releases**. Early releases before diff --git a/pywikibot/page/_user.py b/pywikibot/page/_user.py index 7753850..e4c0388 100644 --- a/pywikibot/page/_user.py +++ b/pywikibot/page/_user.py @@ -150,6 +150,10 @@ def is_blocked(self, force: bool = False) -> bool: """Determine whether the user is currently blocked.
+ .. seealso:: + - :meth:`is_partial_blocked` + - :meth:`get_block_info` + .. versionchanged:: 7.0 renamed from :meth:`isBlocked` method .. versionchanged:: 9.0 @@ -159,25 +163,39 @@ """ return 'blockedby' in self.getprops(force)
- def is_partial_blocked(self, force: bool = False) -> bool: + def is_partial_blocked(self, *, force: bool = False) -> bool: """Return True if this user is partially blocked, False otherwise.
+ .. seealso:: + - :meth:`get_block_info` + - :meth:`APISite.is_partial_blocked() + <pywikibot.site._apisite.APISite.is_partial_blocked>` + .. versionadded:: 11.0 + + :param force: if True, forces reloading the data from API """ return 'blockpartial' in self.getprops(force)
- def get_block_info(self, force: bool = False) -> dict[str, Any] | None: + def get_block_info(self, *, force: bool = False) -> dict[str, Any] | None: """Return a dictionary of block information if the user is blocked.
Returns None if the user is not blocked. The returned dictionary contains keys like: + - blockid - blockedby - blockreason - blockexpiry - blockpartial (only if partial block)
+ .. seealso:: + - :meth:`getprops` + - :meth:`is_partial_blocked` + .. versionadded:: 11.0 + + :param force: if True, forces reloading the data from API """ props = self.getprops(force) if 'blockid' not in props: diff --git a/pywikibot/site/_apisite.py b/pywikibot/site/_apisite.py index 91837f5..bbe13aa 100644 --- a/pywikibot/site/_apisite.py +++ b/pywikibot/site/_apisite.py @@ -766,12 +766,15 @@ """Return True when logged in user is blocked.
To check whether a user can perform an action, - the method has_right should be used. + the method :meth:`has_right` should be used.
- .. seealso:: :api:`Userinfo` + .. seealso:: + - :meth:`is_partial_blocked` + - :meth:`User.is_blocked()<pywikibot.User.is_blocked>` + - :attr:`userinfo`
- .. versionadded:: 7.0 - The `force` parameter + .. versionchanged:: 7.0 + The *force* parameter was added.
:param force: Whether the cache should be discarded. """ @@ -779,10 +782,18 @@ del self.userinfo return 'blockinfo' in self.userinfo
- def is_partial_blocked(self, force: bool = False) -> bool: + def is_partial_blocked(self, *, force: bool = False) -> bool: """Return True if the logged-in user is partially blocked.
+ .. seealso:: + - :meth:`is_blocked` + - :meth:`User.is_partial_blocked() + <pywikibot.User.is_partial_blocked>` + - :attr:`userinfo` + .. versionadded:: 11.0 + + :param force: if True, forces reloading the data from API """ if force: del self.userinfo @@ -793,6 +804,10 @@ force: bool = False) -> bool: """Return True when given user is locked globally.
+ .. seealso:: + - :meth:`is_blocked` + - :attr:`globaluserinfo` + .. versionadded:: 7.0
:param user: The user name or user ID. Defaults to the current diff --git a/scripts/CHANGELOG.rst b/scripts/CHANGELOG.rst index b075f2c..b296544 100644 --- a/scripts/CHANGELOG.rst +++ b/scripts/CHANGELOG.rst @@ -4,6 +4,7 @@ 11.0.0 ------
+* L10N and i18n updates * ``create_isbn_edition`` script was removed from scripts package (:phab:`T398140`)
archivebot @@ -11,8 +12,6 @@
* respect the ``-namespace`` option with ``-page`` option (:phab:`T409016`)
- - 10.7.0 ------
pywikibot-commits@lists.wikimedia.org