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 <[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]