human
I wrote the below code

    def plane(azimuth, elevation, x, y):
        u'Create    a    plane    whose    normal    vector    is    at    the    given    azimuth    and\n                                elevation.'
        (theta, phi) = _azimuth2math(azimuth, elevation)
        (a, b, c) = _sph2cart(theta, phi)
        z = ((- ((a * x) + (b * y))) / c)
        return z
    def angled_plane(azimuth, elevation, angle, x, y):
        u'Create    a    plane    whose    normal    vector    is    at    an    angle    from    the    given\n                                azimuth    and    elevation.'
        elevation = (elevation + angle)
        if (elevation > 90):
            azimuth = ((azimuth + 180) % 360)
            elevation = ((90 - elevation) % 90)
        return plane(azimuth, elevation, x, y)
    (y, x) = np.mgrid[5:0:(-1), :5]
    for (az, elev) in itertools.product(range(0, 390, 30), range(0, 105, 15)):
        ls = mcolors.LightSource(az, elev)
        for angle in range(0, 105, 15):
            z = angled_plane(az, elev, angle, x, y)
            h = ls.hillshade(z)
            assert_array_almost_equal(h, np.cos(np.radians(angle)))

What's a good function header?
assistant
#Here's a good function header.

def test_light_source_planar_hillshading():