Exclude items by matching metadata.

	Note:
		Metadata values are lowercased when ``normalized_values`` is ``True``,
		so ``ignore_case`` is automatically set to ``True``.

	Parameters:
		items (list): A list of item dicts or filepaths.
		any_all (callable): A callable to determine if any or all filters must match to exclude items.
			Expected values :obj:`any` (default) or :obj:`all`.
		ignore_case (bool): Perform case-insensitive matching.
			Default: ``False``
		normalize_values (bool): Normalize metadata values to remove common differences between sources.
			Default: ``False``
		kwargs (list): Lists of values to match the given metadata field.

	Yields:
		dict: The next item to be included.

	Example:
		>>> from google_music_utils import exclude_items
		>>> list(exclude_items(song_list, any_all=all, ignore_case=True, normalize_values=True, artist=['Beck'], album=['Golden Feelings']))

def exclude_items(items, any_all=any, ignore_case=False, normalize_values=False, **kwargs):
	"""Exclude items by matching metadata.

	Note:
		Metadata values are lowercased when ``normalized_values`` is ``True``,
		so ``ignore_case`` is automatically set to ``True``.

	Parameters:
		items (list): A list of item dicts or filepaths.
		any_all (callable): A callable to determine if any or all filters must match to exclude items.
			Expected values :obj:`any` (default) or :obj:`all`.
		ignore_case (bool): Perform case-insensitive matching.
			Default: ``False``
		normalize_values (bool): Normalize metadata values to remove common differences between sources.
			Default: ``False``
		kwargs (list): Lists of values to match the given metadata field.

	Yields:
		dict: The next item to be included.

	Example:
		>>> from google_music_utils import exclude_items
		>>> list(exclude_items(song_list, any_all=all, ignore_case=True, normalize_values=True, artist=['Beck'], album=['Golden Feelings']))
	"""

	if kwargs:
		match = functools.partial(
			_match_item, any_all=any_all, ignore_case=ignore_case, normalize_values=normalize_values, **kwargs
		)

		return filterfalse(match, items)
	else:
		return iter(items)