

'''simple docstring'''
import copy
import json
import os
import tempfile

from transformers import is_torch_available

from .test_configuration_utils import config_common_kwargs


class        a__  (							lowerCamelCase_  ):


   def __init__(			self      ,    _UpperCamelCase      ,    _UpperCamelCase=None      ,    _UpperCamelCase=True      ,    _UpperCamelCase=None      ,    **_UpperCamelCase  ):





      """simple docstring"""





      _lowercase      :				Dict      					=       parent
      _lowercase      :				int      					=       config_class
      _lowercase      :				Optional[int]      					=       has_text_modality
      _lowercase      :				str      					=       kwargs
      _lowercase      :				List[Any]      					=       common_properties


   def 						_lowerCamelCase       (			self  ):





      """simple docstring"""





      _lowercase      :				int      					=       self.config_class(**self.inputs_dict  )
      _lowercase      :				Optional[Any]      					=       (
          ["hidden_size", "num_attention_heads", "num_hidden_layers"]
          if self.common_properties is None
          else self.common_properties
      )

      # Add common fields for text models
      if self.has_text_modality:
         common_properties.extend(["vocab_size"]  )

      # Test that config has the common properties as getters
      for prop in common_properties:
         self.parent.assertTrue(hasattr(_UpperCamelCase      ,    _UpperCamelCase  )      ,    msg=f'''`{prop}` does not exist'''  )

      # Test that config has the common properties as setter
      for idx, name in enumerate(_UpperCamelCase  ):
         try:
            setattr(_UpperCamelCase      ,    _UpperCamelCase      ,    _UpperCamelCase  )
            self.parent.assertEqual(
                getattr(_UpperCamelCase      ,    _UpperCamelCase  )      ,    _UpperCamelCase      ,    msg=f'''`{name} value {idx} expected, but was {getattr(_UpperCamelCase      ,    _UpperCamelCase  )}'''  )
         except NotImplementedError:
            # Some models might not be able to implement setters for common_properties
            # In that case, a NotImplementedError is raised
            pass

        # Test if config class can be called with Config(prop_name=..)
      for idx, name in enumerate(_UpperCamelCase  ):
         try:
            _lowercase      :				List[Any]      					=       self.config_class(**{name: idx}  )
            self.parent.assertEqual(
                getattr(_UpperCamelCase      ,    _UpperCamelCase  )      ,    _UpperCamelCase      ,    msg=f'''`{name} value {idx} expected, but was {getattr(_UpperCamelCase      ,    _UpperCamelCase  )}'''  )
         except NotImplementedError:
            # Some models might not be able to implement setters for common_properties
            # In that case, a NotImplementedError is raised
            pass


   def 						_lowerCamelCase       (			self  ):





      """simple docstring"""





      _lowercase      :				Tuple      					=       self.config_class(**self.inputs_dict  )
      _lowercase      :				Tuple      					=       json.loads(config.to_json_string()  )
      for key, value in self.inputs_dict.items():
         self.parent.assertEqual(obj[key]      ,    _UpperCamelCase  )


   def 						_lowerCamelCase       (			self  ):





      """simple docstring"""





      _lowercase      :				int      					=       self.config_class(**self.inputs_dict  )

      with tempfile.TemporaryDirectory() as tmpdirname:
         _lowercase      :				Optional[Any]      					=       os.path.join(_UpperCamelCase      ,    "config.json"  )
         config_first.to_json_file(_UpperCamelCase  )
         _lowercase      :				List[Any]      					=       self.config_class.from_json_file(_UpperCamelCase  )

      self.parent.assertEqual(config_second.to_dict()      ,    config_first.to_dict()  )


   def 						_lowerCamelCase       (			self  ):





      """simple docstring"""





      _lowercase      :				int      					=       self.config_class(**self.inputs_dict  )

      with tempfile.TemporaryDirectory() as tmpdirname:
         config_first.save_pretrained(_UpperCamelCase  )
         _lowercase      :				Optional[int]      					=       self.config_class.from_pretrained(_UpperCamelCase  )

      self.parent.assertEqual(config_second.to_dict()      ,    config_first.to_dict()  )


   def 						_lowerCamelCase       (			self  ):





      """simple docstring"""





      _lowercase      :				List[str]      					=       self.config_class(**self.inputs_dict  )

      _lowercase      :				Dict      					=       "test"
      with tempfile.TemporaryDirectory() as tmpdirname:
         _lowercase      :				str      					=       os.path.join(_UpperCamelCase      ,    _UpperCamelCase  )
         config_first.save_pretrained(_UpperCamelCase  )
         _lowercase      :				Dict      					=       self.config_class.from_pretrained(_UpperCamelCase      ,    subfolder=_UpperCamelCase  )

      self.parent.assertEqual(config_second.to_dict()      ,    config_first.to_dict()  )


   def 						_lowerCamelCase       (			self  ):





      """simple docstring"""





      _lowercase      :				Any      					=       self.config_class(**self.inputs_dict      ,    num_labels=5  )
      self.parent.assertEqual(len(config.idalabel  )      ,    5  )
      self.parent.assertEqual(len(config.labelaid  )      ,    5  )

      _lowercase      :				Tuple      					=       3
      self.parent.assertEqual(len(config.idalabel  )      ,    3  )
      self.parent.assertEqual(len(config.labelaid  )      ,    3  )


   def 						_lowerCamelCase       (			self  ):





      """simple docstring"""





      if self.config_class.is_composition:
         return
      _lowercase      :				Tuple      					=       self.config_class()
      self.parent.assertIsNotNone(_UpperCamelCase  )


   def 						_lowerCamelCase       (			self  ):





      """simple docstring"""





      _lowercase      :				Dict      					=       copy.deepcopy(_UpperCamelCase  )
      _lowercase      :				int      					=       self.config_class(**_UpperCamelCase  )
      _lowercase      :				Optional[Any]      					=       []
      for key, value in config_common_kwargs.items():
         if key == "torch_dtype":
            if not is_torch_available():
               continue
            else:
               import torch

               if config.torch_dtype != torch.floataa:
                  wrong_values.append(("torch_dtype", config.torch_dtype, torch.floataa)  )
         elif getattr(_UpperCamelCase      ,    _UpperCamelCase  ) != value:
            wrong_values.append((key, getattr(_UpperCamelCase      ,    _UpperCamelCase  ), value)  )

      if len(_UpperCamelCase  ) > 0:
         _lowercase      :				Optional[Any]      					=       "\n".join([f'''- {v[0]}: got {v[1]} instead of {v[2]}''' for v in wrong_values]  )
         raise ValueError(f'''The following keys were not properly set in the config:\n{errors}'''  )






   def 						_lowerCamelCase       (			self  ):





      """simple docstring"""





      self.create_and_test_config_common_properties()
      self.create_and_test_config_to_json_string()
      self.create_and_test_config_to_json_file()
      self.create_and_test_config_from_and_save_pretrained()
      self.create_and_test_config_from_and_save_pretrained_subfolder()
      self.create_and_test_config_with_num_labels()
      self.check_config_can_be_init_without_params()
      self.check_config_arguments_init()









