





from scipy.stats import spearmanr

import datasets


__A     =    "\nThe Spearman rank-order correlation coefficient is a measure of the\nrelationship between two datasets. Like other correlation coefficients,\nthis one varies between -1 and +1 with 0 implying no correlation.\nPositive correlations imply that as data in dataset x increases, so\ndoes data in dataset y. Negative correlations imply that as x increases,\ny decreases. Correlations of -1 or +1 imply an exact monotonic relationship.\n\nUnlike the Pearson correlation, the Spearman correlation does not\nassume that both datasets are normally distributed.\n\nThe p-value roughly indicates the probability of an uncorrelated system\nproducing datasets that have a Spearman correlation at least as extreme\nas the one computed from these datasets. The p-values are not entirely\nreliable but are probably reasonable for datasets larger than 500 or so.\n"

__A     =    "\nArgs:\n    predictions (`List[float]`): Predicted labels, as returned by a model.\n    references (`List[float]`): Ground truth labels.\n    return_pvalue (`bool`): If `True`, returns the p-value. If `False`, returns\n            only the spearmanr score. Defaults to `False`.\nReturns:\n    spearmanr (`float`): Spearman correlation coefficient.\n    p-value (`float`): p-value. **Note**: is only returned if `return_pvalue=True` is input.\nExamples:\n    Example 1:\n        >>> spearmanr_metric = datasets.load_metric(\"spearmanr\")\n        >>> results = spearmanr_metric.compute(references=[1, 2, 3, 4, 5], predictions=[10, 9, 2.5, 6, 4])\n        >>> print(results)\n        {'spearmanr': -0.7}\n\n    Example 2:\n        >>> spearmanr_metric = datasets.load_metric(\"spearmanr\")\n        >>> results = spearmanr_metric.compute(references=[1, 2, 3, 4, 5],\n        ...                                     predictions=[10, 9, 2.5, 6, 4],\n        ...                                     return_pvalue=True)\n        >>> print(results['spearmanr'])\n        -0.7\n        >>> print(round(results['spearmanr_pvalue'], 2))\n        0.19\n"

__A     =    R"\\n@book{kokoska2000crc,\n  title={CRC standard probability and statistics tables and formulae},\n  author={Kokoska, Stephen and Zwillinger, Daniel},\n  year={2000},\n  publisher={Crc Press}\n}\n@article{2020SciPy-NMeth,\n  author  = {Virtanen, Pauli and Gommers, Ralf and Oliphant, Travis E. and\n            Haberland, Matt and Reddy, Tyler and Cournapeau, David and\n            Burovski, Evgeni and Peterson, Pearu and Weckesser, Warren and\n            Bright, Jonathan and {van der Walt}, St{\'e}fan J. and\n            Brett, Matthew and Wilson, Joshua and Millman, K. Jarrod and\n            Mayorov, Nikolay and Nelson, Andrew R. J. and Jones, Eric and\n            Kern, Robert and Larson, Eric and Carey, C J and\n            Polat, {\.I}lhan and Feng, Yu and Moore, Eric W. and\n            {VanderPlas}, Jake and Laxalde, Denis and Perktold, Josef and\n            Cimrman, Robert and Henriksen, Ian and Quintero, E. A. and\n            Harris, Charles R. and Archibald, Anne M. and\n            Ribeiro, Ant{\^o}nio H. and Pedregosa, Fabian and\n            {van Mulbregt}, Paul and {SciPy 1.0 Contributors}},\n  title   = {{{SciPy} 1.0: Fundamental Algorithms for Scientific\n            Computing in Python}},\n  journal = {Nature Methods},\n  year    = {2020},\n  volume  = {17},\n  pages   = {261--272},\n  adsurl  = {https://rdcu.be/b08Wh},\n  doi     = {10.1038/s41592-019-0686-2},\n}\n"



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







 '''simple docstring'''

 def 							SCREAMING_SNAKE_CASE_ (self    :       Optional[Any])	->Optional[int]:



   '''simple docstring'''



   return datasets.MetricInfo(
       description=_DESCRIPTION	,			citation=_CITATION	,			inputs_description=_KWARGS_DESCRIPTION	,			features=datasets.Features(
           {
               "predictions": datasets.Value("float"),
               "references": datasets.Value("float"),
           })	,			reference_urls=["https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.spearmanr.html"]	,			)







 def 							SCREAMING_SNAKE_CASE_ (self    :       str	,			UpperCAmelCase_    :       int	,			UpperCAmelCase_    :       int	,			UpperCAmelCase_    :       Optional[Any]=False)	->List[str]:



   '''simple docstring'''



   lowerCamelCase__:				List[str]        =spearmanr(UpperCAmelCase_	,			UpperCAmelCase_)
   if return_pvalue:
     return {"spearmanr": results[0], "spearmanr_pvalue": results[1]}
   else:
     return {"spearmanr": results[0]}








from pathlib import Path
from typing import List

