diff --git a/util/locale_database/qlocalexml.py b/util/locale_database/qlocalexml.py index 241809c94b..b9e1f1dab7 100644 --- a/util/locale_database/qlocalexml.py +++ b/util/locale_database/qlocalexml.py @@ -19,6 +19,7 @@ You can download jing from https://relaxng.org/jclark/jing.html if your package manager lacks the jing package. """ +from typing import Iterator from xml.sax.saxutils import escape from localetools import Error @@ -137,7 +138,7 @@ class QLocaleXmlReader (object): yield ('_'.join(tag(have)), ids(have), '_'.join(tag(give)), ids(give)) - def defaultMap(self): + def defaultMap(self) -> Iterator[tuple[tuple[int, int], int]]: """Map language and script to their default territory by ID. Yields ((language, script), territory) wherever the likely diff --git a/util/locale_database/qlocalexml2cpp.py b/util/locale_database/qlocalexml2cpp.py index 74afaf1eef..3cff036768 100755 --- a/util/locale_database/qlocalexml2cpp.py +++ b/util/locale_database/qlocalexml2cpp.py @@ -17,7 +17,7 @@ The ISO 639-3 data file can be downloaded from the SIL website: import datetime import argparse from pathlib import Path -from typing import Optional +from typing import Iterator, Optional from qlocalexml import QLocaleXmlReader from localetools import * @@ -55,12 +55,12 @@ class LocaleKeySorter: # QLocale's likely sub-tag matching algorithms. Make sure this is # sorting in an order compatible with those algorithms. - def __init__(self, defaults): - self.map = dict(defaults) - def foreign(self, key): - default = self.map.get(key[:2]) + def __init__(self, defaults: Iterator[tuple[tuple[int, int], int]]) -> None: + self.map: dict[tuple[int, int], int] = dict(defaults) + def foreign(self, key: tuple[int, int, int]) -> bool: + default: int | None = self.map.get(key[:2]) return default is None or default != key[2] - def __call__(self, key): + def __call__(self, key: tuple[int, int, int]) -> tuple[int, bool, int, int]: # TODO: should we compare territory before or after script ? return (key[0], self.foreign(key)) + key[1:] @@ -697,7 +697,8 @@ def main(argv, out, err): reader = QLocaleXmlReader(qlocalexml) locale_map = dict(reader.loadLocaleMap(calendars, err.write)) - locale_keys = sorted(locale_map.keys(), key=LocaleKeySorter(reader.defaultMap())) + locale_keys: list[tuple[int, int, int]] = sorted(locale_map.keys(), + key=LocaleKeySorter(reader.defaultMap())) code_data = LanguageCodeData(args.iso_path)