def __new__(cls, mesh: jigsaw_msh_t) -> MeshType:
    'Construct a concrete mesh object.\n\n        Parameters\n        ----------\n        mesh : jigsaw_msh_t\n            Input jigsaw mesh object\n\n        Returns\n        -------\n        MeshType\n            Mesh object created from the input\n\n        Raises\n        ------\n        TypeError\n            Input `mesh` is not a `jigsaw_msh_t` object.\n        NotImplementedError\n            Input `mesh` object cannot be used to create a EuclideanMesh2D\n        '
    if (not isinstance(mesh, jigsaw_msh_t)):
        raise TypeError(f'Argument mesh must be of type {jigsaw_msh_t}, not type {type(mesh)}.')
    if (mesh.mshID == 'euclidean-mesh'):
        if (mesh.ndims == 2):
            return EuclideanMesh2D(mesh)
        raise NotImplementedError(f'mshID={mesh.mshID} + mesh.ndims={mesh.ndims} not handled.')
    raise NotImplementedError(f'mshID={mesh.mshID} not handled.')
Construct a concrete mesh object.

Parameters
----------
mesh : jigsaw_msh_t
    Input jigsaw mesh object

Returns
-------
MeshType
    Mesh object created from the input

Raises
------
TypeError
    Input `mesh` is not a `jigsaw_msh_t` object.
NotImplementedError
    Input `mesh` object cannot be used to create a EuclideanMesh2D
def __new__(cls, mesh: jigsaw_msh_t) -> MeshType:
    'Construct a concrete mesh object.\n\n        Parameters\n        ----------\n        mesh : jigsaw_msh_t\n            Input jigsaw mesh object\n\n        Returns\n        -------\n        MeshType\n            Mesh object created from the input\n\n        Raises\n        ------\n        TypeError\n            Input `mesh` is not a `jigsaw_msh_t` object.\n        NotImplementedError\n            Input `mesh` object cannot be used to create a EuclideanMesh2D\n        '
    if (not isinstance(mesh, jigsaw_msh_t)):
        raise TypeError(f'Argument mesh must be of type {jigsaw_msh_t}, not type {type(mesh)}.')
    if (mesh.mshID == 'euclidean-mesh'):
        if (mesh.ndims == 2):
            return EuclideanMesh2D(mesh)
        raise NotImplementedError(f'mshID={mesh.mshID} + mesh.ndims={mesh.ndims} not handled.')
    raise NotImplementedError(f'mshID={mesh.mshID} not handled.')