@lru_cache(maxsize=1)
def __call__(self) -> gpd.GeoDataFrame:
    "Calcluates all the polygons of the mesh and extracts its rings.\n\n        Parameters\n        ----------\n\n        Returns\n        -------\n        gpd.GeoDataFrame\n            Dataframe containing all rings of the mesh hull polygon.\n            The rings are in the form of `shapely.geometry.LinearRing`.\n\n        Notes\n        -----\n        The result of this method is cached, so that multiple calls\n        to it won't result in multiple calculations. If the mesh\n        is modified and the cache is not properly clear the calls\n        to this method can result in invalid return values.\n        "
    polys = utils.get_mesh_polygons(self.mesh.msh_t)
    data = []
    bnd_id = 0
    for poly in polys:
        data.append({'geometry': poly.exterior, 'bnd_id': bnd_id, 'type': 'exterior'})
        for interior in poly.interiors:
            data.append({'geometry': interior, 'bnd_id': bnd_id, 'type': 'interior'})
        bnd_id = (bnd_id + 1)
    return gpd.GeoDataFrame(data, crs=self.mesh.crs)
Calcluates all the polygons of the mesh and extracts its rings.

Parameters
----------

Returns
-------
gpd.GeoDataFrame
    Dataframe containing all rings of the mesh hull polygon.
    The rings are in the form of `shapely.geometry.LinearRing`.

Notes
-----
The result of this method is cached, so that multiple calls
to it won't result in multiple calculations. If the mesh
is modified and the cache is not properly clear the calls
to this method can result in invalid return values.
@lru_cache(maxsize=1)
def __call__(self) -> gpd.GeoDataFrame:
    "Calcluates all the polygons of the mesh and extracts its rings.\n\n        Parameters\n        ----------\n\n        Returns\n        -------\n        gpd.GeoDataFrame\n            Dataframe containing all rings of the mesh hull polygon.\n            The rings are in the form of `shapely.geometry.LinearRing`.\n\n        Notes\n        -----\n        The result of this method is cached, so that multiple calls\n        to it won't result in multiple calculations. If the mesh\n        is modified and the cache is not properly clear the calls\n        to this method can result in invalid return values.\n        "
    polys = utils.get_mesh_polygons(self.mesh.msh_t)
    data = []
    bnd_id = 0
    for poly in polys:
        data.append({'geometry': poly.exterior, 'bnd_id': bnd_id, 'type': 'exterior'})
        for interior in poly.interiors:
            data.append({'geometry': interior, 'bnd_id': bnd_id, 'type': 'interior'})
        bnd_id = (bnd_id + 1)
    return gpd.GeoDataFrame(data, crs=self.mesh.crs)