From 35b4f598f8c234b7e30894a53fefca45e18864ba Mon Sep 17 00:00:00 2001 From: Al Date: Mon, 23 May 2016 05:09:21 -0400 Subject: [PATCH] [fix] drop invalid components --- scripts/geodata/addresses/components.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/scripts/geodata/addresses/components.py b/scripts/geodata/addresses/components.py index 94721c1e..d5164627 100644 --- a/scripts/geodata/addresses/components.py +++ b/scripts/geodata/addresses/components.py @@ -965,6 +965,13 @@ class AddressComponents(object): return address_components return {c: v for c, v in six.iteritems(address_components) if c != AddressFormatter.POSTCODE} + def drop_invalid_components(self, address_components): + component_bitset = self.component_bitset(address_components) + for c in list(address_components): + if not component_bitset & self.component_dependencies[c]: + address_components.pop(c) + component_bitset ^= self.component_bit_values[c] + def po_box_address(self, address_components, language, country=None): po_box_config = self.config['po_box'] po_box_probability = float(po_box_config['probability']) @@ -1079,6 +1086,8 @@ class AddressComponents(object): # Perform dropout on places address_components = place_config.dropout_components(address_components, all_osm_components, country=country) + self.drop_invalid_components(address_components) + return address_components, country, language def limited(self, address_components, latitude, longitude):