jenkins-bot has submitted this change. ( https://gerrit.wikimedia.org/r/c/pywikibot/core/+/1152404?usp=email )
Change subject: IMPR: decrease deeply nested flow in _category.py and _wikibase.py ......................................................................
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(-)
Approvals: Xqt: Looks good to me, approved jenkins-bot: Verified
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.