"""simple docstring"""





import warnings

from ...utils import is_sklearn_available, requires_backends


if is_sklearn_available():
    from scipy.stats import pearsonr, spearmanr
    from sklearn.metrics import fa_score, matthews_corrcoef


__A  =				(
    '''This metric will be removed from the library soon, metrics should be handled with the 🤗 Evaluate '''
    '''library. You can have a look at this example script for pointers: '''
    '''https://github.com/huggingface/transformers/blob/main/examples/pytorch/text-classification/run_glue.py'''
)


def    lowercase_   (   _lowerCamelCase:	int						,   _lowerCamelCase:	Any      ) ->      str:



       '''simple docstring'''

       warnings.warn(_lowerCamelCase						,   _lowerCamelCase      )
       requires_backends(_lowerCamelCase						,   "sklearn"      )
       return (preds == labels).mean()


def    lowercase_   (   _lowerCamelCase:	int						,   _lowerCamelCase:	Any      ) ->      Optional[Any]:



       '''simple docstring'''

       warnings.warn(_lowerCamelCase						,   _lowerCamelCase      )
       requires_backends(_lowerCamelCase						,   "sklearn"      )
       __lowerCamelCase					:		List[str]		   =     simple_accuracy(_lowerCamelCase						,   _lowerCamelCase      )
       __lowerCamelCase					:		Union[str, Any]		   =     fa_score(y_true=_lowerCamelCase						,   y_pred=_lowerCamelCase      )
       return {
           "acc": acc,
           "f1": fa,
           "acc_and_f1": (acc + fa) / 2,
       }


def    lowercase_   (   _lowerCamelCase:	List[Any]						,   _lowerCamelCase:	Tuple      ) ->      Any:



       '''simple docstring'''

       warnings.warn(_lowerCamelCase						,   _lowerCamelCase      )
       requires_backends(_lowerCamelCase						,   "sklearn"      )
       __lowerCamelCase					:		Optional[int]		   =     pearsonr(_lowerCamelCase						,   _lowerCamelCase      )[0]
       __lowerCamelCase					:		int		   =     spearmanr(_lowerCamelCase						,   _lowerCamelCase      )[0]
       return {
           "pearson": pearson_corr,
           "spearmanr": spearman_corr,
           "corr": (pearson_corr + spearman_corr) / 2,
       }


def    lowercase_   (   _lowerCamelCase:	Any						,   _lowerCamelCase:	List[str]						,   _lowerCamelCase:	Optional[Any]      ) ->      Union[str, Any]:



       '''simple docstring'''

       warnings.warn(_lowerCamelCase						,   _lowerCamelCase      )
       requires_backends(_lowerCamelCase						,   "sklearn"      )
       assert len(_lowerCamelCase      ) == len(_lowerCamelCase      ), F"""Predictions and labels have mismatched lengths {len(_lowerCamelCase      )} and {len(_lowerCamelCase      )}"""
       if task_name == "cola":
              return {"mcc": matthews_corrcoef(_lowerCamelCase						,   _lowerCamelCase      )}
       elif task_name == "sst-2":
              return {"acc": simple_accuracy(_lowerCamelCase						,   _lowerCamelCase      )}
       elif task_name == "mrpc":
              return acc_and_fa(_lowerCamelCase						,   _lowerCamelCase      )
       elif task_name == "sts-b":
              return pearson_and_spearman(_lowerCamelCase						,   _lowerCamelCase      )
       elif task_name == "qqp":
              return acc_and_fa(_lowerCamelCase						,   _lowerCamelCase      )
       elif task_name == "mnli":
              return {"mnli/acc": simple_accuracy(_lowerCamelCase						,   _lowerCamelCase      )}
       elif task_name == "mnli-mm":
              return {"mnli-mm/acc": simple_accuracy(_lowerCamelCase						,   _lowerCamelCase      )}
       elif task_name == "qnli":
              return {"acc": simple_accuracy(_lowerCamelCase						,   _lowerCamelCase      )}
       elif task_name == "rte":
              return {"acc": simple_accuracy(_lowerCamelCase						,   _lowerCamelCase      )}
       elif task_name == "wnli":
              return {"acc": simple_accuracy(_lowerCamelCase						,   _lowerCamelCase      )}
       elif task_name == "hans":
              return {"acc": simple_accuracy(_lowerCamelCase						,   _lowerCamelCase      )}
       else:
              raise KeyError(_lowerCamelCase      )







