def normal_from_points(a, b, c):
    x1, y1, z1 = a
    x2, y2, z2 = b
    x3, y3, z3 = c
    ab = (x2 - x1, y2 - y1, z2 - z1)
    ac = (x3 - x1, y3 - y1, z3 - z1)
    x, y, z = cross(ab, ac)
    d = (x * x + y * y + z * z) ** 0.5
    return (x / d, y / d, z / d)
Make sure removal with symlink works properly.
dataset/ETHPy150Open fogleman/pg/pg/util.py/normal_from_points--crossover with--dataset/ETHPy150Open jlisee/xpkg/python/tests/fulltests.py/FullTests.test_symlink_remove