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

Change subject: [IMPR] add User.renamed_target() method
......................................................................

[IMPR] add User.renamed_target() method

- User.renamed_target() gives the User object for a user was renamed to.
- Also add NoRenameTargetError exception which is raised if the source
  user wasn't renamed.
- update documentation

Change-Id: If4affa04fb41dfddfa90fdcbe65f39b89c585426
---
M pywikibot/exceptions.py
M pywikibot/page/_basepage.py
M pywikibot/page/_user.py
3 files changed, 61 insertions(+), 7 deletions(-)

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




diff --git a/pywikibot/exceptions.py b/pywikibot/exceptions.py
index 9104e7b..ec403e2 100644
--- a/pywikibot/exceptions.py
+++ b/pywikibot/exceptions.py
@@ -22,6 +22,7 @@
           |    +-- IsRedirectPageError
           |    +-- NoMoveTargetError
           |    +-- NoPageError
+          |    +-- NoRenameTargetError
           |    +-- NotEmailableError
           |    +-- PageLoadRelatedError
           |    |    +-- InconsistentTitleError
@@ -104,6 +105,7 @@
   - InvalidPageError: Page is invalid e.g. without history
   - NotEmailableError: The target user has disabled email
   - NoMoveTargetError: An expected move target page does not exist
+  - NoRenameTargetError: An expected rename target user does not exist

 PageLoadRelatedError: any exception which happens while loading a Page.
   - InconsistentTitleError: Page receives a title inconsistent with query
@@ -371,6 +373,16 @@
     message = 'Move target page of {} not found.'

 
+class NoRenameTargetError(PageRelatedError):
+
+    """Expected rename target user not found.
+
+    .. versionadded:: 9.4
+    """
+
+    message = 'Rename target user of {} not found.'
+
+
 class PageLoadRelatedError(PageRelatedError):

     """Loading the contents of a Page object has failed."""
diff --git a/pywikibot/page/_basepage.py b/pywikibot/page/_basepage.py
index beaf75e..1d675fe 100644
--- a/pywikibot/page/_basepage.py
+++ b/pywikibot/page/_basepage.py
@@ -1826,8 +1826,10 @@
         .. versionadded:: 9.3
            *ignore_section* parameter

-        .. seealso:: :meth:`Site.getredirtarget()
-           <pywikibot.site._apisite.APISite.getredirtarget>`
+        .. seealso::
+           * :meth:`Site.getredirtarget()
+             <pywikibot.site._apisite.APISite.getredirtarget>`
+           * :meth:`moved_target`

         :param ignore_section: do not include section to the target even
             the link has one
@@ -1842,15 +1844,15 @@
         """
         return self.site.getredirtarget(self, ignore_section=ignore_section)

-    def moved_target(self):
-        """
-        Return a Page object for the target this Page was moved to.
+    def moved_target(self) -> pywikibot.page.Page:
+        """Return a Page object for the target this Page was moved to.

         If this page was not moved, it will raise a NoMoveTargetError.
         This method also works if the source was already deleted.

-        :rtype: pywikibot.page.Page
-        :raises pywikibot.exceptions.NoMoveTargetError: page was not moved
+        .. seealso:: :meth:`getRedirectTarget`
+
+        :raises NoMoveTargetError: page was not moved
         """
         gen = iter(self.site.logevents(logtype='move', page=self, total=1))
         try:
diff --git a/pywikibot/page/_user.py b/pywikibot/page/_user.py
index 8047772..01ed5e6 100644
--- a/pywikibot/page/_user.py
+++ b/pywikibot/page/_user.py
@@ -11,6 +11,7 @@
 from pywikibot.exceptions import (
     APIError,
     AutoblockUserError,
+    NoRenameTargetError,
     NotEmailableError,
     UserRightsError,
 )
@@ -451,3 +452,42 @@
            :phab:`T57401#2216861` and :phab:`T120753#1863894`.
         """
         return self.isRegistered() and 'bot' not in self.groups()
+
+    def renamed_target(self) -> User:
+        """Return a User object for the target this user was renamed to.
+
+        If this user was not renamed, it will raise a
+        :exc:`NoRenameTargetError`.
+
+        **Usage:**
+
+        >>> site = pywikibot.Site('wikipedia:de')
+        >>> user = pywikibot.User(site, 'Foo')
+        >>> user.isRegistered()
+        False
+        >>> target = user.renamed_target()
+        >>> target.isRegistered()
+        True
+        >>> target.title(with_ns=False)
+        'Foo~dewiki'
+        >>> target.renamed_target()
+        Traceback (most recent call last):
+        ...
+        pywikibot.exceptions.NoRenameTargetError: Rename target user ...
+
+        .. seealso::
+           * :meth:`BasePage.moved_target`
+           * :meth:`BasePage.getRedirectTarget`
+
+        .. versionadded:: 9.4
+
+        :raises NoRenameTargetError: user was not renamed
+        """
+        gen = iter(self.site.logevents(logtype='renameuser',
+                                       page=self, total=1))
+        try:
+            renamed = next(gen)
+        except StopIteration:
+            raise NoRenameTargetError(self)
+
+        return User(self.site, renamed.params['newuser'])

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

Reply via email to