from transformers import is_torch_available, is_vision_available
from transformers.testing_utils import get_tests_dir, is_tool_test
from transformers.tools.agent_types import AGENT_TYPE_MAPPING, AgentAudio, AgentImage, AgentText


if is_torch_available():
     import torch

if is_vision_available():
     from PIL import Image


__A     =    ["text", "image", "audio"]





def 					lowerCAmelCase_			(	__a		)					->		Optional[Any]:







  """simple docstring"""





  lowerCamelCase__:				Tuple        =[]

  for input_type in input_types:
    if input_type == "text":
      inputs.append("Text input"		)
    elif input_type == "image":
      inputs.append(
          Image.open(Path(get_tests_dir("fixtures/tests_samples/COCO"		)		) / "000000039769.png"		).resize((512, 512)		)		)
    elif input_type == "audio":
      inputs.append(torch.ones(3000		)		)
    elif isinstance(__a     ,   __a		):
      inputs.append(create_inputs(__a		)		)
    else:
      raise ValueError(F"""Invalid type requested: {input_type}"""		)

  return inputs





def 					lowerCAmelCase_			(	__a		)					->		Union[str, Any]:







  """simple docstring"""





  lowerCamelCase__:				Union[str, Any]        =[]

  for output in outputs:
    if isinstance(__a     ,   (str, AgentText)		):
      output_types.append("text"		)
    elif isinstance(__a     ,   (Image.Image, AgentImage)		):
      output_types.append("image"		)
    elif isinstance(__a     ,   (torch.Tensor, AgentAudio)		):
      output_types.append("audio"		)
    else:
      raise ValueError(F"""Invalid output: {output}"""		)

  return output_types






@is_tool_test
class        _SCREAMING_SNAKE_CASE						:







 '''simple docstring'''

 def 							SCREAMING_SNAKE_CASE_ (self    :       List[str])	->Dict:



   '''simple docstring'''



   self.assertTrue(hasattr(self.tool	,			"inputs"))
   self.assertTrue(hasattr(self.tool	,			"outputs"))

   lowerCamelCase__:				Tuple        =self.tool.inputs
   for _input in inputs:
     if isinstance(_input	,			UpperCAmelCase_):
       for __input in _input:
         self.assertTrue(__input in authorized_types)
     else:
       self.assertTrue(_input in authorized_types)

   lowerCamelCase__:				Optional[Any]        =self.tool.outputs
   for _output in outputs:
     self.assertTrue(_output in authorized_types)

 def 							SCREAMING_SNAKE_CASE_ (self    :       Optional[Any])	->str:



   '''simple docstring'''



   lowerCamelCase__:				List[str]        =create_inputs(self.tool.inputs)
   lowerCamelCase__:				str        =self.tool(*UpperCAmelCase_)

   # There is a single output
   if len(self.tool.outputs) == 1:
     lowerCamelCase__:				Optional[Any]        =[outputs]

   self.assertListEqual(output_types(UpperCAmelCase_)	,			self.tool.outputs)

 def 							SCREAMING_SNAKE_CASE_ (self    :       Dict)	->Any:



   '''simple docstring'''



   self.assertTrue(hasattr(self.tool	,			"description"))
   self.assertTrue(hasattr(self.tool	,			"default_checkpoint"))
   self.assertTrue(self.tool.description.startswith("This is a tool that"))

 def 							SCREAMING_SNAKE_CASE_ (self    :       Union[str, Any])	->Optional[int]:



   '''simple docstring'''



   lowerCamelCase__:				str        =create_inputs(self.tool.inputs)
   lowerCamelCase__:				Dict        =self.tool(*UpperCAmelCase_)

   if not isinstance(UpperCAmelCase_	,			UpperCAmelCase_):
     lowerCamelCase__:				Tuple        =[outputs]

   self.assertEqual(len(UpperCAmelCase_)	,			len(self.tool.outputs))

   for output, output_type in zip(UpperCAmelCase_	,			self.tool.outputs):
     lowerCamelCase__:				Any        =AGENT_TYPE_MAPPING[output_type]
     self.assertTrue(isinstance(UpperCAmelCase_	,			UpperCAmelCase_))







 def 							SCREAMING_SNAKE_CASE_ (self    :       Dict)	->str:



   '''simple docstring'''



   lowerCamelCase__:				Any        =create_inputs(self.tool.inputs)

   lowerCamelCase__:				int        =[]

   for _input, input_type in zip(UpperCAmelCase_	,			self.tool.inputs):
     if isinstance(UpperCAmelCase_	,			UpperCAmelCase_):
       _inputs.append([AGENT_TYPE_MAPPING[_input_type](_input) for _input_type in input_type])
     else:
       _inputs.append(AGENT_TYPE_MAPPING[input_type](_input))

        # Should not raise an error
   lowerCamelCase__:				Union[str, Any]        =self.tool(*UpperCAmelCase_)

   if not isinstance(UpperCAmelCase_	,			UpperCAmelCase_):
     lowerCamelCase__:				str        =[outputs]

   self.assertEqual(len(UpperCAmelCase_)	,			len(self.tool.outputs))

