
import re
import string

import numpy as np

import datasets


lowerCamelCase_						: Optional[int]         =  """
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.
"""

lowerCamelCase_						: 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

"""

lowerCamelCase_						: int         =  """
"""

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






			'''simple docstring'''

			def       lowerCAmelCase__	(       self :       int      ):
							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 :       List[str]						,	snake_case_ :       List[str]						,	snake_case_ :       List[Any]						,	snake_case_ :       Union[str, Any]=None						,	snake_case_ :       int=False						,	snake_case_ :       Dict=False						,	snake_case_ :       List[str]=False						,	):
							if regexes_to_ignore is not None:
											for s in regexes_to_ignore:
															UpperCamelCase_:							int	=						np.array([re.sub(snake_case_						,	""""""						,	snake_case_      ) for x in predictions]      )
															UpperCamelCase_:							Tuple	=						np.array([re.sub(snake_case_						,	""""""						,	snake_case_      ) for x in references]      )
							else:
											UpperCamelCase_:							int	=						np.asarray(snake_case_      )
											UpperCamelCase_:							Optional[Any]	=						np.asarray(snake_case_      )

							if ignore_case:
											UpperCamelCase_:							List[str]	=						np.char.lower(snake_case_      )
											UpperCamelCase_:							Optional[Any]	=						np.char.lower(snake_case_      )

							if ignore_punctuation:
											UpperCamelCase_:							Tuple	=						string.punctuation.maketrans(""""""						,	""""""						,	string.punctuation      )
											UpperCamelCase_:							List[str]	=						np.char.translate(snake_case_						,	table=snake_case_      )
											UpperCamelCase_:							List[str]	=						np.char.translate(snake_case_						,	table=snake_case_      )

							if ignore_numbers:
											UpperCamelCase_:							str	=						string.digits.maketrans(""""""						,	""""""						,	string.digits      )
											UpperCamelCase_:							List[str]	=						np.char.translate(snake_case_						,	table=snake_case_      )
											UpperCamelCase_:							int	=						np.char.translate(snake_case_						,	table=snake_case_      )

							UpperCamelCase_:							Dict	=						predictions == references

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








import os
import unittest

from huggingface_hub.utils import are_progress_bars_disabled

import transformers.models.bart.tokenization_bart
from transformers import logging
from transformers.testing_utils import CaptureLogger, mockenv, mockenv_context
from transformers.utils.logging import disable_progress_bar, enable_progress_bar

class        _UpperCamelCase				(					unittest.TestCase  ):






			'''simple docstring'''

			def       lowerCAmelCase__	(       self :       str      ):
							UpperCamelCase_:							Optional[int]	=						logging.get_logger()

							# the current default level is logging.WARNING
							UpperCamelCase_:							Dict	=						logging.get_verbosity()

							logging.set_verbosity_error()
							self.assertEqual(logger.getEffectiveLevel()						,	logging.get_verbosity()      )

							logging.set_verbosity_warning()
							self.assertEqual(logger.getEffectiveLevel()						,	logging.get_verbosity()      )

							logging.set_verbosity_info()
							self.assertEqual(logger.getEffectiveLevel()						,	logging.get_verbosity()      )

							logging.set_verbosity_debug()
							self.assertEqual(logger.getEffectiveLevel()						,	logging.get_verbosity()      )

							# restore to the original level
							logging.set_verbosity(snake_case_      )

			def       lowerCAmelCase__	(       self :       Optional[int]      ):
							UpperCamelCase_:							Union[str, Any]	=						logging.get_verbosity()

							UpperCamelCase_:							int	=						logging.get_logger("""transformers.models.bart.tokenization_bart"""      )
							UpperCamelCase_:							Union[str, Any]	=						"""Testing 1, 2, 3"""

							# should be able to log warnings (if default settings weren't overridden by `pytest --log-level-all`)
							if level_origin <= logging.WARNING:
											with CaptureLogger(snake_case_      ) as cl:
															logger.warning(snake_case_      )
											self.assertEqual(cl.out						,	msg + """\n"""      )

							# this is setting the level for all of `transformers.*` loggers
							logging.set_verbosity_error()

							# should not be able to log warnings
							with CaptureLogger(snake_case_      ) as cl:
											logger.warning(snake_case_      )
							self.assertEqual(cl.out						,	""""""      )

							# should be able to log warnings again
							logging.set_verbosity_warning()
							with CaptureLogger(snake_case_      ) as cl:
											logger.warning(snake_case_      )
							self.assertEqual(cl.out						,	msg + """\n"""      )

							# restore to the original level
							logging.set_verbosity(snake_case_      )

			@mockenv(TRANSFORMERS_VERBOSITY="""error"""      )
			def       lowerCAmelCase__	(       self :       Optional[int]      ):
							# reset for the env var to take effect, next time some logger call is made
							transformers.utils.logging._reset_library_root_logger()
							# this action activates the env var
							UpperCamelCase_:							List[str]	=						logging.get_logger("""transformers.models.bart.tokenization_bart"""      )

							UpperCamelCase_:							str	=						os.getenv("""TRANSFORMERS_VERBOSITY"""						,	snake_case_      )
							UpperCamelCase_:							Any	=						logging.log_levels[env_level_str]

							UpperCamelCase_:							Dict	=						logging.get_verbosity()
							self.assertEqual(
							    snake_case_						,	snake_case_						,	f'''TRANSFORMERS_VERBOSITY={env_level_str}/{env_level}, but internal verbosity is {current_level}'''						,	)

							# restore to the original level
							UpperCamelCase_:							str	=						""""""
							transformers.utils.logging._reset_library_root_logger()

			@mockenv(TRANSFORMERS_VERBOSITY="""super-error"""      )
			def       lowerCAmelCase__	(       self :       List[Any]      ):
							# reset for the env var to take effect, next time some logger call is made
							transformers.utils.logging._reset_library_root_logger()
							UpperCamelCase_:							str	=						logging.logging.getLogger()
							with CaptureLogger(snake_case_      ) as cl:
											# this action activates the env var
											logging.get_logger("""transformers.models.bart.tokenization_bart"""      )
							self.assertIn("""Unknown option TRANSFORMERS_VERBOSITY=super-error"""						,	cl.out      )

							# no need to restore as nothing was changed




			def       lowerCAmelCase__	(       self :       List[Any]      ):
							# testing `logger.warning_advice()`
							transformers.utils.logging._reset_library_root_logger()

							UpperCamelCase_:							List[str]	=						logging.get_logger("""transformers.models.bart.tokenization_bart"""      )
							UpperCamelCase_:							Any	=						"""Testing 1, 2, 3"""

							with mockenv_context(TRANSFORMERS_NO_ADVISORY_WARNINGS="""1"""      ):
											# nothing should be logged as env var disables this method
											with CaptureLogger(snake_case_      ) as cl:
															logger.warning_advice(snake_case_      )
											self.assertEqual(cl.out						,	""""""      )

							with mockenv_context(TRANSFORMERS_NO_ADVISORY_WARNINGS=""""""      ):
											# should log normally as TRANSFORMERS_NO_ADVISORY_WARNINGS is unset
											with CaptureLogger(snake_case_      ) as cl:
															logger.warning_advice(snake_case_      )
											self.assertEqual(cl.out						,	msg + """\n"""      )







def        A__					(						)  ->	Union[str, Any]:
				disable_progress_bar()
				assert are_progress_bars_disabled()

				enable_progress_bar()
				assert not are_progress_bars_disabled()