def    lowercase_   (   _lowerCamelCase:	int						,   _lowerCamelCase:	Dict						,   _lowerCamelCase:	Any      ) ->      Optional[Any]:



       '''simple docstring'''

       warnings.warn(_lowerCamelCase						,   _lowerCamelCase      )
       requires_backends(_lowerCamelCase						,   "sklearn"      )
       if len(_lowerCamelCase      ) != len(_lowerCamelCase      ):
              raise ValueError(F"""Predictions and labels have mismatched lengths {len(_lowerCamelCase      )} and {len(_lowerCamelCase      )}"""      )
       if task_name == "xnli":
              return {"acc": simple_accuracy(_lowerCamelCase						,   _lowerCamelCase      )}
       else:
              raise KeyError(_lowerCamelCase      )
"""simple docstring"""





# tests directory-specific settings - this file is run automatically
# by pytest before any tests are run

import doctest
import sys
import warnings
from os.path import abspath, dirname, join

import _pytest

from transformers.testing_utils import HfDoctestModule, HfDocTestParser


# allow having multiple repository checkouts and not needing to remember to rerun
# 'pip install -e .[dev]' when switching between checkouts and running tests.
__A  =				abspath(join(dirname(__file__), '''src'''))
sys.path.insert(1, git_repo_path)

# silence FutureWarning warnings in tests since often we can't act on them until
# they become normal warnings - i.e. the tests still need to test the current functionality
warnings.simplefilter(action='''ignore''', category=FutureWarning)


def    lowercase_   (   _lowerCamelCase:	List[Any]      ) ->      Union[str, Any]:



							'''simple docstring'''

							config.addinivalue_line(
							    "markers"						,   "is_pt_tf_cross_test: mark test to run only when PT and TF interactions are tested"      )
							config.addinivalue_line(
							    "markers"						,   "is_pt_flax_cross_test: mark test to run only when PT and FLAX interactions are tested"      )
							config.addinivalue_line("markers"						,   "is_pipeline_test: mark test to run only when pipelines are tested"      )
							config.addinivalue_line("markers"						,   "is_staging_test: mark test to run only in the staging environment"      )
							config.addinivalue_line("markers"						,   "accelerate_tests: mark test that require accelerate"      )
							config.addinivalue_line("markers"						,   "tool_tests: mark the tool tests that are run on their specific schedule"      )


def    lowercase_   (   _lowerCamelCase:	Union[str, Any]      ) ->      Any:



							'''simple docstring'''

							from transformers.testing_utils import pytest_addoption_shared

							pytest_addoption_shared(_lowerCamelCase      )


def    lowercase_   (   _lowerCamelCase:	Optional[int]      ) ->      Tuple:



							'''simple docstring'''

							from transformers.testing_utils import pytest_terminal_summary_main

							__lowerCamelCase					:		Any		   =     terminalreporter.config.getoption("--make-reports"      )
							if make_reports:
														pytest_terminal_summary_main(_lowerCamelCase						,   id=_lowerCamelCase      )


def    lowercase_   (   _lowerCamelCase:	Union[str, Any]						,   _lowerCamelCase:	Tuple      ) ->      Dict:



							'''simple docstring'''

							if exitstatus == 5:
														__lowerCamelCase					:		Optional[int]		   =     0


# Doctest custom flag to ignore output.
__A  =				doctest.register_optionflag('''IGNORE_RESULT''')

__A  =				doctest.OutputChecker
class  _snake_case     (					a__		):






						def       lowerCamelCase__     (       self      :			List[str]							,					UpperCAmelCase      :			int							,					UpperCAmelCase      :			Any							,					UpperCAmelCase      :			int    ):
													if IGNORE_RESULT & optionflags:
																				return True
													return OutputChecker.check_output(self							,					UpperCAmelCase							,					UpperCAmelCase							,					UpperCAmelCase    )

__A  =				CustomOutputChecker
__A  =				HfDoctestModule







__A  =				HfDocTestParser