<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def annulus(r_min=1.0, r_max=2.0, height=1.0, sections=32, transform=None, **kwargs):
 """ Create a mesh of an annular cylinder along Z, centered at the origin. Parameters r_min : float The inner radius of the annular cylinder r_max : float The outer radius of the annular cylinder height : float The height of the annular cylinder sections : int How many pie wedges should the annular cylinder have **kwargs: passed to Trimesh to create annulus Returns annulus : trimesh.Trimesh Mesh of annular cylinder """

    r_min = abs(float(r_min))
    r_max = abs(float(r_max))
    height = float(height)
    sections = int(sections)

    # if center radius is zero this is a cylinder
    if r_min < tol.merge:
        return cylinder(radius=r_max,
                        height=height,
                        sections=sections,
                        transform=transform)

    # create a 2D pie out of wedges
    theta = np.linspace(0, np.pi * 2, sections)[:-1]
    unit = np.column_stack((np.sin(theta),
                            np.cos(theta)))
    assert len(unit) == sections - 1

    vertices = np.vstack((unit * r_min,
                          unit * r_max))

    # one flattened triangulated quad covering one slice
    face = np.array([0, sections - 1, 1,
                     1, sections - 1, sections])

    # tile one quad into lots of quads
    faces = (np.tile(face, (sections - 1, 1)) +
             np.arange(sections - 1).reshape((-1, 1))).reshape((-1, 3))

    # stitch the last and first triangles with correct winding
    faces[-1] = [sections - 1, 0, sections - 2]

    # extrude the 2D profile into a mesh
    annulus = extrude_triangulation(vertices=vertices,
                                    faces=faces,
                                    height=height,
                                    **kwargs)

    # move the annulus so the centroid is at the origin
    annulus.vertices[:, 2] -= height * .5
    if transform is not None:
        # apply a transform here before any cache stuff is generated
        # and would have to be dumped after the transform is applied
        annulus.apply_transform(transform)

    return annulus