docs: def geocode(address):
      '''Query function to obtain a latitude and longitude from a location
      string such as `Houston, TX` or`Colombia`. This uses an online lookup,
      currently wrapping the `geopy` library, and providing an on-disk cache
      of queries.
      
      Parameters
      ----------
      address : str
          Search string to retrieve the location, [-]
          
      Returns
      -------
      latitude : float
          Latitude of address, [degrees]
      longitude : float
          Longitude of address, [degrees]
          
      Notes
      -----
      If a query has been retrieved before, this function will take under 1 ms;
      it takes several seconds otherwise.
      
      Examples
      --------
      >>> geocode('Fredericton, NB')
      (45.966425, -66.645813)
      '''
      loc_tuple = None
      try:
          cache = geopy_cache()
          loc_tuple = cache.cached_address(address)
      except:
          # Handle bugs in the cache, i.e. if there is no space on disk to create
          # the database, by ignoring them
          pass
      if loc_tuple is not None:
          return loc_tuple
      else:
          geocoder = geopy_geolocator()
          if geocoder is None:
              return geopy_missing_msg
          location = geocoder.geocode(address)
          try:
              cache.cache_address(address, location.latitude, location.longitude)
          except:
              pass
          return (location.latitude, location.longitude)