jenkins-bot has submitted this change. (
https://gerrit.wikimedia.org/r/c/pywikibot/core/+/1063011?usp=email )
Change subject: [flow] deprecate flow extension support
......................................................................
[flow] deprecate flow extension support
Bug: T371180
Change-Id: I6249245a2267a5eaf153704969f130f20a42a95a
---
M pywikibot/flow.py
M pywikibot/site/_extensions.py
M tests/flow_tests.py
3 files changed, 119 insertions(+), 29 deletions(-)
Approvals:
Xqt: Looks good to me, approved
jenkins-bot: Verified
diff --git a/pywikibot/flow.py b/pywikibot/flow.py
index bb51164..1e1db84 100644
--- a/pywikibot/flow.py
+++ b/pywikibot/flow.py
@@ -35,7 +35,24 @@
UnknownExtensionError,
)
from pywikibot.page import BasePage, PageSourceType, User
-from pywikibot.tools import cached, deprecated_args
+from pywikibot.tools import (
+ ModuleDeprecationWrapper,
+ cached,
+ deprecated_args,
+ suppress_warnings,
+)
+from pywikibot.tools._deprecate import _NotImplementedWarning
+
+
+__all__ = (
+ 'Board',
+ 'FlowPage',
+ 'Post',
+ 'Topic',
+)
+
+FLOW_WARNING = (r'pywikibot\.site\._extensions\.(Thanks)?FlowMixin\.[a-z_]+ '
+ r'is deprecated since release 9\.4\.0\.')
__all__ = (
@@ -108,7 +125,8 @@
:param force: Whether to force a reload if the data is already loaded
"""
if not hasattr(self, '_data') or force:
- self._data = self.site.load_board(self)
+ with suppress_warnings(FLOW_WARNING, _NotImplementedWarning):
+ self._data = self.site.load_board(self)
return self._data
@staticmethod
@@ -166,11 +184,18 @@
"""
maxlimit = min(config.step, 100) if config.step > 0 else 100
request_limit = min(total, maxlimit)
- data = self.site.load_topiclist(self, content_format=content_format,
- limit=request_limit, sortby=sort_by,
- toconly=toc_only, offset=offset,
- offset_id=offset_uuid, reverse=reverse,
- include_offset=include_offset)
+ with suppress_warnings(FLOW_WARNING, _NotImplementedWarning):
+ data = self.site.load_topiclist(
+ self,
+ content_format=content_format,
+ limit=request_limit,
+ sortby=sort_by,
+ toconly=toc_only,
+ offset=offset,
+ offset_id=offset_uuid,
+ reverse=reverse,
+ include_offset=include_offset
+ )
count = 0
while data['roots']:
for root in data['roots']:
@@ -182,7 +207,8 @@
return
continue_args = self._parse_url(data['links']['pagination'])
- data = self.site.load_topiclist(self, **continue_args)
+ with suppress_warnings(FLOW_WARNING, _NotImplementedWarning):
+ data = self.site.load_topiclist(self, **continue_args)
def new_topic(self, title: str, content: str,
content_format: str = 'wikitext') -> Topic:
@@ -209,7 +235,8 @@
:param content_format: The post format in which to load
"""
if not hasattr(self, '_data') or force:
- self._data = self.site.load_topic(self, content_format)
+ with suppress_warnings(FLOW_WARNING, _NotImplementedWarning):
+ self._data = self.site.load_topic(self, content_format)
return self._data
def _reload(self) -> None:
@@ -300,7 +327,8 @@
:param reason: The reason for locking this topic
"""
- self.site.lock_topic(self, True, reason)
+ with suppress_warnings(FLOW_WARNING, _NotImplementedWarning):
+ self.site.lock_topic(self, True, reason)
self._reload()
def unlock(self, reason: str) -> None:
@@ -308,7 +336,8 @@
:param reason: The reason for unlocking this topic
"""
- self.site.lock_topic(self, False, reason)
+ with suppress_warnings(FLOW_WARNING, _NotImplementedWarning):
+ self.site.lock_topic(self, False, reason)
self._reload()
def delete_mod(self, reason: str) -> None:
@@ -316,7 +345,8 @@
:param reason: The reason for deleting this topic.
"""
- self.site.delete_topic(self, reason)
+ with suppress_warnings(FLOW_WARNING, _NotImplementedWarning):
+ self.site.delete_topic(self, reason)
self._reload()
def hide(self, reason: str) -> None:
@@ -324,7 +354,8 @@
:param reason: The reason for hiding this topic.
"""
- self.site.hide_topic(self, reason)
+ with suppress_warnings(FLOW_WARNING, _NotImplementedWarning):
+ self.site.hide_topic(self, reason)
self._reload()
def suppress(self, reason: str) -> None:
@@ -332,7 +363,8 @@
:param reason: The reason for suppressing this topic.
"""
- self.site.suppress_topic(self, reason)
+ with suppress_warnings(FLOW_WARNING, _NotImplementedWarning):
+ self.site.suppress_topic(self, reason)
self._reload()
def restore(self, reason: str) -> None:
@@ -340,7 +372,8 @@
:param reason: The reason for restoring this topic.
"""
- self.site.restore_topic(self, reason)
+ with suppress_warnings(FLOW_WARNING, _NotImplementedWarning):
+ self.site.restore_topic(self, reason)
self._reload()
def summary(self) -> str | None:
@@ -358,7 +391,8 @@
:param summary: The summary that will be added to the topic.
"""
- self.site.summarize_topic(self, summary)
+ with suppress_warnings(FLOW_WARNING, _NotImplementedWarning):
+ self.site.summarize_topic(self, summary)
self._reload()
@@ -440,8 +474,9 @@
if load_from_topic:
data = self.page._load(force=force, content_format=content_format)
else:
- data = self.site.load_post_current_revision(self.page, self.uuid,
- content_format)
+ with suppress_warnings(FLOW_WARNING, _NotImplementedWarning):
+ data = self.site.load_post_current_revision(
+ self.page, self.uuid, content_format)
self._set_data(data)
return self._current_revision
@@ -542,8 +577,9 @@
if self.uuid == reply_to:
del self._current_revision
del self._replies
- data = self.site.reply_to_post(self.page, reply_to, content,
- content_format)
+ with suppress_warnings(FLOW_WARNING, _NotImplementedWarning):
+ data = self.site.reply_to_post(self.page, reply_to, content,
+ content_format)
return Post(self.page, data['post-id'])
# Moderation
@@ -552,7 +588,8 @@
:param reason: The reason for deleting this post.
"""
- self.site.delete_post(self, reason)
+ with suppress_warnings(FLOW_WARNING, _NotImplementedWarning):
+ self.site.delete_post(self, reason)
self._load()
def hide(self, reason: str) -> None:
@@ -560,7 +597,8 @@
:param reason: The reason for hiding this post.
"""
- self.site.hide_post(self, reason)
+ with suppress_warnings(FLOW_WARNING, _NotImplementedWarning):
+ self.site.hide_post(self, reason)
self._load()
def suppress(self, reason: str) -> None:
@@ -568,7 +606,8 @@
:param reason: The reason for suppressing this post.
"""
- self.site.suppress_post(self, reason)
+ with suppress_warnings(FLOW_WARNING, _NotImplementedWarning):
+ self.site.suppress_post(self, reason)
self._load()
def restore(self, reason: str) -> None:
@@ -576,9 +615,20 @@
:param reason: The reason for restoring this post.
"""
- self.site.restore_post(self, reason)
+ with suppress_warnings(FLOW_WARNING, _NotImplementedWarning):
+ self.site.restore_post(self, reason)
self._load()
def thank(self) -> None:
"""Thank the user who made this post."""
- self.site.thank_post(self)
+ with suppress_warnings(FLOW_WARNING, _NotImplementedWarning):
+ self.site.thank_post(self)
+
+
+wrapper = ModuleDeprecationWrapper(__name__)
+for cls in __all__:
+ wrapper.add_deprecated_attr(
+ cls,
+ replacement_name='',
+ since='9.4.0',
+ future_warning=False)
diff --git a/pywikibot/site/_extensions.py b/pywikibot/site/_extensions.py
index 46490fd..503f03f 100644
--- a/pywikibot/site/_extensions.py
+++ b/pywikibot/site/_extensions.py
@@ -19,7 +19,7 @@
SiteDefinitionError,
)
from pywikibot.site._decorators import need_extension, need_right
-from pywikibot.tools import merge_unique_dicts
+from pywikibot.tools import deprecated, merge_unique_dicts
class EchoMixin:
@@ -354,10 +354,18 @@
class ThanksFlowMixin:
- """APISite mixin for Thanks and Flow extension."""
+ """APISite mixin for Thanks and Structured Discussions extension.
+
+ .. deprecated:: 9.4.0
+ Structured Discussions extension formerly known as Flow
+ extenstion is not maintained and will be removed. Users are
+ encouraged to stop using it. (:phab:`T371180`)
+ .. seealso:: :mod:`flow`
+ """
@need_extension('Flow')
@need_extension('Thanks')
+ @deprecated(since='9.4.0')
def thank_post(self, post):
"""Corresponding method to the 'action=flowthank' API action.
@@ -378,9 +386,17 @@
class FlowMixin:
- """APISite mixin for Flow extension."""
+ """APISite mixin for Structured Discussions extension.
+
+ .. deprecated:: 9.4.0
+ Structured Discussions extension formerly known as Flow
+ extenstion is not maintained and will be removed. Users are
+ encouraged to stop using it. (:phab:`T371180`)
+ .. seealso:: :mod:`flow`
+ """
@need_extension('Flow')
+ @deprecated(since='9.4.0')
def load_board(self, page):
"""
Retrieve the data for a Flow board.
@@ -396,6 +412,7 @@
return data['flow']['view-topiclist']['result']['topiclist']
@need_extension('Flow')
+ @deprecated(since='9.4.0')
def load_topiclist(self,
page: pywikibot.flow.Board,
*,
@@ -440,6 +457,7 @@
return data['flow']['view-topiclist']['result']['topiclist']
@need_extension('Flow')
+ @deprecated(since='9.4.0')
def load_topic(self, page, content_format: str):
"""
Retrieve the data for a Flow topic.
@@ -458,6 +476,7 @@
return data['flow']['view-topic']['result']['topic']
@need_extension('Flow')
+ @deprecated(since='9.4.0')
def load_post_current_revision(self, page, post_id, content_format: str):
"""
Retrieve the data for a post to a Flow topic.
@@ -479,6 +498,7 @@
@need_right('edit')
@need_extension('Flow')
+ @deprecated(since='9.4.0')
def create_new_topic(self, page, title, content, content_format):
"""
Create a new topic on a Flow board.
@@ -504,6 +524,7 @@
@need_right('edit')
@need_extension('Flow')
+ @deprecated(since='9.4.0')
def reply_to_post(self, page, reply_to_uuid: str, content: str,
content_format: str) -> dict:
"""Reply to a post on a Flow topic.
@@ -526,6 +547,7 @@
@need_right('flow-lock')
@need_extension('Flow')
+ @deprecated(since='9.4.0')
def lock_topic(self, page, lock, reason):
"""
Lock or unlock a Flow topic.
@@ -550,6 +572,7 @@
@need_right('edit')
@need_extension('Flow')
+ @deprecated(since='9.4.0')
def moderate_topic(self, page, state, reason):
"""
Moderate a Flow topic.
@@ -571,6 +594,8 @@
data = req.submit()
return data['flow']['moderate-topic']['committed']['topic']
+ @need_extension('Flow')
+ @deprecated(since='9.4.0')
def summarize_topic(self, page, summary):
"""
Add summary to Flow topic.
@@ -595,6 +620,7 @@
@need_right('flow-delete')
@need_extension('Flow')
+ @deprecated(since='9.4.0')
def delete_topic(self, page, reason):
"""
Delete a Flow topic.
@@ -610,6 +636,7 @@
@need_right('flow-hide')
@need_extension('Flow')
+ @deprecated(since='9.4.0')
def hide_topic(self, page, reason):
"""
Hide a Flow topic.
@@ -625,6 +652,7 @@
@need_right('flow-suppress')
@need_extension('Flow')
+ @deprecated(since='9.4.0')
def suppress_topic(self, page, reason):
"""
Suppress a Flow topic.
@@ -640,6 +668,7 @@
@need_right('edit')
@need_extension('Flow')
+ @deprecated(since='9.4.0')
def restore_topic(self, page, reason):
"""
Restore a Flow topic.
@@ -655,6 +684,7 @@
@need_right('edit')
@need_extension('Flow')
+ @deprecated(since='9.4.0')
def moderate_post(self, post, state, reason):
"""
Moderate a Flow post.
@@ -680,6 +710,7 @@
@need_right('flow-delete')
@need_extension('Flow')
+ @deprecated(since='9.4.0')
def delete_post(self, post, reason):
"""
Delete a Flow post.
@@ -695,6 +726,7 @@
@need_right('flow-hide')
@need_extension('Flow')
+ @deprecated(since='9.4.0')
def hide_post(self, post, reason):
"""
Hide a Flow post.
@@ -710,6 +742,7 @@
@need_right('flow-suppress')
@need_extension('Flow')
+ @deprecated(since='9.4.0')
def suppress_post(self, post, reason):
"""
Suppress a Flow post.
@@ -725,6 +758,7 @@
@need_right('edit')
@need_extension('Flow')
+ @deprecated(since='9.4.0')
def restore_post(self, post, reason):
"""
Restore a Flow post.
diff --git a/tests/flow_tests.py b/tests/flow_tests.py
index 56da2aa..ffafc2f 100755
--- a/tests/flow_tests.py
+++ b/tests/flow_tests.py
@@ -12,12 +12,18 @@
from pywikibot import config
from pywikibot.exceptions import LockedPageError, NoPageError
-from pywikibot.flow import Board, Post, Topic
from tests.aspects import TestCase
from tests.basepage import (
BasePageLoadRevisionsCachingTestBase,
BasePageMethodsTestBase,
)
+from pywikibot.tools import suppress_warnings
+
+
+with suppress_warnings(r'pywikibot\.flow\.(Board|Post|Topic) is deprecated '
+ r'since release 9\.4\.0\.',
+ DeprecationWarning):
+ from pywikibot.flow import Board, Post, Topic
class TestMediaWikiFlowSandbox(TestCase):
--
To view, visit
https://gerrit.wikimedia.org/r/c/pywikibot/core/+/1063011?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: I6249245a2267a5eaf153704969f130f20a42a95a
Gerrit-Change-Number: 1063011
Gerrit-PatchSet: 3
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]