def rotate(self, angle, axis, origin = numpy.array([0.0, 0.0, 0.0])):
        p, pi, ax = rotate(axis, angle, origin, self.pos, self.points, self.axis)
        self.set(pos = p, trait_change_notify = False)
        self.points = pi
        self.set(axis = ax, trait_change_notify = False)
        self.polydata.points = self.points
        self.polydata.modified()
        self.normals.update()
        self.render()
Ticket fields with empty strings are NULL when changing ticket.
dataset/ETHPy150Open enthought/mayavi/tvtk/tools/visual.py/Cylinder.rotate--crossover with--dataset/ETHPy150Open edgewall/trac/trac/ticket/tests/model.py/TicketTestCase.test_change_empty_strings_stored_as_null