[fix] make sure values are hashable in mapping OSM components

This commit is contained in:
Al
2016-07-23 03:04:23 -04:00
parent 31db378303
commit 2a634797ec

View File

@@ -1,3 +1,4 @@
import collections
import os
import six
import yaml
@@ -101,15 +102,17 @@ class OSMAddressComponents(object):
config.update(config_updates)
break
values = [(k, v) for k, v in six.iteritems(properties) if isinstance(v, collections.Hashable)]
# place=city, place=suburb, etc. override per-country boundaries
for k, v in six.iteritems(properties):
for k, v in values:
containing_component = self.global_keys_override.get(k, {}).get(v, None)
if containing_component is not None:
return containing_component
# admin_level tags are mapped per country
for k, v in six.iteritems(properties):
for k, v in values:
containing_component = config.get(k, {}).get(v, None)
if containing_component is not None:
@@ -117,7 +120,7 @@ class OSMAddressComponents(object):
# other place keys like place=state, etc. serve as a backup
# when no boundaries are available
for k, v in six.iteritems(properties):
for k, v in values:
containing_component = self.global_keys.get(k, {}).get(v, None)
if containing_component is not None: