docs: def fill_polygon_with_points(cls, goal=None, polygon=None):
          """
              Fill a shapely polygon with X number of points
          """
          if goal is None:
              raise ValueError("Must specify the number of points (goal) to fill the polygon with")
  
          if polygon is None or (not isinstance(polygon, Polygon) and not isinstance(polygon, MultiPolygon)):
              raise ValueError("Must specify a polygon to fill points with")
  
          minx = polygon.bounds[0] 
          maxx = polygon.bounds[2] 
          miny = polygon.bounds[1] 
          maxy = polygon.bounds[3] 
  
          points = []
          now = time.time()
          while len(points) < goal:
              random_x = random.uniform(minx, maxx)
              random_y = random.uniform(miny, maxy)
              p = Point(random_x, random_y)
              if p.within(polygon):
                  points.append(p)
  
          logger.info("Filling polygon with points took %f seconds" % (time.time() - now))
  
          return points