<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def vertex_colors(self, values):
 """ Set the colors for each vertex of a mesh This will apply these colors and delete any previously specified color information. Parameters colors: (len(mesh.vertices), 3), set each face to the color (len(mesh.vertices), 4), set each face to the color (3,) int, set the whole mesh this color (4,) int, set the whole mesh this color """

        if values is None:
            if 'vertex_colors' in self._data:
                self._data.data.pop('vertex_colors')
            return

        # make sure passed values are numpy array
        values = np.asanyarray(values)
        # Ensure the color shape is sane
        if (self.mesh is not None and not
                (values.shape == (len(self.mesh.vertices), 3) or
                 values.shape == (len(self.mesh.vertices), 4) or
                 values.shape == (3,) or
                 values.shape == (4,))):
            return

        colors = to_rgba(values)
        if (self.mesh is not None and
                colors.shape == (4,)):
            count = len(self.mesh.vertices)
            colors = np.tile(colors, (count, 1))

        # if we set any color information, clear the others
        self._data.clear()
        self._data['vertex_colors'] = colors
        self._cache.verify()