@staticmethod
def open(path: Union[(str, Path)], crs: Optional[CRS]=None) -> MeshType:
    'Read mesh from a file on disk\n\n        Parameters\n        ----------\n        path : path-like\n            Path to the file containig mesh.\n        crs : CRS or None, default=None\n            CRS of the mesh in the path. Overwrites any info read\n            from file, no transformation is done.\n\n        Returns\n        -------\n        MeshType\n            Mesh object created by reading the file.\n\n        Raises\n        ------\n        TypeError\n           If cannot determine the input mesh type.\n\n        Notes\n        -----\n        Currently only SMS-2DM and GRD formats are supported for\n        reading.\n        '
    try:
        msh_t = utils.grd_to_msh_t(grd.read(path, crs=crs))
        msh_t.value = np.negative(msh_t.value)
        return Mesh(msh_t)
    except Exception as e:
        if ('not a valid grd file' in str(e)):
            pass
        else:
            raise e
    try:
        return Mesh(utils.sms2dm_to_msh_t(sms2dm.read(path, crs=crs)))
    except ValueError:
        pass
    try:
        msh_t = jigsaw_msh_t()
        loadmsh(msh_t, path)
        msh_t.crs = crs
        return Mesh(msh_t)
    except Exception as e:
        pass
    raise TypeError(f'Unable to automatically determine file type for {str(path)}.')
Read mesh from a file on disk

Parameters
----------
path : path-like
    Path to the file containig mesh.
crs : CRS or None, default=None
    CRS of the mesh in the path. Overwrites any info read
    from file, no transformation is done.

Returns
-------
MeshType
    Mesh object created by reading the file.

Raises
------
TypeError
   If cannot determine the input mesh type.

Notes
-----
Currently only SMS-2DM and GRD formats are supported for
reading.
@staticmethod
def open(path: Union[(str, Path)], crs: Optional[CRS]=None) -> MeshType:
    'Read mesh from a file on disk\n\n        Parameters\n        ----------\n        path : path-like\n            Path to the file containig mesh.\n        crs : CRS or None, default=None\n            CRS of the mesh in the path. Overwrites any info read\n            from file, no transformation is done.\n\n        Returns\n        -------\n        MeshType\n            Mesh object created by reading the file.\n\n        Raises\n        ------\n        TypeError\n           If cannot determine the input mesh type.\n\n        Notes\n        -----\n        Currently only SMS-2DM and GRD formats are supported for\n        reading.\n        '
    try:
        msh_t = utils.grd_to_msh_t(grd.read(path, crs=crs))
        msh_t.value = np.negative(msh_t.value)
        return Mesh(msh_t)
    except Exception as e:
        if ('not a valid grd file' in str(e)):
            pass
        else:
            raise e
    try:
        return Mesh(utils.sms2dm_to_msh_t(sms2dm.read(path, crs=crs)))
    except ValueError:
        pass
    try:
        msh_t = jigsaw_msh_t()
        loadmsh(msh_t, path)
        msh_t.crs = crs
        return Mesh(msh_t)
    except Exception as e:
        pass
    raise TypeError(f'Unable to automatically determine file type for {str(path)}.')