def path1_is_contained_in_path2(path1, path2): if path2.intersect(path1): return True # find a point that's definitely outside path2 xmin, xmax, ymin, ymax = path2.bbox() B = (xmin + 1) + 1j * (ymax + 1) A = path1.start # pick an arbitrary point in path1 AB_line = Path(Line(A, B)) number_of_intersections = len(AB_line.intersect(path2)) if number_of_intersections % 2: # if number of intersections is odd return True else: return False