def METHOD_NAME(
    current_attrs: types.NormalizedAttributes,
    desired_attrs: types.NormalizedAttributes,
) -> types.NormalizedAttributes:
    """Determine which attributes need to be updated.
    This function doesn't check whether both dicts have equal
    keys, meaning keys not given in :paramref:`desired_attrs`
    won't end up in the modification dict.  Removing attributes
    has to be done by explicitly setting them to an empty string.
    :param current_attrs: the attributes of the entity currently in the system.
    :param desired_attrs: the attributes we want the entity to have.
    """
    return {
        attr: desired_value
        for attr, desired_value in desired_attrs.items()
        if attr not in current_attrs  # attribute is new
        or current_attrs[attr] != desired_value  # attribute has changed
    }