diff options
author | Mate Barany <[email protected]> | 2024-09-30 14:33:10 +0200 |
---|---|---|
committer | Mate Barany <[email protected]> | 2024-10-21 22:03:52 +0200 |
commit | 001f8b3fc991b685b2a08b572af8be0a6eee60ea (patch) | |
tree | 821361732475cd1d88f409f0ca67240973d6783e | |
parent | beda65ba9f4252b83aeeb3099465de7cce005fe2 (diff) |
Add type annotations to LocaleDataWriter
Task-number: QTBUG-128634
Pick-to: 6.8
Change-Id: I63e4db06d92e7c2457a802f93372545f9ae749f1
Reviewed-by: Edward Welbourne <[email protected]>
-rwxr-xr-x | util/locale_database/qlocalexml2cpp.py | 38 |
1 files changed, 21 insertions, 17 deletions
diff --git a/util/locale_database/qlocalexml2cpp.py b/util/locale_database/qlocalexml2cpp.py index 86194c789af..32ac6fe1690 100755 --- a/util/locale_database/qlocalexml2cpp.py +++ b/util/locale_database/qlocalexml2cpp.py @@ -21,7 +21,7 @@ from typing import Callable, Iterator, Optional from qlocalexml import Locale, QLocaleXmlReader from localetools import * -from iso639_3 import LanguageCodeData +from iso639_3 import LanguageCodeData, LanguageCodeEntry from zonedata import utcIdList, windowsIdList @@ -603,23 +603,25 @@ class LocaleZoneDataWriter (LocaleSourceEditor): class LocaleDataWriter (LocaleSourceEditor): - def likelySubtags(self, likely): + def likelySubtags(self, likely: Iterator[tuple[str, tuple, str, tuple]]) -> None: # Sort order of likely is taken care of upstream. self.writer.write('static constexpr QLocaleId likely_subtags[] = {\n') + # have and give are both triplets of ints for had, have, got, give in likely: self.writer.write(' {{ {:3d}, {:3d}, {:3d} }}'.format(*have)) self.writer.write(', {{ {:3d}, {:3d}, {:3d} }},'.format(*give)) self.writer.write(f' // {had} -> {got}\n') self.writer.write('};\n\n') - def localeIndex(self, indices): + def localeIndex(self, indices: Iterator[tuple[int, str]]) -> None: self.writer.write('static constexpr quint16 locale_index[] = {\n') for index, name in indices: self.writer.write(f'{index:6d}, // {name}\n') self.writer.write(' 0 // trailing 0\n') self.writer.write('};\n\n') - def localeData(self, locales, names): + def localeData(self, locales: dict[tuple[int, int, int], Locale], + names: list[tuple[int, int, int]]) -> None: list_pattern_part_data = StringData('list_pattern_part_data') single_character_data = StringData('single_character_data') date_format_data = StringData('date_format_data') @@ -724,9 +726,10 @@ class LocaleDataWriter (LocaleSourceEditor): ',{:6d}' * 3, ' }}')).format for key in names: - locale = locales[key] + locale: Locale = locales[key] # Sequence of StringDataToken: - ranges = (tuple(list_pattern_part_data.append(p) for p in # 5 entries: + ranges: tuple[StringDataToken, ...] = ( + tuple(list_pattern_part_data.append(p) for p in # 5 entries: (locale.listPatternPartStart, locale.listPatternPartMiddle, locale.listPatternPartEnd, locale.listPatternPartTwo, locale.listDelim)) + @@ -783,7 +786,7 @@ class LocaleDataWriter (LocaleSourceEditor): data.write(self.writer.write) @staticmethod - def __writeNameData(out, book, form): + def __writeNameData(out, book: dict[int, tuple[str, str, str]], form: str) -> None: out(f'static constexpr char {form}_name_list[] =\n') out('"Default\\0"\n') for key, value in book.items(): @@ -807,7 +810,7 @@ class LocaleDataWriter (LocaleSourceEditor): out('};\n\n') @staticmethod - def __writeCodeList(out, book, form, width): + def __writeCodeList(out, book: dict[int, tuple[str, str, str]], form: str, width: int) -> None: out(f'static constexpr unsigned char {form}_code_list[] =\n') for key, value in book.items(): code = value[1] @@ -815,27 +818,28 @@ class LocaleDataWriter (LocaleSourceEditor): out(f'"{code}" // {value[0]}\n') out(';\n\n') - def languageNaming(self, languages, code_data: LanguageCodeData): + def languageNaming(self, languages: dict[int, tuple[str, str, str]], + code_data: LanguageCodeData) -> None: self.__writeNameData(self.writer.write, languages, 'language') - out = self.writer.write + out: Callable[[str], int] = self.writer.write out(f'constexpr std::array<LanguageCodeEntry, {len(languages)}> languageCodeList {{\n') def q(val: Optional[str], size: int) -> str: """Quote the value and adjust the result for tabular view.""" - s = '' if val is None else ', '.join(f"'{c}'" for c in val) + s: str = '' if val is None else ', '.join(f"'{c}'" for c in val) return f'{{{s}}}' if size == 0 else f'{{{s}}},'.ljust(size * 5 + 2) for key, value in languages.items(): - code = value[1] + code: str = value[1] if key < 2: - result = code_data.query('und') + result: LanguageCodeEntry = code_data.query('und') else: - result = code_data.query(code) + result: LanguageCodeEntry = code_data.query(code) assert code == result.id() assert result is not None - codeString = q(result.part1Code, 2) + codeString: str = q(result.part1Code, 2) codeString += q(result.part2BCode, 3) codeString += q(result.part2TCode, 3) codeString += q(result.part3Code, 0) @@ -843,11 +847,11 @@ class LocaleDataWriter (LocaleSourceEditor): out('};\n\n') - def scriptNaming(self, scripts): + def scriptNaming(self, scripts: dict[int, tuple[str, str, str]]) -> None: self.__writeNameData(self.writer.write, scripts, 'script') self.__writeCodeList(self.writer.write, scripts, 'script', 4) - def territoryNaming(self, territories): + def territoryNaming(self, territories: dict[int, tuple[str, str, str]]) -> None: self.__writeNameData(self.writer.write, territories, 'territory') self.__writeCodeList(self.writer.write, territories, 'territory', 3) |