def triangulate(points):  
    """
    Connects an input list of xy tuples with lines forming a set of 
    smallest possible Delauney triangles between them.

    Arguments:

    - **points**: A list of xy or xyz point tuples to triangulate. 

    Returns:

    - A list of triangle polygons. If the input coordinate points contained
        a third z value then the output triangles will also have these z values. 

    """
    # Remove duplicate xy points bc that would make delauney fail, and must remember z (if any) for retrieving originals from index results
    seen = set() 
    uniqpoints = [ p for p in points if str( p[:2] ) not in seen and not seen.add( str( p[:2] ) )]
    classpoints = [_Point(*point[:2]) for point in uniqpoints]

    # Compute Delauney
    triangle_ids = tesselator.computeDelaunayTriangulation(classpoints)

    # Get vertices from result indexes
    triangles = [[uniqpoints[i] for i in triangle] for triangle in triangle_ids]
    
    return triangles
Connects an input list of xy tuples with lines forming a set of 
    smallest possible Delauney triangles between them.

    Arguments:

    - **points**: A list of xy or xyz point tuples to triangulate. 

    Returns:

    - A list of triangle polygons. If the input coordinate points contained
        a third z value then the output triangles will also have these z values.