code: def validate_location(location):  # noqa: C901
      
      if isinstance(location, np.ndarray) \
              or (pd is not None and isinstance(location, pd.DataFrame)):
          location = np.squeeze(location).tolist()
      if not hasattr(location, '__len__'):
          raise TypeError('Location should be a sized variable, '
                          'for example a list or a tuple, instead got '
                          '{!r} of type {}.'.format(location, type(location)))
      if len(location) != 2:
          raise ValueError('Expected two (lat, lon) values for location, '
                           'instead got: {!r}.'.format(location))
      try:
          coords = (location[0], location[1])
      except (TypeError, KeyError):
          raise TypeError('Location should support indexing, like a list or '
                          'a tuple does, instead got {!r} of type {}.'
                          .format(location, type(location)))
      for coord in coords:
          try:
              float(coord)
          except (TypeError, ValueError):
              raise ValueError('Location should consist of two numerical values, '
                               'but {!r} of type {} is not convertible to float.'
                               .format(coord, type(coord)))
          if math.isnan(float(coord)):
              raise ValueError('Location values cannot contain NaNs.')
      return [float(x) for x in coords]
docs: Validate a single lat/lon coordinate pair and convert to a list
  
      Validate that location:
      * is a sized variable
      * with size 2
      * allows indexing (i.e. has an ordering)
      * where both values are floats (or convertible to float)
      * and both values are not NaN
  
      Returns
      -------
      list[float, float]