summaryrefslogtreecommitdiffstats
path: root/util/locale_database/ldml.py
diff options
context:
space:
mode:
authorEdward Welbourne <edward.welbourne@qt.io>2024-01-23 21:14:47 +0100
committerEdward Welbourne <edward.welbourne@qt.io>2024-01-29 15:14:43 +0100
commitc8b70f4e511e26c73a9da453f4c2b5624e66a2c1 (patch)
tree90e14fffaf94126e709b2aa855ed9c2961ccbcf6 /util/locale_database/ldml.py
parent82f8afe6bab42b7b70f571825d23cbb9270b9071 (diff)
ldml.LocaleScanner.__find(): only Error if no matches found
The existing caller returns early on finding a match, so never ran off the end of the iteration unless there were no matches. I'll soon be adding a new caller that wants to iterate all matches, so will run off the end even when there are some. So only raise the Error if we found nothing. Task-number: QTBUG-115158 Change-Id: I1cae4674eb5e83c433554c15ecc4441b756f20eb Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
Diffstat (limited to 'util/locale_database/ldml.py')
-rw-r--r--util/locale_database/ldml.py24
1 files changed, 15 insertions, 9 deletions
diff --git a/util/locale_database/ldml.py b/util/locale_database/ldml.py
index d259bedba1..4ee5868e57 100644
--- a/util/locale_database/ldml.py
+++ b/util/locale_database/ldml.py
@@ -413,7 +413,7 @@ class LocaleScanner (object):
) # Used for month and day names
def __find(self, xpath):
- retries = [ xpath.split('/') ]
+ retries, foundNone = [ xpath.split('/') ], True
while retries:
tags, elts, roots = retries.pop(), self.nodes, (self.base.root,)
for selector in tags:
@@ -423,6 +423,8 @@ class LocaleScanner (object):
break
else: # Found matching elements
+ if elts:
+ foundNone = False
# Possibly filter elts to prefer the least drafty ?
for elt in elts:
yield elt
@@ -442,19 +444,23 @@ class LocaleScanner (object):
if not roots:
if retries: # Let outer loop fall back on an alias path:
break
- sought = '/'.join(tags)
- if sought != xpath:
- sought += f' (for {xpath})'
- raise Error(f'All lack child {selector} for {sought} in {self.name}')
+ if foundNone:
+ sought = '/'.join(tags)
+ if sought != xpath:
+ sought += f' (for {xpath})'
+ raise Error(f'All lack child {selector} for {sought} in {self.name}')
else: # Found matching elements
+ if roots:
+ foundNone = False
for elt in roots:
yield elt
- sought = '/'.join(tags)
- if sought != xpath:
- sought += f' (for {xpath})'
- raise Error(f'No {sought} in {self.name}')
+ if foundNone:
+ sought = '/'.join(tags)
+ if sought != xpath:
+ sought += f' (for {xpath})'
+ raise Error(f'No {sought} in {self.name}')
def __currencyDisplayName(self, stem):
try: