docs: def geo_shape(self, sides=5, center=None, distance=None):
          """
          Return a WKT string for a POLYGON with given amount of sides.
          The polygon is defined by its center (random point if not provided) and
          the distance (random distance if not provided; in km) of the points to
          its center.
          """
          assert isinstance(sides, int)
  
          if distance is None:
              distance = self.random_int(100, 1000)
          else:
              # 6371 => earth radius in km
              # assert that shape radius is maximum half of earth's circumference
              assert isinstance(distance, int)
              assert distance <= EARTH_RADIUS * math.pi, \
                  'distance must not be greater than half of earth\'s circumference'
  
          if center is None:
              # required minimal spherical distance from north/southpole
              dp = distance * 180.0 / EARTH_RADIUS / math.pi
              center = self.geo_point(lat_min=-90.0 + dp, lat_max=90.0 - dp)
          else:
              assert -180.0 <= center[0] <= 180.0, 'Longitude out of bounds'
              assert -90.0 <= center[1] <= 90.0, 'Latitude out of bounds'
  
          angles = list(self.random_sample(range(360), sides))
          angles.sort()
          points = [_dest_point(center, distance, bearing, EARTH_RADIUS) for bearing in angles]
          # close polygon
          points.append(points[0])
  
          path = ', '.join([' '.join(p) for p in ([str(lon), str(lat)] for lon, lat in points)])
          return f'POLYGON (( {path} ))'