def METHOD_NAME(bundle_subclass, args, initial_metadata):
    '''
    Return metadata for bundles by filling in the missing metadata with default values.
    args: Namespace object created from attributes parsed out of the command line. See
        `argparse` for more information
    '''
    # Fill in default values for all unsupplied metadata keys.
    new_initial_metadata = {}
    for spec in bundle_subclass.get_user_defined_metadata():
        new_initial_metadata[spec.key] = initial_metadata.get(spec.key)
        if new_initial_metadata[spec.key] is None:
            default = MetadataDefaults.get_default(spec, bundle_subclass, args)
            new_initial_metadata[spec.key] = default
        final_value = new_initial_metadata[spec.key]
        is_unicode_string = isinstance(final_value, str) and unicode_util.contains_unicode(
            final_value
        )
        is_unicode_list = isinstance(final_value, list) and any(
            unicode_util.contains_unicode(v) for v in final_value
        )
        if is_unicode_string or is_unicode_list:
            raise UsageError('Metadata cannot contain unicode: %s = %s' % (spec.key, final_value))
    return new_initial_metadata