diff options
author | Ievgenii Meshcheriakov <ievgenii.meshcheriakov@qt.io> | 2021-07-05 16:36:52 +0200 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2021-07-09 17:44:32 +0000 |
commit | 85f449b62bb06410ab57a263b28feeb3e0919925 (patch) | |
tree | 22220e7e37719dbaef63f6f2383b3672aef7f279 /util | |
parent | 6299dc7f8895261099e5a9a84bd5c357c7e09af5 (diff) |
cldr.py: Avoid raising StopIteration from generators
The behavior of StopIteration in generators was changed in Python 3
(see https://www.python.org/dev/peps/pep-0479/). Not raising that
exception makes it easier to port the code to Python 3.
Task-number: QTBUG-83488
Change-Id: Iac6e3f6f1e1e8ef3a1a0d89b19d2ac2d186434f5
Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
(cherry picked from commit d804d21e8f5d9e1cd7fd4ae9a3f2394642d1f7d8)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
Diffstat (limited to 'util')
-rw-r--r-- | util/locale_database/cldr.py | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/util/locale_database/cldr.py b/util/locale_database/cldr.py index 6d6eee2e00..a65c649106 100644 --- a/util/locale_database/cldr.py +++ b/util/locale_database/cldr.py @@ -172,7 +172,11 @@ class CldrReader (object): 4 values, never 2 or 3.""" tags = iter(name.split('_')) yield tags.next() # Language - tag = tags.next() # may raise StopIteration + + try: + tag = tags.next() + except StopIteration: + return # Script is always four letters, always capitalised: if len(tag) == 4 and tag[0].isupper() and tag[1:].islower(): @@ -201,10 +205,11 @@ class CldrReader (object): else: yield '' - # If nothing is left, StopIteration will avoid the warning: - if not tag: - tag = tags.next() - self.grumble('Ignoring unparsed cruft {} in {}\n'.format('_'.join(tag + tuple(tags)), name)) + rest = [tag] if tag else [] + rest.extend(tags) + + if rest: + self.grumble('Ignoring unparsed cruft {} in {}\n'.format('_'.join(rest), name)) def __getLocaleData(self, scan, calendars, language, script, territory, variant): ids, names = zip(*self.root.codesToIdName(language, script, territory, variant)) |