'''simple docstring'''
from sklearn.metrics import mean_squared_error

import datasets


_snake_case         =  '\\n@article{scikit-learn,\n title={Scikit-learn: Machine Learning in {P}ython},\n author={Pedregosa, F. and Varoquaux, G. and Gramfort, A. and Michel, V.\n         and Thirion, B. and Grisel, O. and Blondel, M. and Prettenhofer, P.\n         and Weiss, R. and Dubourg, V. and Vanderplas, J. and Passos, A. and\n         Cournapeau, D. and Brucher, M. and Perrot, M. and Duchesnay, E.},\n journal={Journal of Machine Learning Research},\n volume={12},\n pages={2825--2830},\n year={2011}\n}\n'

_snake_case         =  '\\nMean Squared Error(MSE) is the average of the square of difference between the predicted\nand actual values.\n'


_snake_case         =  '\nArgs:\n    predictions: array-like of shape (n_samples,) or (n_samples, n_outputs)\n        Estimated target values.\n    references: array-like of shape (n_samples,) or (n_samples, n_outputs)\n        Ground truth (correct) target values.\n    sample_weight: array-like of shape (n_samples,), default=None\n        Sample weights.\n    multioutput: {"raw_values", "uniform_average"} or array-like of shape (n_outputs,), default="uniform_average"\n        Defines aggregating of multiple output values. Array-like value defines weights used to average errors.\n\n        "raw_values" : Returns a full set of errors in case of multioutput input.\n\n        "uniform_average" : Errors of all outputs are averaged with uniform weight.\n\n    squared : bool, default=True\n        If True returns MSE value, if False returns RMSE (Root Mean Squared Error) value.\n\nReturns:\n    mse : mean squared error.\nExamples:\n\n    >>> mse_metric = datasets.load_metric("mse")\n    >>> predictions = [2.5, 0.0, 2, 8]\n    >>> references = [3, -0.5, 2, 7]\n    >>> results = mse_metric.compute(predictions=predictions, references=references)\n    >>> print(results)\n    {\'mse\': 0.375}\n    >>> rmse_result = mse_metric.compute(predictions=predictions, references=references, squared=False)\n    >>> print(rmse_result)\n    {\'mse\': 0.6123724356957945}\n\n    If you\'re using multi-dimensional lists, then set the config as follows :\n\n    >>> mse_metric = datasets.load_metric("mse", "multilist")\n    >>> predictions = [[0.5, 1], [-1, 1], [7, -6]]\n    >>> references = [[0, 2], [-1, 2], [8, -5]]\n    >>> results = mse_metric.compute(predictions=predictions, references=references)\n    >>> print(results)\n    {\'mse\': 0.7083333333333334}\n    >>> results = mse_metric.compute(predictions=predictions, references=references, multioutput=\'raw_values\')\n    >>> print(results) # doctest: +NORMALIZE_WHITESPACE\n    {\'mse\': array([0.41666667, 1. ])}\n'


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


   def 						_lowerCamelCase       (			self  ):





      """simple docstring"""





      return datasets.MetricInfo(
          description=_DESCRIPTION      ,    citation=_CITATION      ,    inputs_description=_KWARGS_DESCRIPTION      ,    features=datasets.Features(self._get_feature_types()  )      ,    reference_urls=[
              "https://scikit-learn.org/stable/modules/generated/sklearn.metrics.mean_squared_error.html"
          ]      ,    )


   def 						_lowerCamelCase       (			self  ):





      """simple docstring"""





      if self.config_name == "multilist":
         return {
             "predictions": datasets.Sequence(datasets.Value("float"  )  ),
             "references": datasets.Sequence(datasets.Value("float"  )  ),
         }
      else:
         return {
             "predictions": datasets.Value("float"  ),
             "references": datasets.Value("float"  ),
         }






   def 						_lowerCamelCase       (			self      ,    _UpperCamelCase      ,    _UpperCamelCase      ,    _UpperCamelCase=None      ,    _UpperCamelCase="uniform_average"      ,    _UpperCamelCase=True  ):





      """simple docstring"""





      _lowercase      :				str      					=       mean_squared_error(
          _UpperCamelCase      ,    _UpperCamelCase      ,    sample_weight=_UpperCamelCase      ,    multioutput=_UpperCamelCase      ,    squared=_UpperCamelCase  )

      return {"mse": mse}






