jenkins-bot has submitted this change. ( https://gerrit.wikimedia.org/r/c/pywikibot/core/+/1094477?usp=email )
Change subject: [IMPR] Add a new Site property codes ...................................................................... [IMPR] Add a new Site property codes - add Site.codes property to give a list of site codes - deprecate Site.languages() which returns a list of site codes - update languages() usages Bug: T380606 Change-Id: I2c4ceb0b9fe98f58972fc79b4d2076be20f24d36 --- M pywikibot/site/_basesite.py M pywikibot/titletranslate.py M tests/dry_api_tests.py M tests/site_tests.py 4 files changed, 30 insertions(+), 15 deletions(-) Approvals: jenkins-bot: Verified Xqt: Looks good to me, approved diff --git a/pywikibot/site/_basesite.py b/pywikibot/site/_basesite.py index fb30296..86ee9f8 100644 --- a/pywikibot/site/_basesite.py +++ b/pywikibot/site/_basesite.py @@ -74,7 +74,7 @@ self.obsolete = True pywikibot.log(f'Site {self} instantiated and marked "obsolete"' ' to prevent access') - elif self.__code not in self.languages(): + elif self.__code not in self.codes: if self.__family.name in self.__family.langs \ and len(self.__family.langs) == 1: self.__code = self.__family.name @@ -231,13 +231,27 @@ """Return hash value of instance.""" return hash(repr(self)) - def languages(self): - """Return list of all valid language codes for this site's Family.""" - return list(self.family.langs.keys()) + @deprecated('codes', since='9.6') + def languages(self) -> list[str]: + """Return list of all valid site codes for this site's Family. + + .. deprecated:: 9.6 + Use :meth:`codes` instead. + """ + return sorted(self.codes) + + @property + def codes(self) -> set[str]: + """Return set of all valid site codes for this site's Family. + + .. versionadded:: 9.6 + .. seealso:: :attr:`family.Family.codes` + """ + return set(self.family.langs.keys()) def validLanguageLinks(self): # noqa: N802 """Return list of language codes to be used in interwiki links.""" - return [lang for lang in self.languages() + return [lang for lang in sorted(self.codes) if self.namespaces.lookup_normalized_name(lang) is None] def _interwiki_urls(self, only_article_suffixes: bool = False): diff --git a/pywikibot/titletranslate.py b/pywikibot/titletranslate.py index e349c74..7214304 100644 --- a/pywikibot/titletranslate.py +++ b/pywikibot/titletranslate.py @@ -51,7 +51,7 @@ codes = site.family.language_groups.get(codes, codes.split(',')) for newcode in codes: - if newcode in site.languages(): + if newcode in site.codes: if newcode != site.code: ns = page.namespace() if page else 0 x = pywikibot.Link(newname, @@ -71,7 +71,7 @@ pywikibot.info(f'TitleTranslate: {page.title()} was recognized as ' f'{dict_name} with value {value}') for entry_lang, entry in date.formats[dict_name].items(): - if entry_lang not in site.languages(): + if entry_lang not in site.codes: continue if entry_lang != sitelang: newname = entry(value) diff --git a/tests/dry_api_tests.py b/tests/dry_api_tests.py index a49c66c..7674625 100755 --- a/tests/dry_api_tests.py +++ b/tests/dry_api_tests.py @@ -169,8 +169,9 @@ def protocol(self): return 'http' - def languages(self): - return ['mock'] + @property + def codes(self): + return {'mock'} def user(self): return self._user diff --git a/tests/site_tests.py b/tests/site_tests.py index 7a0505b..9d133ff 100755 --- a/tests/site_tests.py +++ b/tests/site_tests.py @@ -104,12 +104,12 @@ pywikibot.site.APISite.fromDBName(dbname, site), pywikibot.Site(sitename)) - def test_language_methods(self): - """Test cases for languages() and related methods.""" + def test_codes_property(self): + """Test cases for codes property and related methods.""" mysite = self.get_site() - langs = mysite.languages() - self.assertIsInstance(langs, list) - self.assertIn(mysite.code, langs) + codes = mysite.codes + self.assertIsInstance(codes, set) + self.assertIn(mysite.code, codes) self.assertIsInstance(mysite.obsolete, bool) ipf = mysite.interwiki_putfirst() if ipf: # no languages use this anymore, keep it for foreign families @@ -118,7 +118,7 @@ self.assertIsNone(ipf) for item in mysite.validLanguageLinks(): - self.assertIn(item, langs) + self.assertIn(item, codes) self.assertIsNone(self.site.namespaces.lookup_name(item)) def test_namespace_methods(self): -- To view, visit https://gerrit.wikimedia.org/r/c/pywikibot/core/+/1094477?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: I2c4ceb0b9fe98f58972fc79b4d2076be20f24d36 Gerrit-Change-Number: 1094477 Gerrit-PatchSet: 1 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