python-package/lets_plot/geo_data_internals/utils.py (21 lines of code) (raw):
# Copyright (c) 2021. JetBrains s.r.o.
# Use of this source code is governed by the MIT license that can be found in the LICENSE file.
from typing import List, Any
from lets_plot.geo_data_internals.constants import DF_COLUMN_CITY, DF_COLUMN_COUNTY, DF_COLUMN_STATE, DF_COLUMN_COUNTRY
def find_geo_names(obj) -> List[str]:
if is_geocoder(obj):
data = obj.get_geocodes()
else:
data = obj
names = []
if DF_COLUMN_CITY in data:
names.append(DF_COLUMN_CITY)
if DF_COLUMN_COUNTY in data:
names.append(DF_COLUMN_COUNTY)
if DF_COLUMN_STATE in data:
names.append(DF_COLUMN_STATE)
if DF_COLUMN_COUNTRY in data:
names.append(DF_COLUMN_COUNTRY)
return names
def is_geocoder(v: Any) -> bool:
# do not import Geocoder directly to suppress OSM attribution from geo_data package
if v is None:
return False
return any(base.__name__ == 'Geocoder' for base in type(v).mro())