<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def get_from_postcode(self, postcode, distance, skip_cache=False):
 """ Calls `postcodes.get_from_postcode` but checks correctness of `distance`, and by default utilises a local cache. :param skip_cache: optional argument specifying whether to skip the cache and make an explicit request. :raises IllegalPointException: if the latitude or longitude are out of bounds. :returns: a list of dicts containing postcode data within the specified distance. """

        distance = float(distance)
        if distance < 0:
            raise IllegalDistanceException("Distance must not be negative")
        # remove spaces and change case here due to caching
        postcode = postcode.lower().replace(' ', '')
        return self._lookup(skip_cache, get_from_postcode, postcode, 
                            float(distance))