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. package manager lacks the jing package.
""" """
from typing import Iterator
from xml.sax.saxutils import escape from xml.sax.saxutils import escape
from localetools import Error, qtVersion from localetools import Error, qtVersion
@ -261,7 +262,7 @@ class QLocaleXmlReader (object):
what.args += (have, give) what.args += (have, give)
raise raise
def defaultMap(self): def defaultMap(self) -> Iterator[tuple[tuple[int, int], int]]:
"""Map language and script to their default territory by ID. """Map language and script to their default territory by ID.
Yields ((language, script), territory) wherever the likely 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 datetime
import argparse import argparse
from pathlib import Path from pathlib import Path
from typing import Optional from typing import Iterator, Optional
from qlocalexml import QLocaleXmlReader from qlocalexml import QLocaleXmlReader
from localetools import * from localetools import *
@ -55,12 +55,12 @@ class LocaleKeySorter:
# QLocale's likely sub-tag matching algorithms. Make sure this is # QLocale's likely sub-tag matching algorithms. Make sure this is
# sorting in an order compatible with those algorithms. # sorting in an order compatible with those algorithms.
def __init__(self, defaults): def __init__(self, defaults: Iterator[tuple[tuple[int, int], int]]) -> None:
self.map = dict(defaults) self.map: dict[tuple[int, int], int] = dict(defaults)
def foreign(self, key): def foreign(self, key: tuple[int, int, int]) -> bool:
default = self.map.get(key[:2]) default: int | None = self.map.get(key[:2])
return default is None or default != 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 ? # TODO: should we compare territory before or after script ?
return (key[0], self.foreign(key)) + key[1:] return (key[0], self.foreign(key)) + key[1:]
@ -1010,7 +1010,8 @@ def main(argv, out, err):
reader = QLocaleXmlReader(qlocalexml) reader = QLocaleXmlReader(qlocalexml)
locale_map = dict(reader.loadLocaleMap(calendars, err.write)) locale_map = dict(reader.loadLocaleMap(calendars, err.write))
reader.pruneZoneNaming(locale_map, mutter) 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) code_data = LanguageCodeData(args.iso_path)