docs: def create_poi_gdf(polygon=None, amenities=None, north=None, south=None, east=None, west=None):
      """
      Parse GeoDataFrames from POI json that was returned by Overpass API.
  
      Parameters
      ----------
      polygon : shapely Polygon or MultiPolygon
          geographic shape to fetch the POIs within
      amenities: list
          List of amenities that will be used for finding the POIs from the selected area. 
          See available amenities from: http://wiki.openstreetmap.org/wiki/Key:amenity 
      north : float
          northern latitude of bounding box
      south : float
          southern latitude of bounding box
      east : float
          eastern longitude of bounding box
      west : float
          western longitude of bounding box
          
      Returns
      -------
      Geopandas GeoDataFrame with POIs and the associated attributes. 
      """
  
      responses = osm_poi_download(polygon=polygon, amenities=amenities, north=north, south=south, east=east, west=west)
  
      # Parse coordinates from all the nodes in the response
      coords = parse_nodes_coords(responses)
  
      # POI nodes
      poi_nodes = {}
  
      # POI ways
      poi_ways = {}
  
      # A list of POI relations
      relations = []
  
      for result in responses['elements']:
          if result['type'] == 'node' and 'tags' in result:
              poi = parse_osm_node(response=result)
              # Add element_type
              poi['element_type'] = 'node'
              # Add to 'pois'
              poi_nodes[result['id']] = poi
          elif result['type'] == 'way':
              # Parse POI area Polygon
              poi_area = parse_polygonal_poi(coords=coords, response=result)
              if poi_area:
                  # Add element_type
                  poi_area['element_type'] = 'way'
                  # Add to 'poi_ways'
                  poi_ways[result['id']] = poi_area
  
          elif result['type'] == 'relation':
              # Add relation to a relation list (needs to be parsed after all nodes and ways have been parsed)
              relations.append(result)
  
      # Create GeoDataFrames
      gdf_nodes = gpd.GeoDataFrame(poi_nodes).T
      gdf_nodes.crs = settings.default_crs
  
      gdf_ways = gpd.GeoDataFrame(poi_ways).T
      gdf_ways.crs = settings.default_crs
  
      # Parse relations (MultiPolygons) from 'ways'
      gdf_ways = parse_osm_relations(relations=relations, osm_way_df=gdf_ways)
  
      # Combine GeoDataFrames
      gdf = gdf_nodes.append(gdf_ways, sort=False)
  
      return gdf