Xqt has submitted this change. ( https://gerrit.wikimedia.org/r/c/pywikibot/core/+/1048837?usp=email )
Change subject: [9.3] Prepare next release
......................................................................
[9.3] Prepare next release
Change-Id: Ic2550146571fdd15b66de3a15a11be63c9bc8088
---
M .appveyor.yml
M HISTORY.rst
M ROADMAP.rst
M pywikibot/__metadata__.py
M scripts/__init__.py
5 files changed, 36 insertions(+), 28 deletions(-)
Approvals:
Xqt: Verified; Looks good to me, approved
diff --git a/.appveyor.yml b/.appveyor.yml
index 38cef84..ad07dfa 100644
--- a/.appveyor.yml
+++ b/.appveyor.yml
@@ -1,7 +1,7 @@
image: Visual Studio 2022
clone_depth: 50
skip_tags: true
-version: 9.2.{build}
+version: 9.3.{build}
environment:
PYWIKIBOT_DIR: "%appdata%\\Pywikibot"
diff --git a/HISTORY.rst b/HISTORY.rst
index 1a23884..a6167ed 100644
--- a/HISTORY.rst
+++ b/HISTORY.rst
@@ -1,13 +1,44 @@
Release History
===============
+9.2.0
+-----
+*22 June 2024*
+
+* Add support for ``btmwiki`` to Pywikibot (:phab:`T368069`)
+* Include image repository extensions in :attr:`site.APISite.file_extensions
+ <pywikibot.site._apisite.APISite.file_extensions>`
+* Ignore :exc:`ValueError` durig upcast of :class:`FilePage<pywikibot.page.FilePage>` due to invalid file extension
+ (:phab:`T367777`)
+* Add :func:`pagegenerators.SupersetPageGenerator` pagegenerator (:phab:`T367684`)
+* No longer wait in :meth:`data.api.Request._http_request` for ``ImportError`` and ``NameError``
+* Replace ``requests.utils.urlparse`` with ``urllib.parse.urlparse`` in
+ :func:`comms.http.get_authentication` (:phab:`T367649`)
+* Show an appropiate message if ``requests_oauthlib`` package is required but missing (:phab:`T353387`)
+* Retry ``DBUnexpectedError`` in :meth:`data.api.Request._internal_api_error` (:phab:`T367383`)
+* Duplicated entries found in :mod:`pywikibot` were removed
+* Pass ``None`` instead of an empty string as *expiry* argument in
+ :meth:`site.APISite.protect()<pywikibot.site._apisite.APISite.protect>` (:phab:`T367176`)
+* Fix keyword argument in :meth:`Page.undelete()<page.BasePage.undelete>` when
+ calling :meth:`site.APISite.undelete()<pywikibot.site._apisite.APISite.undelete>` (:phab:`T367037`)
+* Check whether :attr:`BaseBot.generator<bot.BaseBot.generator>` is None in :meth:`run()<bot.BaseBot.run>` method
+* Add *namespaces* parameter to :meth:`Page.templates()<page.BasePage.templates>` and
+ :meth:`Page.itertemplates()<page.BasePage.itertemplates>` and require keyword arguments;
+ only use TEMPLATE namespace for meth:`Page.isDisambig()<page.BasePage.isDisambig>` (:phab:`T365199`)
+* Drop pheetools support for :mod:`proofreadpage` which is no longer available upstreams (:phab:`T366036`)
+* Raise :exc:`exceptions.SectionError` if a section does not exists on a page (:phab:`T107141`)
+* Retry api request on ServerError (:phab:`T364275`, :phab:`T364393`)
+* i18n updates
+
+
9.1.3
-----
-*28.05.2024*
+*28 May 2024*
* Add support for dtpwiki (:phab:`T365232`)
* i18n updates
+
9.1.2
-----
*03 May 2024*
diff --git a/ROADMAP.rst b/ROADMAP.rst
index b956e38..29cc47f 100644
--- a/ROADMAP.rst
+++ b/ROADMAP.rst
@@ -1,30 +1,7 @@
Current Release Changes
=======================
-* Add support for ``btmwiki`` to Pywikibot (:phab:`T368069`)
-* Include image repository extensions in :attr:`site.APISite.file_extensions
- <pywikibot.site._apisite.APISite.file_extensions>`
-* Ignore :exc:`ValueError` durig upcast of :class:`FilePage<pywikibot.page.FilePage>` due to invalid file extension
- (:phab:`T367777`)
-* Add :func:`pagegenerators.SupersetPageGenerator` pagegenerator (:phab:`T367684`)
-* No longer wait in :meth:`data.api.Request._http_request` for ``ImportError`` and ``NameError``
-* Replace ``requests.utils.urlparse`` with ``urllib.parse.urlparse`` in
- :func:`comms.http.get_authentication` (:phab:`T367649`)
-* Show an appropiate message if ``requests_oauthlib`` package is required but missing (:phab:`T353387`)
-* Retry ``DBUnexpectedError`` in :meth:`data.api.Request._internal_api_error` (:phab:`T367383`)
-* Duplicated entries found in :mod:`pywikibot` were removed
-* Pass ``None`` instead of an empty string as *expiry* argument in
- :meth:`site.APISite.protect()<pywikibot.site._apisite.APISite.protect>` (:phab:`T367176`)
-* Fix keyword argument in :meth:`Page.undelete()<page.BasePage.undelete>` when
- calling :meth:`site.APISite.undelete()<pywikibot.site._apisite.APISite.undelete>` (:phab:`T367037`)
-* Check whether :attr:`BaseBot.generator<bot.BaseBot.generator>` is None in :meth:`run()<bot.BaseBot.run>` method
-* Add *namespaces* parameter to :meth:`Page.templates()<page.BasePage.templates>` and
- :meth:`Page.itertemplates()<page.BasePage.itertemplates>` and require keyword arguments;
- only use TEMPLATE namespace for meth:`Page.isDisambig()<page.BasePage.isDisambig>` (:phab:`T365199`)
-* Drop pheetools support for :mod:`proofreadpage` which is no longer available upstreams (:phab:`T366036`)
-* Raise :exc:`exceptions.SectionError` if a section does not exists on a page (:phab:`T107141`)
-* Retry api request on ServerError (:phab:`T364275`, :phab:`T364393`)
-* i18n updates
+* (no changes yet)
Current Deprecations
====================
diff --git a/pywikibot/__metadata__.py b/pywikibot/__metadata__.py
index be801c8..6603ef5 100644
--- a/pywikibot/__metadata__.py
+++ b/pywikibot/__metadata__.py
@@ -12,6 +12,6 @@
from time import strftime
-__version__ = '9.2.0'
+__version__ = '9.3.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 01864c7..dac5584 100644
--- a/scripts/__init__.py
+++ b/scripts/__init__.py
@@ -32,4 +32,4 @@
#
# Distributed under the terms of the MIT license.
#
-__version__ = '9.2.0'
+__version__ = '9.3.0'
--
To view, visit https://gerrit.wikimedia.org/r/c/pywikibot/core/+/1048837?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: Ic2550146571fdd15b66de3a15a11be63c9bc8088
Gerrit-Change-Number: 1048837
Gerrit-PatchSet: 2
Gerrit-Owner: Xqt <info(a)gno.de>
Gerrit-Reviewer: D3r1ck01 <dalangi-ctr(a)wikimedia.org>
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/+/1048833?usp=email )
Change subject: [doc] do not exclude members from pywikibot.rst
......................................................................
[doc] do not exclude members from pywikibot.rst
This leads to missing links within documentation. A better solution
could be to exclude members from the imported library as lon as the
imports in pywikibot is intentional e.g. like for pywikibot.info()
This partially reverts daff7ba5 and 1d6a70d6
Change-Id: I68dca8545cdf3c0eb1c178c240fece4d994f7def
---
M docs/api_ref/pywikibot.rst
1 file changed, 0 insertions(+), 8 deletions(-)
Approvals:
Xqt: Looks good to me, approved
jenkins-bot: Verified
diff --git a/docs/api_ref/pywikibot.rst b/docs/api_ref/pywikibot.rst
index 804cd7e..5da2cdc 100644
--- a/docs/api_ref/pywikibot.rst
+++ b/docs/api_ref/pywikibot.rst
@@ -3,14 +3,6 @@
***********************************************
.. automodule:: pywikibot
- :exclude-members:
- Bot, CurrentPageBot, WikidataBot, calledModuleName, handle_args, input,
- input_choice, input_yn, show_help,
- translate,
- critical, debug, error, exception, info, log, output, stdout, warning,
- Category, Claim, FilePage, ItemPage, LexemeForm, LexemePage, LexemeSense,
- Link, MediaInfo, Page, PropertyPage, SiteLink, User, html2unicode,
- Timestamp
.. admonition:: Imports from :mod:`bot` module
:class: tip
--
To view, visit https://gerrit.wikimedia.org/r/c/pywikibot/core/+/1048833?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: I68dca8545cdf3c0eb1c178c240fece4d994f7def
Gerrit-Change-Number: 1048833
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/+/1048832?usp=email )
Change subject: [doc] Update ROADMAP.rst, CHANGELOG.rst and some code documentations
......................................................................
[doc] Update ROADMAP.rst, CHANGELOG.rst and some code documentations
Change-Id: If46121fb857cc49cc8521947f6fadecccdcb5ee3
---
M ROADMAP.rst
M docs/api_ref/pywikibot.data.rst
M pywikibot/data/superset.py
M pywikibot/pagegenerators/_generators.py
M scripts/CHANGELOG.rst
M tests/superset_tests.py
6 files changed, 64 insertions(+), 62 deletions(-)
Approvals:
Xqt: Looks good to me, approved
jenkins-bot: Verified
diff --git a/ROADMAP.rst b/ROADMAP.rst
index b244348..b956e38 100644
--- a/ROADMAP.rst
+++ b/ROADMAP.rst
@@ -1,6 +1,12 @@
Current Release Changes
=======================
+* Add support for ``btmwiki`` to Pywikibot (:phab:`T368069`)
+* Include image repository extensions in :attr:`site.APISite.file_extensions
+ <pywikibot.site._apisite.APISite.file_extensions>`
+* Ignore :exc:`ValueError` durig upcast of :class:`FilePage<pywikibot.page.FilePage>` due to invalid file extension
+ (:phab:`T367777`)
+* Add :func:`pagegenerators.SupersetPageGenerator` pagegenerator (:phab:`T367684`)
* No longer wait in :meth:`data.api.Request._http_request` for ``ImportError`` and ``NameError``
* Replace ``requests.utils.urlparse`` with ``urllib.parse.urlparse`` in
:func:`comms.http.get_authentication` (:phab:`T367649`)
diff --git a/docs/api_ref/pywikibot.data.rst b/docs/api_ref/pywikibot.data.rst
index cd4f8c3..0caf1b9 100644
--- a/docs/api_ref/pywikibot.data.rst
+++ b/docs/api_ref/pywikibot.data.rst
@@ -29,6 +29,12 @@
.. automodule:: data.sparql
:synopsis: SPARQL Query interface
+:mod:`data.superset` --- Superset requests
+==========================================
+
+.. automodule:: data.superset
+ :synopsis: Superset Query interface
+
:mod:`data.wikistats` --- WikiStats requests
============================================
diff --git a/pywikibot/data/superset.py b/pywikibot/data/superset.py
index 85aebc0..2da5a10 100644
--- a/pywikibot/data/superset.py
+++ b/pywikibot/data/superset.py
@@ -1,10 +1,16 @@
-"""Superset Query interface."""
+"""Superset Query interface.
+
+.. versionadded:: 9.2
+"""
#
# (C) Pywikibot team, 2024
#
# Distributed under the terms of the MIT license.
#
+from __future__ import annotations
+
from textwrap import fill
+from typing import TYPE_CHECKING, Any
import pywikibot
from pywikibot.comms import http
@@ -12,6 +18,10 @@
from pywikibot.exceptions import NoUsernameError, ServerError
+if TYPE_CHECKING:
+ from pywikibot.site import BaseSite
+
+
class SupersetQuery(WaitingMixin):
"""Superset Query class.
@@ -19,27 +29,21 @@
service.
"""
- def __init__(self, schema_name=None,
- site=None, database_id=None):
- """
- Create superset endpoint with initial defaults.
+ def __init__(self,
+ schema_name: str | None = None,
+ site: BaseSite | None = None,
+ database_id: int | None = None) -> None:
+ """Create superset endpoint with initial defaults.
Either site OR schema_name is required. Site and schema_name are
mutually exclusive. Database id will be retrieved automatically
if needed.
:param site: The mediawiki site to be queried
- :type site: pywikibot.Site, optional
-
- :param schema_name: superset database schema name.
- Example value "enwiki_p"
- :type schema_name: str, optional
-
+ :param schema_name: superset database schema name. Example value
+ "enwiki_p"
:param database_id: superset database id.
- :type database_id: int, optional
-
:raises TypeError: if site and schema_name are both defined'
-
"""
if site and schema_name:
msg = 'Only one of schema_name and site parameters can be defined'
@@ -59,20 +63,16 @@
self.last_response = None
self.superset_url = 'https://superset.wmcloud.org'
- def login(self):
- """
- Login to superset.
+ def login(self) -> bool:
+ """Login to superset.
- Function logins first to meta.wikimedia.org
- and then OAUTH login to superset.wmcloud.org.
- Working login expects that the user has manually
- permitted the username to login to the superset.
+ Function logins first to meta.wikimedia.org and then OAUTH login
+ to superset.wmcloud.org. Working login expects that the user has
+ manually permitted the username to login to the superset.
:raises NoUsernameError: if not not logged in.
:raises ServerError: For other errors
-
:return: True if user has been logged to superset
- :rtype bool
"""
# superset uses meta for OAUTH authentication
loginsite = pywikibot.Site('meta')
@@ -108,16 +108,14 @@
return self.connected
- def get_csrf_token(self):
- """
- Get superset CSRF token.
+ def get_csrf_token(self) -> str:
+ """Get superset CSRF token.
- Method retrieves a CSRF token from the Superset service.
- If the instance is not connected, it attempts to log in first.
+ Method retrieves a CSRF token from the Superset service. If the
+ instance is not connected, it attempts to log in first.
:raises ServerError: For any http errors
:return CSRF token string
- :rtype str
"""
if not self.connected:
self.login()
@@ -132,19 +130,14 @@
status_code = self.last_response.status_code
raise ServerError(f'CSRF token error: {status_code}')
- def get_database_id_by_schema_name(self, schema_name):
- """
- Get superset database_id using superset schema name.
+ def get_database_id_by_schema_name(self, schema_name: str) -> int:
+ """Get superset database_id using superset schema name.
- :param schema_name: superset database schema name.
- Example value "enwiki_p"
- :type schema_name: str
-
+ :param schema_name: superset database schema name. Example value
+ "enwiki_p"
:raises KeyError: If the database ID could found.
:raises ServerError: For any other http errors
-
:return: database id
- :rtype: int
"""
if not self.connected:
self.login()
@@ -169,27 +162,18 @@
raise KeyError(f'Schema "{schema_name}" not found in {url}.')
def merge_query_arguments(self,
- database_id=None,
- schema_name=None,
- site=None):
- """
- Determine and validate the database_id and schema_name.
+ database_id: int | None = None,
+ schema_name: str | None = None,
+ site: BaseSite = None) -> tuple(int, str):
+ """Determine and validate the database_id and schema_name.
:param database_id: The superset database ID.
- :type database_id: int, optional
-
:param schema_name: The superset schema name.
- :type schema_name: str, optional
-
:param site: The target site
- :type site: pywikibot.Site, optional
-
:raises TypeError: if site and schema_name are both defined'
:raises TypeError: If determined database_id is not an integer.
:raises TypeError: If neither site nor schema_name is determined.
-
:return A tuple containing database_id and schema_name.
- :rtype: tuple
"""
if site and schema_name:
msg = 'Only one of schema_name and site parameters can be defined'
@@ -222,21 +206,17 @@
return database_id, schema_name
- def query(self, sql, database_id=None, schema_name=None, site=None):
- """
- Execute SQL queries on Superset.
+ def query(self, sql: str,
+ database_id: int | None = None,
+ schema_name: str | None = None,
+ site: BaseSite = None) -> list[Any]:
+ """Execute SQL queries on Superset.
:param sql: The SQL query to execute.
- :type sql: str
:param database_id: The database ID.
- :type database_id: int, optional
:param schema_name: The schema name.
- :type schema_name: str, optional
-
:raises RuntimeError: If the query execution fails.
-
:return: The data returned from the query execution.
- :rtype: list
"""
if not self.connected:
self.login()
diff --git a/pywikibot/pagegenerators/_generators.py b/pywikibot/pagegenerators/_generators.py
index 9c6c6db..b335fc8 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-2023
+# (C) Pywikibot team, 2008-2024
#
# Distributed under the terms of the MIT license.
#
@@ -981,6 +981,8 @@
FROM page
LIMIT 10
+ .. versionadded:: 9.2
+
:param query: the SQL query string.
:param site: Site for generator results.
:param schema_name: target superset schema name
diff --git a/scripts/CHANGELOG.rst b/scripts/CHANGELOG.rst
index 45d2b18..31ae292 100644
--- a/scripts/CHANGELOG.rst
+++ b/scripts/CHANGELOG.rst
@@ -4,6 +4,11 @@
9.2.0
-----
+addwikis
+^^^^^^^^
+
+* This maintenance script was added to add wikis to the Family.codes set
+
commons_information
^^^^^^^^^^^^^^^^^^^
diff --git a/tests/superset_tests.py b/tests/superset_tests.py
index 171835f..744b430 100755
--- a/tests/superset_tests.py
+++ b/tests/superset_tests.py
@@ -1,5 +1,8 @@
#!/usr/bin/env python3
-"""Tests for superset module."""
+"""Tests for superset module.
+
+.. versionadded:: 9.2
+"""
#
# (C) Pywikibot team, 2024
#
--
To view, visit https://gerrit.wikimedia.org/r/c/pywikibot/core/+/1048832?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: If46121fb857cc49cc8521947f6fadecccdcb5ee3
Gerrit-Change-Number: 1048832
Gerrit-PatchSet: 3
Gerrit-Owner: Xqt <info(a)gno.de>
Gerrit-Reviewer: D3r1ck01 <dalangi-ctr(a)wikimedia.org>
Gerrit-Reviewer: Xqt <info(a)gno.de>
Gerrit-Reviewer: jenkins-bot