From bd475ddf47e33535c2b79367c8850cd611089e3c Mon Sep 17 00:00:00 2001 From: Mate Barany Date: Fri, 13 Sep 2024 17:23:37 +0200 Subject: [PATCH] Add type annotations to LocaleKeySorter Task-number: QTBUG-128634 Pick-to: 6.8 Change-Id: I9a4261746cac029b0abf26fbd03b1915a0035147 Reviewed-by: Edward Welbourne Reviewed-by: Cristian Maureira-Fredes --- util/locale_database/qlocalexml.py | 3 ++- util/locale_database/qlocalexml2cpp.py | 15 ++++++++------- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/util/locale_database/qlocalexml.py b/util/locale_database/qlocalexml.py index f9f2ba3d577..6a09a18b32a 100644 --- a/util/locale_database/qlocalexml.py +++ b/util/locale_database/qlocalexml.py @@ -19,6 +19,7 @@ package manager lacks the jing package. """ +from typing import Iterator from xml.sax.saxutils import escape from localetools import Error, qtVersion @@ -261,7 +262,7 @@ def keyLikely(pair, kl=self.__keyLikely): what.args += (have, give) raise - 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 b448538539b..500f8935fdb 100755 --- a/util/locale_database/qlocalexml2cpp.py +++ b/util/locale_database/qlocalexml2cpp.py @@ -17,7 +17,7 @@ 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:] @@ -1010,7 +1010,8 @@ def main(argv, out, err): reader = QLocaleXmlReader(qlocalexml) locale_map = dict(reader.loadLocaleMap(calendars, err.write)) reader.pruneZoneNaming(locale_map, mutter) - 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)