def METHOD_NAME(self, config, base, xsize, ysize, ignore, logger):
    """Do the initialization and setup for the Ring type.
    Most of the work is done by SetupBasic, but we do need to check that the required parameters
    are present, and also that no additional parameters are present.
    Parameters:
        config:     The configuration dict for the stamp field.
        base:       The base configuration dict.
        xsize:      The xsize of the image to build (if known).
        ysize:      The ysize of the image to build (if known).
        ignore:     A list of parameters that are allowed to be in config that we can
                    ignore here. i.e. it won't be an error if these parameters are present.
        logger:     If given, a logger object to log progress.
    Returns:
        xsize, ysize, image_pos, world_pos
    """
    req = { 'num' : int }
    opt = { 'full_rotation' : Angle , 'index' : int }
    # Ignore the transformation specifications that are allowed in stamp for Ring types.
    ignore = ignore + [
        'dilate', 'dilation', 'ellip', 'rotate', 'rotation', 'scale_flux',
        'magnify', 'magnification', 'shear', 'shift' ]
    params = GetAllParams(config, base, req=req, opt=opt, ignore=ignore)[0]
    num = params['num']
    if num <= 0:
        raise GalSimConfigValueError("Attribute num for gal.type == Ring must be > 0", num)
    # Setup the indexing sequence if it hasn't been specified using the number of items.
    SetDefaultIndex(config, num)
    # Set the default full_rotation to pi radians
    if 'full_rotation' not in params:
        import math
        config['full_rotation'] = math.pi * radians
    # Now go on and do the base class setup.
    ignore = ignore + list(req) + list(opt)
    return super(RingBuilder, self).METHOD_NAME(config, base, xsize, ysize, ignore, logger)