Skip to content

Commit 74d26e0

Browse files
committed
rbnf: correct radix reading
1 parent 02bd15b commit 74d26e0

2 files changed

Lines changed: 9 additions & 18 deletions

File tree

babel/rbnf.py

Lines changed: 5 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -619,16 +619,12 @@ def __init__(self, value, text, radix=None):
619619
if value in self.specials:
620620
self.value = value
621621
else:
622-
try:
623-
self.value = int(value)
624-
except:
625-
warnings.warn("Unknown rule value: [%s]" % value, SyntaxWarning)
622+
self.value = int(value)
626623

627624
self.text = text
628-
self._radix = radix
629-
630-
self._parse(text)
625+
self.radix = int(radix or 10)
631626

627+
self._parse(text)
632628

633629
def apply(self, number, context):
634630
"""
@@ -685,14 +681,8 @@ def divisor(self):
685681
if isinstance(self.value, int):
686682
if self.value == 0:
687683
return 1
688-
exp = decimal.Decimal(self.value).ln()/decimal.Decimal(self.radix).ln()
689-
return int(self.radix**math.floor(exp))
690-
691-
692-
@property
693-
def radix(self):
694-
return self._radix or 10
695-
684+
exp = decimal.Decimal(self.value).ln() / decimal.Decimal(self.radix).ln()
685+
return int(self.radix ** math.floor(exp))
696686

697687
@property
698688
def substitutions(self):

scripts/import_cldr.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,6 @@ def parse_global(srcdir, sup):
230230
all_currencies = collections.defaultdict(set)
231231
currency_fractions = global_data.setdefault('currency_fractions', {})
232232
territory_languages = global_data.setdefault('territory_languages', {})
233-
rbnf_locales = global_data.setdefault('rbnf_locales', [])
234233
bcp47_timezone = parse(os.path.join(srcdir, 'bcp47', 'timezone.xml'))
235234
sup_windows_zones = parse(os.path.join(sup_dir, 'windowsZones.xml'))
236235
sup_metadata = parse(os.path.join(sup_dir, 'supplementalMetadata.xml'))
@@ -1020,17 +1019,19 @@ def parse_rbnf_rules(data, tree):
10201019
ruleset_obj = rbnf.Ruleset(ruleset_name, private)
10211020
for rule in ruleset.findall('rbnfrule'):
10221021
radix = rule.attrib.get('radix')
1022+
if radix == "1,000": # HACK: work around misspelled radix in mt.xml
1023+
radix = "1000"
10231024
try:
10241025
rule_obj = rbnf.Rule(rule.attrib['value'], rule.text, radix)
1026+
ruleset_obj.rules.append(rule_obj)
10251027
except rbnf.TokenizationError as e:
10261028
log('%s: Unable to parse rule "%s%s: %s "' % (
10271029
data['locale_id'],
10281030
rule.attrib['value'],
10291031
rule.text,
10301032
'' if radix is None else ('/%s' % radix),
10311033
))
1032-
ruleset_obj.rules.append(rule_obj)
1033-
rbnf_rules[group_name].append(ruleset_obj)
1034+
rbnf_rules[group_name].append(ruleset_obj)
10341035

10351036

10361037
if __name__ == '__main__':

0 commit comments

Comments
 (0)