jenkins-bot submitted this change.
IMPR: decrease deeply nested flow in _category.py and _wikibase.py
Change-Id: Ifdd280016011bd8ce47c4d2fcfbb21b73af7b67b
---
M pywikibot/page/_category.py
M pywikibot/page/_wikibase.py
2 files changed, 40 insertions(+), 33 deletions(-)
diff --git a/pywikibot/page/_category.py b/pywikibot/page/_category.py
index 95b0993..f352394 100644
--- a/pywikibot/page/_category.py
+++ b/pywikibot/page/_category.py
@@ -1,6 +1,6 @@
"""Object representing a MediaWiki category page."""
#
-# (C) Pywikibot team, 2008-2023
+# (C) Pywikibot team, 2008-2025
#
# Distributed under the terms of the MIT license.
#
@@ -249,18 +249,20 @@
if total == 0:
return
- if recurse:
- if not isinstance(recurse, bool):
- recurse -= 1
+ if not recurse:
+ return
- for subcat in self.subcategories():
- for member in subcat.members(
- recurse=recurse, total=total, **kwargs):
- yield member
- if total is not None:
- total -= 1
- if total == 0:
- return
+ if not isinstance(recurse, bool):
+ recurse -= 1
+
+ for subcat in self.subcategories():
+ for member in subcat.members(
+ recurse=recurse, total=total, **kwargs):
+ yield member
+ if total is not None:
+ total -= 1
+ if total == 0:
+ return
def isEmptyCategory(self) -> bool: # noqa: N802
"""Return True if category has no members (including subcategories)."""
diff --git a/pywikibot/page/_wikibase.py b/pywikibot/page/_wikibase.py
index 560bbdb..4860083 100644
--- a/pywikibot/page/_wikibase.py
+++ b/pywikibot/page/_wikibase.py
@@ -327,27 +327,32 @@
if hasattr(self, '_content'):
del self._content
self.latest_revision_id = updates['entity'].get('lastrevid')
- if update_self and 'claims' in updates['entity']:
- updated_claims = updates['entity']['claims']
- for claim_prop_id, statements in updated_claims.items():
- for claim_index, statement in enumerate(statements):
- claim = self.claims[claim_prop_id][claim_index]
- claim.snak = statement['id']
- claim.on_item = self
- updated_qualifiers = statement.get('qualifiers', {})
- for qual_propid, qualifier in updated_qualifiers.items():
- for qual_index, qual_statement in enumerate(qualifier):
- target_qual_prop = claim.qualifiers[qual_propid]
- target_qual = target_qual_prop[qual_index]
- target_qual.hash = qual_statement['hash']
- 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']
+
+ if not update_self or 'claims' not in updates['entity']:
+ return
+
+ updated_claims = updates['entity']['claims']
+ for claim_prop_id, statements in updated_claims.items():
+ for claim_index, statement in enumerate(statements):
+ claim = self.claims[claim_prop_id][claim_index]
+ claim.snak = statement['id']
+ claim.on_item = self
+
+ updated_qualifiers = statement.get('qualifiers', {})
+ for qual_propid, qualifier in updated_qualifiers.items():
+ for qual_index, qual_statement in enumerate(qualifier):
+ target_qual_prop = claim.qualifiers[qual_propid]
+ target_qual = target_qual_prop[qual_index]
+ target_qual.hash = qual_statement['hash']
+
+ 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']
def concept_uri(self) -> str:
"""Return the full concept URI.
To view, visit change 1152404. To unsubscribe, or for help writing mail filters, visit settings.