def METHOD_NAME(description, keywords, creators, metadata, unset, metadata_source):
    """Edit project metadata."""
    from renku.command.project import edit_project_command
    if list(creators) == [NO_VALUE]:
        creators = NO_VALUE
    if list(keywords) == [NO_VALUE]:
        keywords = NO_VALUE
    if "k" in unset or "keywords" in unset:
        if keywords is not NO_VALUE:
            raise click.UsageError("Cant use '--keyword' together with unsetting keywords")
        keywords = None
    if "m" in unset or "metadata" in unset:
        if metadata is not NO_VALUE:
            raise click.UsageError("Cant use '--metadata' together with unsetting metadata")
        metadata = None
    if metadata_source is not NO_VALUE and metadata is NO_VALUE:
        raise click.UsageError("The '--metadata-source' option can only be used with the '--metadata' flag")
    if metadata_source is NO_VALUE and metadata is not NO_VALUE:
        metadata_source = "renku"
    custom_metadata = metadata
    if metadata and metadata is not NO_VALUE:
        path = Path(metadata)
        if not path.exists():
            raise click.UsageError(f"Path {path} does not exist.")
        custom_metadata = json.loads(Path(metadata).read_text())
    result = (
        edit_project_command()
        .build()
        .execute(
            description=description,
            creator=creators,
            keywords=keywords,
            custom_metadata=custom_metadata,
            custom_metadata_source=metadata_source,
        )
    )
    updated, no_email_warning = result.output
    if not updated:
        click.echo("Nothing to update. Check available fields with `renku project edit --help`\n")
    else:
        click.echo("Successfully updated: {}.".format(", ".join(updated.keys())))
        if no_email_warning:
            click.echo(ClickCallback.WARNING + f"No email or wrong format for: {no_email_warning}")