Xqt has submitted this change. ( 
https://gerrit.wikimedia.org/r/c/pywikibot/core/+/1069698?usp=email )

Change subject: [doc] update ROADMAP.rst and datasite documentation
......................................................................

[doc] update ROADMAP.rst and datasite documentation

Change-Id: Ia84970b146e69e44b258abc6f859d650842097dc
---
M ROADMAP.rst
M pywikibot/site/_datasite.py
2 files changed, 149 insertions(+), 97 deletions(-)

Approvals:
  Xqt: Verified; Looks good to me, approved




diff --git a/ROADMAP.rst b/ROADMAP.rst
index b781176..b1e6268 100644
--- a/ROADMAP.rst
+++ b/ROADMAP.rst
@@ -1,6 +1,7 @@
 Current Release Changes
 =======================
 
+* Add tags to the wikibase functions (:phab:`T372513`)
 * :func:`diff.get_close_matches_ratio()` function was added
 * Initialize super classes of :exc:`EditReplacementError` (:phab:`T212740`)
 * Add a hint to import missing module in 
:mod:`wrapper<pywikibot.scripts.wrapper>` script
diff --git a/pywikibot/site/_datasite.py b/pywikibot/site/_datasite.py
index de02a74..a5f8a31 100644
--- a/pywikibot/site/_datasite.py
+++ b/pywikibot/site/_datasite.py
@@ -280,21 +280,38 @@
         return entity['datatype']

     @need_right('edit')
-    def editEntity(self, entity, data, bot: bool = True, **kwargs):
+    def editEntity(self,
+                   entity: pywikibot.page.WikibaseEntity | dict,
+                   data: dict,
+                   bot: bool = True,
+                   **kwargs) -> dict:
         """Edit entity.

         .. note:: This method is unable to create entities other than
-           'item' if dict with API parameters was passed to 'entity'
+           ``item`` if dict with API parameters was passed to *entity*
            parameter.

+        .. versionchanged:: 9.4
+           *tags* keyword argument was added
+
         :param entity: Page to edit, or dict with API parameters
-            to use for entity identification
-        :type entity: WikibaseEntity or dict
+            to use for entity identification.
         :param data: data updates
-        :type data: dict
-        :param bot: Whether to mark the edit as a bot edit
+        :param bot: Whether to mark the edit as a bot edit.
+
+        :keyword int baserevid: The numeric identifier for the revision
+            to base the modification on. This is used for detecting
+            conflicts during save.
+        :keyword bool clear: If set, the complete entity is emptied
+            before proceeding. The entity will not be saved before it is
+            filled with the *data*, possibly with parts excluded.
+        :keyword str summary: Summary for the edit. Will be prepended by
+            an automatically generated comment. The length limit of the
+            autocomment together with the summary is 260 characters. Be
+            aware that everything above that limit will be cut off.
+        :keyword Iterable[str] | str tags: Change tags to apply to the
+            revision.
         :return: New entity data
-        :rtype: dict
         """
         # this changes the reference to a new object
         data = dict(data)
@@ -313,9 +330,7 @@
             if not params:  # If no identification was provided
                 params['new'] = 'item'

-        params['action'] = 'wbeditentity'
-        if bot:
-            params['bot'] = 1
+        params.update(action='wbeditentity', bot=bot)

         if kwargs.get('baserevid'):
             params['baserevid'] = kwargs['baserevid']
@@ -340,8 +355,10 @@
                  bot: bool = True,
                  summary: str | None = None,
                  tags: str | None = None) -> None:
-        """
-        Add a claim.
+        """Add a claim.
+
+        .. versionchanged:: 9.4
+           *tags* parameter was added

         :param entity: Entity to modify
         :param claim: Claim to be added
