<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:

def render_label(self, cairo_context, shape_id, text=None, label_scale=.9):
        '''
        Draw label on specified shape.

        Parameters
        ----------
        cairo_context : cairo.Context
            Cairo context to draw text width.  Can be preconfigured, for
            example, to set font style, etc.
        shape_id : str
            Shape identifier.
        text : str, optional
            Label text.  If not specified, shape identifier is used.
        label_scale : float, optional
            Fraction of limiting dimension of shape bounding box to scale text
            to.
        '''
        text = shape_id if text is None else text
        shape = self.canvas.df_bounding_shapes.ix[shape_id]
        shape_center = self.canvas.df_shape_centers.ix[shape_id]
        font_size, text_shape = \
            aspect_fit_font_size(text, shape * label_scale,
                                 cairo_context=cairo_context)
        cairo_context.set_font_size(font_size)
        cairo_context.move_to(shape_center[0] - .5 * text_shape.width,
                              shape_center[1] + .5 * text_shape.height)
        cairo_context.show_text(text)