From 90c88a3a2438929d0348d8d05b05869ca6fe4315 Mon Sep 17 00:00:00 2001 From: Al Date: Wed, 20 Apr 2016 14:58:57 -0400 Subject: [PATCH] [fix] None handling and number dictionaries --- scripts/geodata/addresses/floors.py | 9 ++++++--- scripts/geodata/addresses/numbering.py | 21 ++++++++++++--------- 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/scripts/geodata/addresses/floors.py b/scripts/geodata/addresses/floors.py index 9af15c3f..00e7881d 100644 --- a/scripts/geodata/addresses/floors.py +++ b/scripts/geodata/addresses/floors.py @@ -77,6 +77,9 @@ class Floor(NumberedComponent): @classmethod def phrase(cls, floor, language, country=None, is_top=False): + if floor is None: + return None + floor = safe_decode(floor) try: floor = int(floor) @@ -86,7 +89,7 @@ class Floor(NumberedComponent): floor = float(floor) integer_floor = int(floor) == floor except (ValueError, TypeError): - return cls.numeric_phrase('levels.alphanumeric', safe_decode(floor), language, + return cls.numeric_phrase('levels.alphanumeric', floor, language, dictionaries=['level_types_numbered'], country=country) alias_prefix = 'levels.aliases' @@ -119,7 +122,7 @@ class Floor(NumberedComponent): alias = safe_decode(floor) if alias: - return cls.numeric_phrase('{}.{}'.format(alias_prefix, alias), safe_decode(floor), language, + return cls.numeric_phrase('{}.{}'.format(alias_prefix, alias), floor, language, dictionaries=['level_types_basement', 'level_types_mezzanine', 'level_types_numbered', @@ -127,5 +130,5 @@ class Floor(NumberedComponent): 'level_types_sub_basement'], country=country) - return cls.numeric_phrase('levels.alphanumeric', safe_decode(floor), language, + return cls.numeric_phrase('levels.alphanumeric', floor, language, dictionaries=['level_types_numbered'], country=country) \ No newline at end of file diff --git a/scripts/geodata/addresses/numbering.py b/scripts/geodata/addresses/numbering.py index c981e560..80dd767b 100644 --- a/scripts/geodata/addresses/numbering.py +++ b/scripts/geodata/addresses/numbering.py @@ -99,7 +99,7 @@ class NumericPhrase(object): class Number(NumericPhrase): key = 'numbers' - dictionraries = ['number'] + dictionaries = ['number'] class NumberedComponent(object): @@ -107,19 +107,22 @@ class NumberedComponent(object): def numeric_phrase(cls, key, num, language, country=None, dictionaries=()): is_alpha = False is_none = False - try: - num = int(num) - except ValueError: + if num is not None: try: - num = float(num) + num = int(num) except ValueError: - is_alpha = num is not None - is_none = num is None + try: + num = float(num) + except ValueError: + is_alpha = True + else: + is_none = True # Pick a phrase given the probability distribution from the config values, probs = address_config.alternative_probabilities(key, language, dictionaries=dictionaries, country=country) - if values is None: - return None + if not values: + return safe_decode(num) if not is_none else None + phrase, phrase_props = weighted_choice(values, probs) values = []