@@ -350,14 +367,15 @@
         :param tags: Change tags to apply to the revision
         """
         claim.snak = entity.getID() + '$' + str(uuid.uuid4())
-        params = {'action': 'wbsetclaim',
-                  'claim': json.dumps(claim.toJSON()),
-                  'baserevid': entity.latest_revision_id,
-                  'summary': summary,
-                  'tags': tags,
-                  'bot': bot,
-                  'token': self.tokens['csrf'],
-                  }
+        params = {
+            'action': 'wbsetclaim',
+            'claim': json.dumps(claim.toJSON()),
+            'baserevid': entity.latest_revision_id,
+            'summary': summary,
+            'tags': tags,
+            'bot': bot,
+            'token': self.tokens['csrf'],
+        }
         req = self.simple_request(**params)
         data = req.submit()
         # Update the item
@@ -369,16 +387,17 @@

     @need_right('edit')
     def changeClaimTarget(self,
-                          claim,
+                          claim: pywikibot.Claim,
                           snaktype: str = 'value',
                           bot: bool = True,
                           summary: str | None = None,
                           tags: str | None = None):
-        """
-        Set the claim target to the value of the provided claim target.
+        """Set the claim target to the value of the provided claim target.
+
+        .. versionchanged:: 9.4
+           *tags* parameter was added

         :param claim: The source of the claim target value
-        :type claim: pywikibot.Claim
         :param snaktype: An optional snaktype ('value', 'novalue' or
             'somevalue'). Default: 'value'
         :param bot: Whether to mark the edit as a bot edit
@@ -387,17 +406,20 @@
         """
         if claim.isReference or claim.isQualifier:
             raise NotImplementedError
+
         if not claim.snak:
             # We need to already have the snak value
             raise NoPageError(claim)
-        params = {'action': 'wbsetclaimvalue',
-                  'claim': claim.snak,
-                  'snaktype': snaktype,
-                  'summary': summary,
-                  'tags': tags,
-                  'bot': bot,
-                  'token': self.tokens['csrf'],
-                  }
+
+        params = {
+            'action': 'wbsetclaimvalue',
+            'claim': claim.snak,
+            'snaktype': snaktype,
+            'summary': summary,
+            'tags': tags,
+            'bot': bot,
+            'token': self.tokens['csrf'],
+        }

         if snaktype == 'value':
             params['value'] = json.dumps(claim._formatValue())
@@ -407,31 +429,41 @@
         return req.submit()

     @need_right('edit')
