code: def osm_poi_download(polygon=None, amenities=None, north=None, south=None, east=None, west=None,
                       timeout=180, max_query_area_size=50*1000*50*1000):
      
  
      if polygon:
          # Bounds
          west, south, east, north = polygon.bounds
  
          # Parse the Overpass QL query
          query = parse_poi_query(amenities=amenities, west=west, south=south, east=east, north=north)
  
      elif not (north is None or south is None or east is None or west is None):
          # TODO: Add functionality for subdividing search area geometry based on max_query_area_size
          # Parse Polygon from bbox
          #polygon = bbox_to_poly(north=north, south=south, east=east, west=west)
  
          # Parse the Overpass QL query
          query = parse_poi_query(amenities=amenities, west=west, south=south, east=east, north=north)
  
      else:
          raise ValueError('You must pass a polygon or north, south, east, and west')
  
      # Get the POIs
      responses = overpass_request(data={'data': query}, timeout=timeout)
  
      return responses
docs: Get points of interests (POIs) from OpenStreetMap based on selected amenity types.
  
      Parameters
      ----------
      poly : shapely.geometry.Polygon
          Polygon that will be used to limit the POI search. 
      amenities : list
          List of amenities that will be used for finding the POIs from the selected area.
  
      Returns
      -------
      gdf : geopandas.GeoDataFrame
          Points of interest and the tags associated with them as geopandas GeoDataFrame.