Source code for geomate.geocoderAPI.base
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
All Geocoder class inherit from BaseGeocoder must have the following methods:
- ``geocode(str_address)``
- ``reverse(tuple_coordinate_lat_lng)``
"""
import random
[docs]class APIError(Exception):
"""API related error.
"""
[docs]class BaseGeocoder(object):
"""Geocoder base class.
take_one_key randomly return a api key.
if GeocoderQuotaExceeded been raised, remove the api key from pool
"""
def take_one_key(self):
try:
return random.choice(self.api_keys)
except IndexError:
raise APIError("Run out of all API keys")
def remove_one_key(self, key):
try:
self.api_keys.remove(key)
except ValueError:
raise APIError("Run out of all API keys")