jenkins-bot has submitted this change. (
https://gerrit.wikimedia.org/r/c/pywikibot/core/+/1340025?usp=email )
Change subject: Wikibase: Fix reference hash propagation after editEntity
......................................................................
Wikibase: Fix reference hash propagation after editEntity
Copy each reference group's hash to its local source claims instead
of looking for hashes on the individual reference snaks.
Repair the existing propagation test by attaching its claim to the
item, using assertIs for identity checks, and marking appended snaks
as qualifiers or references. Use distinct values for the second edit
and remove the expected-failure marker.
Bug: T367324
Change-Id: I1d624ebdf853be4372d028dfc3dc7c3dd2ef1d07
---
M ROADMAP.rst
M pywikibot/page/_wikibase.py
M tests/wikibase_edit_tests.py
3 files changed, 17 insertions(+), 16 deletions(-)
Approvals:
Xqt: Looks good to me, approved
jenkins-bot: Verified
diff --git a/ROADMAP.rst b/ROADMAP.rst
index d0b9b2e..60b1300 100644
--- a/ROADMAP.rst
+++ b/ROADMAP.rst
@@ -1,6 +1,8 @@
Release 11.8
============
+* Correctly propagate reference group hashes after
+ :meth:`page.WikibaseEntity.editEntity`. (:phab:`T367324`)
* Reset the retry counter for each query in :class:`data.sparql.SparqlQuery`.
* Deduplicate intersections with a single input in
:func:`tools.itertools.intersect_generators`.
* Accept path-like filenames and detect suffixes case-insensitively in
:func:`tools.open_archive`.
diff --git a/pywikibot/page/_wikibase.py b/pywikibot/page/_wikibase.py
index 6d165da..4e2df9a 100644
--- a/pywikibot/page/_wikibase.py
+++ b/pywikibot/page/_wikibase.py
@@ -345,12 +345,11 @@
updated_references = statement.get('references', [])
for ref_grp_idx, ref_grp in enumerate(updated_references):
- for ref_propid, reference in ref_grp['snaks'].items():
- for ref_index, ref_stat in enumerate(reference):
- target_ref_grp = claim.sources[ref_grp_idx]
- target_ref_prop = target_ref_grp[ref_propid]
- target_ref = target_ref_prop[ref_index]
- target_ref.hash = ref_stat['hash']
+ target_ref_grp = claim.sources[ref_grp_idx]
+ for ref_propid in ref_grp['snaks']:
+ target_ref_prop = target_ref_grp[ref_propid]
+ for target_ref in target_ref_prop:
+ target_ref.hash = ref_grp['hash']
def concept_uri(self) -> str:
"""Return the full concept URI.
diff --git a/tests/wikibase_edit_tests.py b/tests/wikibase_edit_tests.py
index 2ea0f73..afa1081 100755
--- a/tests/wikibase_edit_tests.py
+++ b/tests/wikibase_edit_tests.py
@@ -127,7 +127,6 @@
item = pywikibot.ItemPage(testsite)
item.editEntity(data)
- @unittest.expectedFailure # T367324
def test_edit_entity_propagation(self) -> None:
"""Test that ``ItemPage.editEntity`` propagates changes to claims."""
testsite = self.get_repo()
@@ -140,24 +139,25 @@
ref.setTarget('test')
claim.addQualifier(qual)
claim.addSource(ref)
+ item.claims[claim.id] = [claim]
item.editEntity()
self.assertIsNotNone(claim.snak)
self.assertIsNotNone(qual.hash)
self.assertIsNotNone(ref.hash)
- self.assertSame(claim.on_item, item)
- self.assertSame(qual.on_item, item)
- self.assertSame(ref.on_item, item)
- qual = pywikibot.Claim(testsite, 'P97339')
- qual.setTarget('test')
- ref = pywikibot.Claim(testsite, 'P97339')
- ref.setTarget('test')
+ self.assertIs(claim.on_item, item)
+ self.assertIs(qual.on_item, item)
+ self.assertIs(ref.on_item, item)
+ qual = pywikibot.Claim(testsite, 'P97339', is_qualifier=True)
+ qual.setTarget('test2')
+ ref = pywikibot.Claim(testsite, 'P97339', is_reference=True)
+ ref.setTarget('test2')
claim.qualifiers[qual.id].append(qual)
claim.sources[0][ref.id].append(ref)
item.editEntity()
self.assertIsNotNone(qual.hash)
self.assertIsNotNone(ref.hash)
- self.assertSame(qual.on_item, item)
- self.assertSame(ref.on_item, item)
+ self.assertIs(qual.on_item, item)
+ self.assertIs(ref.on_item, item)
@unittest.expectedFailure # T367323
def test_edit_entity_new_property(self) -> None:
--
To view, visit
https://gerrit.wikimedia.org/r/c/pywikibot/core/+/1340025?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: I1d624ebdf853be4372d028dfc3dc7c3dd2ef1d07
Gerrit-Change-Number: 1340025
Gerrit-PatchSet: 1
Gerrit-Owner: Mahveotm <[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]