diff --git a/scripts/geodata/addresses/entrances.py b/scripts/geodata/addresses/entrances.py index 6301731b..74c3a066 100644 --- a/scripts/geodata/addresses/entrances.py +++ b/scripts/geodata/addresses/entrances.py @@ -23,6 +23,8 @@ class Entrance(NumberedComponent): @classmethod def random(cls, language, country=None): num_type, num_type_props = cls.choose_alphanumeric_type('entrances.alphanumeric', language, country=country) + if num_type is None: + return None if num_type == cls.NUMERIC: number = weighted_choice(cls.entrance_range, cls.entrance_range_cdf) diff --git a/scripts/geodata/addresses/floors.py b/scripts/geodata/addresses/floors.py index ba5ceba7..e00854a8 100644 --- a/scripts/geodata/addresses/floors.py +++ b/scripts/geodata/addresses/floors.py @@ -38,6 +38,8 @@ class Floor(NumberedComponent): @classmethod def random(cls, language, country=None, num_floors=None, num_basements=None): num_type, num_type_props = cls.choose_alphanumeric_type('levels.alphanumeric', language, country=country) + if num_type is None: + return None if num_floors is not None: number = cls.sample_floors(num_floors, num_basements or 0) diff --git a/scripts/geodata/addresses/numbering.py b/scripts/geodata/addresses/numbering.py index 120ce1a1..30a6307d 100644 --- a/scripts/geodata/addresses/numbering.py +++ b/scripts/geodata/addresses/numbering.py @@ -116,7 +116,9 @@ class NumberedComponent(object): @classmethod def choose_alphanumeric_type(cls, key, language, country=None): - alphanumeric_props = address_config.get_property(key, language, country=country) + alphanumeric_props = address_config.get_property(key, language, country=country, default=None) + if alphanumeric_props is None: + return None, None values = [] probs = [] diff --git a/scripts/geodata/addresses/po_boxes.py b/scripts/geodata/addresses/po_boxes.py index cd2f4703..ff24e428 100644 --- a/scripts/geodata/addresses/po_boxes.py +++ b/scripts/geodata/addresses/po_boxes.py @@ -33,6 +33,8 @@ class POBox(NumberedComponent): @classmethod def random(cls, language, country=None): num_type, num_type_props = cls.choose_alphanumeric_type('po_boxes.alphanumeric', language, country=country) + if num_type is None: + return None if num_type != cls.ALPHA: digit_config = address_config.get_property('po_boxes.digits', language, country=country, default=[]) @@ -66,5 +68,7 @@ class POBox(NumberedComponent): @classmethod def phrase(cls, box_number, language, country=None): + if box_number is None: + return None return cls.numeric_phrase('po_boxes.alphanumeric', safe_decode(box_number), language, dictionaries=['post_office'], country=country) diff --git a/scripts/geodata/addresses/staircases.py b/scripts/geodata/addresses/staircases.py index 5e049a5e..f87557f9 100644 --- a/scripts/geodata/addresses/staircases.py +++ b/scripts/geodata/addresses/staircases.py @@ -23,6 +23,8 @@ class Staircase(NumberedComponent): @classmethod def random(cls, language, country=None): num_type, num_type_props = cls.choose_alphanumeric_type('staircases.alphanumeric', language, country=country) + if num_type is None: + return None if num_type == cls.NUMERIC: number = weighted_choice(cls.staircase_range, cls.staircase_range_cdf) diff --git a/scripts/geodata/addresses/units.py b/scripts/geodata/addresses/units.py index 2c760350..e9b3c1db 100644 --- a/scripts/geodata/addresses/units.py +++ b/scripts/geodata/addresses/units.py @@ -52,6 +52,8 @@ class Unit(NumberedComponent): @classmethod def random(cls, language, country=None, num_floors=None, num_basements=None): num_type, num_type_props = cls.choose_alphanumeric_type('units.alphanumeric', language, country=country) + if num_type is None: + return None use_floor_prob = address_config.get_property('units.alphanumeric.use_floor_probability', language, country=country, default=0.0)