Add type annotations to LocaleKeySorter

Task-number: QTBUG-128634
Pick-to: 6.8
Change-Id: I9a4261746cac029b0abf26fbd03b1915a0035147
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
This commit is contained in:
Mate Barany 2024-09-13 17:23:37 +02:00
parent 93136f7c55
commit bd475ddf47
2 changed files with 10 additions and 8 deletions

View File

@ -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, qtVersion
@ -261,7 +262,7 @@ class QLocaleXmlReader (object):
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

View File

@ -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:]
@ -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)