-    def save_claim(self, claim: pywikibot.page.Claim,
+    def save_claim(self,
+                   claim: pywikibot.page.Claim,
                    summary: str | None = None,
                    bot: bool = True,
                    tags: str | None = None):
         """
         Save the whole claim to the wikibase site.

+        .. versionchanged:: 9.4
+           *tags* parameter was added
+
         :param claim: The claim to save
         :param bot: Whether to mark the edit as a bot edit
         :param summary: Edit summary
         :param tags: Change tags to apply to the revision
+        :raises NoPageError: missing the the snak value
+        :raises NotImplementedError: ``claim.isReference`` or
+            ``claim.isQualifier`` is given
         """
         if claim.isReference or claim.isQualifier:
             raise NotImplementedError
+
         if not claim.snak:
             # We need to already have the snak value
             raise NoPageError(claim)
-        params = {'action': 'wbsetclaim',
-                  'claim': json.dumps(claim.toJSON()),
-                  'baserevid': claim.on_item.latest_revision_id,
-                  'summary': summary,
-                  'tags': tags,
-                  'bot': bot,
-                  'token': self.tokens['csrf'],
-                  }
+
+        params = {
+            'action': 'wbsetclaim',
+            'claim': json.dumps(claim.toJSON()),
+            'baserevid': claim.on_item.latest_revision_id,
+            'summary': summary,
+            'tags': tags,
+            'bot': bot,
+            'token': self.tokens['csrf'],
+        }

         req = self.simple_request(**params)
         data = req.submit()
@@ -440,7 +472,9 @@

     @need_right('edit')
     @remove_last_args(['baserevid'])  # since 7.0.0
-    def editSource(self, claim, source,
+    def editSource(self,
+                   claim: pywikibot.Claim,
+                   source: pywikibot.Claim,
                    new: bool = False,
                    bot: bool = True,
                    summary: str | None = None,
@@ -448,27 +482,31 @@
         """Create/Edit a source.

         .. versionchanged:: 7.0
-           deprecated `baserevid` parameter was removed
+           deprecated *baserevid* parameter was removed
+        .. versionchanged:: 9.4
+           *tags* parameter was added

-        :param claim: A Claim object to add the source to
-        :type claim: pywikibot.Claim
-        :param source: A Claim object to be used as a source
-        :type source: pywikibot.Claim
-        :param new: Whether to create a new one if the "source" already exists
-        :param bot: Whether to mark the edit as a bot edit
-        :param summary: Edit summary
-        :param tags: Change tags to apply to the revision
+        :param claim: A Claim object to add the source to.
+        :param source: A Claim object to be used as a source.
+        :param new: Whether to create a new one if the "source" already
+            exists.
+        :param bot: Whether to mark the edit as a bot edit.
+        :param summary: Edit summary.
+        :param tags: Change tags to apply to the revision.
+        :raises ValueError: The claim cannot have a source.
         """
         if claim.isReference or claim.isQualifier:
             raise ValueError('The claim cannot have a source.')
-        params = {'action': 'wbsetreference',
-                  'statement': claim.snak,
-                  'baserevid': claim.on_item.latest_revision_id,
-                  'summary': summary,
-                  'tags': tags,
-                  'bot': bot,
-                  'token': self.tokens['csrf'],
-                  }
+
+        params = {
+            'action': 'wbsetreference',
+            'statement': claim.snak,
+            'baserevid': claim.on_item.latest_revision_id,
+            'summary': summary,
+            'tags': tags,
+            'bot': bot,
+            'token': self.tokens['csrf'],
+        }

         # build up the snak
         sources = source if isinstance(source, list) else [source]
@@ -495,7 +533,9 @@

     @need_right('edit')
     @remove_last_args(['baserevid'])  # since 7.0.0
-    def editQualifier(self, claim, qualifier,
+    def editQualifier(self,
+                      claim: pywikibot.Claim,
+                      qualifier: pywikibot.Claim,
                       new: bool = False,
                       bot: bool = True,
                       summary: str | None = None,
@@ -503,35 +543,40 @@
         """Create/Edit a qualifier.

         .. versionchanged:: 7.0
-           deprecated `baserevid` parameter was removed
+           deprecated *baserevid* parameter was removed
+        .. versionchanged:: 9.4
+           *tags* parameter was added

         :param claim: A Claim object to add the qualifier to
-        :type claim: pywikibot.Claim
         :param qualifier: A Claim object to be used as a qualifier
-        :type qualifier: pywikibot.Claim
-        :param new: Whether to create a new one if the "qualifier"
+        :param new: Whether to create a new one if the qualifier
             already exists
         :param bot: Whether to mark the edit as a bot edit
         :param summary: Edit summary
         :param tags: Change tags to apply to the revision
+        :raises ValueError: The claim cannot have a qualifier.
         """
         if claim.isReference or claim.isQualifier:
             raise ValueError('The claim cannot have a qualifier.')
-        params = {'action': 'wbsetqualifier',
-                  'claim': claim.snak,
-                  'baserevid': claim.on_item.latest_revision_id,
-                  'summary': summary,
-                  'tags': tags,
-                  'bot': bot,
-                  'token': self.tokens['csrf'],
-                  }
+
+        params = {
+            'action': 'wbsetqualifier',
+            'claim': claim.snak,
+            'baserevid': claim.on_item.latest_revision_id,
+            'summary': summary,
+            'tags': tags,
+            'bot': bot,
+            'token': self.tokens['csrf'],
+        }

         if (not new and hasattr(qualifier, 'hash')
                 and qualifier.hash is not None):
             params['snakhash'] = qualifier.hash
+
         # build up the snak
         if qualifier.getSnakType() == 'value':
             params['value'] = json.dumps(qualifier._formatValue())
+
         params['snaktype'] = qualifier.getSnakType()
         params['property'] = qualifier.getID()

@@ -540,17 +585,19 @@

     @need_right('edit')
     @remove_last_args(['baserevid'])  # since 7.0.0
-    def removeClaims(self, claims,
+    def removeClaims(self,
+                     claims: list[pywikibot.Claim],
                      bot: bool = True,
                      summary: str | None = None,
                      tags: str | None = None):
         """Remove claims.

         .. versionchanged:: 7.0
-           deprecated `baserevid` parameter was removed
+           deprecated *baserevid* parameter was removed
+        .. versionchanged:: 9.4
+           *tags* parameter was added
 
         :param claims: Claims to be removed
-        :type claims: list[pywikibot.Claim]
         :param bot: Whether to mark the edit as a bot edit
         :param summary: Edit summary
         :param tags: Change tags to apply to the revision
@@ -575,7 +622,9 @@

     @need_right('edit')
     @remove_last_args(['baserevid'])  # since 7.0.0
-    def removeSources(self, claim, sources,
+    def removeSources(self,
+                      claim: pywikibot.Claim,
+                      sources: list[pywikibot.Claim],
                       bot: bool = True,
                       summary: str | None = None,
                       tags: str | None = None):
@@ -583,11 +632,11 @@

         .. versionchanged:: 7.0
            deprecated `baserevid` parameter was removed
+        .. versionchanged:: 9.4
+           *tags* parameter was added

         :param claim: A Claim object to remove the sources from
-        :type claim: pywikibot.Claim
         :param sources: A list of Claim objects that are sources
-        :type sources: list
         :param bot: Whether to mark the edit as a bot edit
         :param summary: Edit summary
         :param tags: Change tags to apply to the revision
@@ -608,7 +657,9 @@

     @need_right('edit')
     @remove_last_args(['baserevid'])  # since 7.0.0
-    def remove_qualifiers(self, claim, qualifiers,
+    def remove_qualifiers(self,
+                          claim: pywikibot.Claim,
+                          qualifiers: list[pywikibot.Claim],
                           bot: bool = True,
                           summary: str | None = None,
                           tags: str | None = None):
@@ -616,11 +667,11 @@

         .. versionchanged:: 7.0
            deprecated `baserevid` parameter was removed
+        .. versionchanged:: 9.4
+           *tags* parameter was added

         :param claim: A Claim object to remove the qualifier from
-        :type claim: pywikibot.Claim
         :param qualifiers: Claim objects currently used as a qualifiers
-        :type qualifiers: list[pywikibot.Claim]
         :param bot: Whether to mark the edit as a bot edit
         :param summary: Edit summary
         :param tags: Change tags to apply to the revision
@@ -640,17 +691,19 @@
         return req.submit()

     @need_right('edit')
-    def linkTitles(self, page1, page2, bot: bool = True):
-        """
-        Link two pages together.
+    def linkTitles(self,
+                   page1: pywikibot.Page,
+                   page2: pywikibot.Page,
+                   bot: bool = True) -> dict:
+        """Link two pages together.
+
+        .. versionchanged:: 9.4
+           *tags* parameter was added

         :param page1: First page to link
-        :type page1: pywikibot.Page
         :param page2: Second page to link
-        :type page2: pywikibot.Page
         :param bot: Whether to mark the edit as a bot edit
         :return: dict API output
-        :rtype: dict
         """
         params = {
             'action': 'wblinktitles',
@@ -667,28 +720,26 @@

     @need_right('item-merge')
     def mergeItems(self,
-                   from_item,
-                   to_item,
-                   ignore_conflicts=None,
+                   from_item: pywikibot.ItemPage,
+                   to_item: pywikibot.ItemPage,
+                   ignore_conflicts: list[str] | None = None,
                    summary: str | None = None,
                    bot: bool = True,
-                   tags: str | None = None):
-        """
-        Merge two items together.
+                   tags: str | None = None) -> dict:
+        """Merge two items together.
+
+        .. versionchanged:: 9.4
+           *tags* parameter was added

         :param from_item: Item to merge from
-        :type from_item: pywikibot.ItemPage
         :param to_item: Item to merge into
-        :type to_item: pywikibot.ItemPage
         :param ignore_conflicts: Which type of conflicts
             ('description', 'sitelink', and 'statement')
             should be ignored
-        :type ignore_conflicts: list of str
         :param summary: Edit summary
         :param bot: Whether to mark the edit as a bot edit
         :param tags: Change tags to apply to the revision
         :return: dict API output
-        :rtype: dict
         """
         params = {
             'action': 'wbmergeitems',

--
To view, visit 
https://gerrit.wikimedia.org/r/c/pywikibot/core/+/1069698?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: Ia84970b146e69e44b258abc6f859d650842097dc
Gerrit-Change-Number: 1069698
Gerrit-PatchSet: 2
Gerrit-Owner: Xqt <i...@gno.de>
Gerrit-Reviewer: Xqt <i...@gno.de>
Gerrit-Reviewer: jenkins-bot
_______________________________________________
Pywikibot-commits mailing list -- pywikibot-commits@lists.wikimedia.org
To unsubscribe send an email to pywikibot-commits-le...@lists.wikimedia.org

Reply via email to