From e13c536b0309a0dd88ab0f3a0ddcbf8c08545119 Mon Sep 17 00:00:00 2001 From: Al Date: Tue, 19 Apr 2016 17:05:10 -0400 Subject: [PATCH] [addresses] different dictionaries for sampling cardinal/unit directions, not converting None to a string --- scripts/geodata/addresses/directions.py | 2 ++ scripts/geodata/addresses/numbering.py | 14 ++++++++++---- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/scripts/geodata/addresses/directions.py b/scripts/geodata/addresses/directions.py index ee21d82a..1ab0f39f 100644 --- a/scripts/geodata/addresses/directions.py +++ b/scripts/geodata/addresses/directions.py @@ -3,7 +3,9 @@ from geodata.addresses.numbering import NumericPhrase class RelativeDirection(NumericPhrase): key = 'directions' + dictionaries = ['unit_directions'] class CardinalDirection(NumericPhrase): key = 'cardinal_directions' + dictionaries = ['cardinal_directions'] diff --git a/scripts/geodata/addresses/numbering.py b/scripts/geodata/addresses/numbering.py index b6fdb0f6..c981e560 100644 --- a/scripts/geodata/addresses/numbering.py +++ b/scripts/geodata/addresses/numbering.py @@ -43,9 +43,9 @@ class NumericPhrase(object): @classmethod def phrase(cls, number, language, country=None): - values, probs = address_config.alternative_probabilities(cls.key, language, dictionaries=['number'], country=country) + values, probs = address_config.alternative_probabilities(cls.key, language, dictionaries=cls.dictionaries, country=country) if not values: - return safe_decode(number) + return safe_decode(number) if number is not None else None phrase, phrase_props = weighted_choice(values, probs) @@ -82,6 +82,9 @@ class NumericPhrase(object): # Title case unless the config specifies otherwise phrase = phrase.title() + if number is None: + return phrase + whitespace_phrase = six.u(' ') if whitespace else six.u('') # Phrase goes to the left of hte number if direction == 'left': @@ -96,19 +99,22 @@ class NumericPhrase(object): class Number(NumericPhrase): key = 'numbers' + dictionraries = ['number'] class NumberedComponent(object): @classmethod def numeric_phrase(cls, key, num, language, country=None, dictionaries=()): is_alpha = False + is_none = False try: num = int(num) except ValueError: try: num = float(num) except ValueError: - is_alpha = True + is_alpha = num is not None + is_none = num is None # Pick a phrase given the probability distribution from the config values, probs = address_config.alternative_probabilities(key, language, dictionaries=dictionaries, country=country) @@ -148,7 +154,7 @@ class NumberedComponent(object): probs.append(1.0) break - if not probs: + if not probs or is_none: return phrase # If we're using something like "Floor A" or "Unit 2L", remove ordinal/affix items