






import re
import string

import numpy as np

import datasets


__a      :       Union[str, Any]				  =   '''
Returns the rate at which the input predicted strings exactly match their references, ignoring any strings input as part of the regexes_to_ignore list.
'''

__a      :       Optional[Any]				  =   '''
Args:
    predictions: List of predicted texts.
    references: List of reference texts.
    regexes_to_ignore: List, defaults to None. Regex expressions of characters to
        ignore when calculating the exact matches. Note: these regexes are removed
        from the input data before the changes based on the options below (e.g. ignore_case,
        ignore_punctuation, ignore_numbers) are applied.
    ignore_case: Boolean, defaults to False. If true, turns everything
        to lowercase so that capitalization differences are ignored.
    ignore_punctuation: Boolean, defaults to False. If true, removes all punctuation before
        comparing predictions and references.
    ignore_numbers: Boolean, defaults to False. If true, removes all punctuation before
        comparing predictions and references.
Returns:
    exact_match: Dictionary containing exact_match rate. Possible values are between 0.0 and 100.0, inclusive.
Examples:
    >>> exact_match = datasets.load_metric("exact_match")
    >>> refs = ["the cat", "theater", "YELLING", "agent007"]
    >>> preds = ["cat?", "theater", "yelling", "agent"]
    >>> results = exact_match.compute(references=refs, predictions=preds)
    >>> print(round(results["exact_match"], 1))
    25.0

    >>> exact_match = datasets.load_metric("exact_match")
    >>> refs = ["the cat", "theater", "YELLING", "agent007"]
    >>> preds = ["cat?", "theater", "yelling", "agent"]
    >>> results = exact_match.compute(references=refs, predictions=preds, regexes_to_ignore=["the ", "yell"], ignore_case=True, ignore_punctuation=True)
    >>> print(round(results["exact_match"], 1))
    50.0


    >>> exact_match = datasets.load_metric("exact_match")
    >>> refs = ["the cat", "theater", "YELLING", "agent007"]
    >>> preds = ["cat?", "theater", "yelling", "agent"]
    >>> results = exact_match.compute(references=refs, predictions=preds, regexes_to_ignore=["the ", "yell", "YELL"], ignore_case=True, ignore_punctuation=True)
    >>> print(round(results["exact_match"], 1))
    75.0

    >>> exact_match = datasets.load_metric("exact_match")
    >>> refs = ["the cat", "theater", "YELLING", "agent007"]
    >>> preds = ["cat?", "theater", "yelling", "agent"]
    >>> results = exact_match.compute(references=refs, predictions=preds, regexes_to_ignore=["the ", "yell", "YELL"], ignore_case=True, ignore_punctuation=True, ignore_numbers=True)
    >>> print(round(results["exact_match"], 1))
    100.0

    >>> exact_match = datasets.load_metric("exact_match")
    >>> refs = ["The cat sat on the mat.", "Theaters are great.", "It\'s like comparing oranges and apples."]
    >>> preds = ["The cat sat on the mat?", "Theaters are great.", "It\'s like comparing apples and oranges."]
    >>> results = exact_match.compute(references=refs, predictions=preds)
    >>> print(round(results["exact_match"], 1))
    33.3

'''

__a      :       List[Any]				  =   '''
'''


@datasets.utils.file_utils.add_start_docstrings(_DESCRIPTION			,      _KWARGS_DESCRIPTION  )
class       __lowercase      (	datasets.Metric  ):







					'''simple docstring'''




					def 		lowerCAmelCase_     (				self       :			List[Any]				):


									"""simple docstring"""



									return datasets.MetricInfo(
									    description=_DESCRIPTION ,	citation=_CITATION ,	inputs_description=_KWARGS_DESCRIPTION ,	features=datasets.Features(
									        {
									            """predictions""": datasets.Value("""string""" ,	id="""sequence"""				),
									            """references""": datasets.Value("""string""" ,	id="""sequence"""				),
									        }				) ,	reference_urls=[] ,	)





					def 		lowerCAmelCase_     (				self       :			Any ,	UpperCamelCase_       :			str ,	UpperCamelCase_       :			int ,	UpperCamelCase_       :			Union[str, Any]=None ,	UpperCamelCase_       :			str=False ,	UpperCamelCase_       :			Dict=False ,	UpperCamelCase_       :			Tuple=False ,	):


									"""simple docstring"""



									if regexes_to_ignore is not None:
													for s in regexes_to_ignore:
																	__A         =	np.array([re.sub(__lowerCAmelCase ,	"""""" ,	__lowerCAmelCase				) for x in predictions]				)
																	__A         =	np.array([re.sub(__lowerCAmelCase ,	"""""" ,	__lowerCAmelCase				) for x in references]				)
									else:
													__A         =	np.asarray(__lowerCAmelCase				)
													__A         =	np.asarray(__lowerCAmelCase				)

									if ignore_case:
													__A         =	np.char.lower(__lowerCAmelCase				)
													__A         =	np.char.lower(__lowerCAmelCase				)

									if ignore_punctuation:
													__A         =	string.punctuation.maketrans("""""" ,	"""""" ,	string.punctuation				)
													__A         =	np.char.translate(__lowerCAmelCase ,	table=__lowerCAmelCase				)
													__A         =	np.char.translate(__lowerCAmelCase ,	table=__lowerCAmelCase				)

									if ignore_numbers:
													__A         =	string.digits.maketrans("""""" ,	"""""" ,	string.digits				)
													__A         =	np.char.translate(__lowerCAmelCase ,	table=__lowerCAmelCase				)
													__A         =	np.char.translate(__lowerCAmelCase ,	table=__lowerCAmelCase				)

									__A         =	predictions == references

									return {"exact_match": np.mean(__lowerCAmelCase				) * 100}












from ...utils import (
    OptionalDependencyNotAvailable,
    is_torch_available,
    is_transformers_available,
    is_transformers_version,
)


try:
  if not (is_transformers_available() and is_torch_available()):
    raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
  from ...utils.dummy_torch_and_transformers_objects import (
      ImageTextPipelineOutput,
      UniDiffuserPipeline,
  )
else:
  from .modeling_text_decoder import UniDiffuserTextDecoder
  from .modeling_uvit import UniDiffuserModel, UTransformeraDModel
  from .pipeline_unidiffuser import ImageTextPipelineOutput, UniDiffuserPipeline




