import unittest

from datasets import load_dataset

from transformers.pipelines import pipeline
from transformers.testing_utils import is_pipeline_test, nested_simplify, require_torch, slow



@is_pipeline_test
@require_torch
class   snake_case_       (		unittest.TestCase       ):






   @require_torch
   def       __UpperCamelCase     (      self				:     Optional[int]  )					->						List[Any]:
       lowercase__ :   Union[str, Any]    					=				pipeline(
           task="zero-shot-audio-classification"	,						model="hf-internal-testing/tiny-clap-htsat-unfused"  )
       lowercase__ :   List[str]    					=				load_dataset("ashraq/esc50"  )
       lowercase__ :   List[Any]    					=				dataset["train"]["audio"][-1]["array"]
       lowercase__ :   Dict    					=				audio_classifier(lowercase_	,						candidate_labels=["Sound of a dog", "Sound of vaccum cleaner"]  )
       self.assertEqual(
           nested_simplify(lowercase_  )	,						[{"score": 0.5_01, "label": "Sound of a dog"}, {"score": 0.4_99, "label": "Sound of vaccum cleaner"}]	,						)






   @unittest.skip("No models are available in TF"  )
   def       __UpperCamelCase     (      self				:     str  )					->						Optional[int]:
       pass






   @slow
   @require_torch
   def       __UpperCamelCase     (      self				:     List[str]  )					->						int:
       lowercase__ :   Tuple    					=				pipeline(
           task="zero-shot-audio-classification"	,						model="laion/clap-htsat-unfused"	,						)
       # This is an audio of a dog
       lowercase__ :   Union[str, Any]    					=				load_dataset("ashraq/esc50"  )
       lowercase__ :   Tuple    					=				dataset["train"]["audio"][-1]["array"]
       lowercase__ :   List[Any]    					=				audio_classifier(lowercase_	,						candidate_labels=["Sound of a dog", "Sound of vaccum cleaner"]  )

       self.assertEqual(
           nested_simplify(lowercase_  )	,						[
               {"score": 0.9_99, "label": "Sound of a dog"},
               {"score": 0.0_01, "label": "Sound of vaccum cleaner"},
           ]	,						)

       lowercase__ :   int    					=				audio_classifier([audio] * 5	,						candidate_labels=["Sound of a dog", "Sound of vaccum cleaner"]  )
       self.assertEqual(
           nested_simplify(lowercase_  )	,						[
               [
                   {"score": 0.9_99, "label": "Sound of a dog"},
                   {"score": 0.0_01, "label": "Sound of vaccum cleaner"},
               ],
           ]
           * 5	,						)
       lowercase__ :   Tuple    					=				audio_classifier(
           [audio] * 5	,						candidate_labels=["Sound of a dog", "Sound of vaccum cleaner"]	,						batch_size=5  )
       self.assertEqual(
           nested_simplify(lowercase_  )	,						[
               [
                   {"score": 0.9_99, "label": "Sound of a dog"},
                   {"score": 0.0_01, "label": "Sound of vaccum cleaner"},
               ],
           ]
           * 5	,						)







   @unittest.skip("No models are available in TF"  )
   def       __UpperCamelCase     (      self				:     Union[str, Any]  )					->						Dict:
       pass










import os
import tempfile
import unittest
from pathlib import Path

from transformers import AutoConfig, is_tf_available
from transformers.testing_utils import require_tf


if is_tf_available():
    import tensorflow as tf

    from transformers import TensorFlowBenchmark, TensorFlowBenchmarkArguments





@require_tf
class  A__    (							unittest.TestCase	):




   """simple docstring"""



   def 							__lowercase		(					self					,  lowercase)			->						Dict:







          '''simple docstring'''

          for model_result in results.values():
                 for batch_size, sequence_length in zip(model_result['bs']					,  model_result['ss']):
                        a__						:	int =				model_result['result'][batch_size][sequence_length]
                        self.assertIsNotNone(lowercase)

   def 							__lowercase		(					self)			->						Optional[int]:







          '''simple docstring'''

          a__						:	Tuple =				'sshleifer/tiny-gpt2'
          a__						:	str =				TensorFlowBenchmarkArguments(
              models=[MODEL_ID]					,  training=lowercase					,  inference=lowercase					,  sequence_lengths=[8]					,  batch_sizes=[1]					,  eager_mode=lowercase					,  multi_process=lowercase					,  )
          a__						:	List[Any] =				TensorFlowBenchmark(lowercase)
          a__						:	Any =				benchmark.run()
          self.check_results_dict_not_empty(results.time_inference_result)
          self.check_results_dict_not_empty(results.memory_inference_result)

   def 							__lowercase		(					self)			->						Tuple:







          '''simple docstring'''

          a__						:	Optional[Any] =				'sgugger/tiny-distilbert-classification'
          a__						:	List[str] =				TensorFlowBenchmarkArguments(
              models=[MODEL_ID]					,  training=lowercase					,  inference=lowercase					,  sequence_lengths=[8]					,  batch_sizes=[1]					,  multi_process=lowercase					,  only_pretrain_model=lowercase					,  )
          a__						:	str =				TensorFlowBenchmark(lowercase)
          a__						:	int =				benchmark.run()
          self.check_results_dict_not_empty(results.time_inference_result)
          self.check_results_dict_not_empty(results.memory_inference_result)

   def 							__lowercase		(					self)			->						List[str]:







          '''simple docstring'''

          a__						:	Union[str, Any] =				'sshleifer/tiny-gpt2'
          a__						:	Dict =				TensorFlowBenchmarkArguments(
              models=[MODEL_ID]					,  training=lowercase					,  inference=lowercase					,  sequence_lengths=[8]					,  batch_sizes=[1]					,  multi_process=lowercase					,  )
          a__						:	List[str] =				TensorFlowBenchmark(lowercase)
          a__						:	Tuple =				benchmark.run()
          self.check_results_dict_not_empty(results.time_inference_result)
          self.check_results_dict_not_empty(results.memory_inference_result)

   def 							__lowercase		(					self)			->						Optional[int]:







          '''simple docstring'''

          a__						:	str =				'sshleifer/tiny-gpt2'
          a__						:	str =				AutoConfig.from_pretrained(lowercase)
          a__						:	Any =				TensorFlowBenchmarkArguments(
              models=[MODEL_ID]					,  training=lowercase					,  inference=lowercase					,  sequence_lengths=[8]					,  batch_sizes=[1]					,  eager_mode=lowercase					,  multi_process=lowercase					,  )
          a__						:	Optional[Any] =				TensorFlowBenchmark(lowercase					,  [config])
          a__						:	Union[str, Any] =				benchmark.run()
          self.check_results_dict_not_empty(results.time_inference_result)
          self.check_results_dict_not_empty(results.memory_inference_result)

   def 							__lowercase		(					self)			->						str:







          '''simple docstring'''

          a__						:	Dict =				'sshleifer/tiny-gpt2'
          a__						:	Union[str, Any] =				AutoConfig.from_pretrained(lowercase)
          a__						:	Optional[int] =				TensorFlowBenchmarkArguments(
              models=[MODEL_ID]					,  training=lowercase					,  inference=lowercase					,  sequence_lengths=[8]					,  batch_sizes=[1]					,  multi_process=lowercase					,  )
          a__						:	str =				TensorFlowBenchmark(lowercase					,  [config])
          a__						:	List[str] =				benchmark.run()
          self.check_results_dict_not_empty(results.time_inference_result)
          self.check_results_dict_not_empty(results.memory_inference_result)

   def 							__lowercase		(					self)			->						Dict:







          '''simple docstring'''

          a__						:	Optional[int] =				'sshleifer/tiny-gpt2'
          a__						:	Any =				TensorFlowBenchmarkArguments(
              models=[MODEL_ID]					,  training=lowercase					,  inference=lowercase					,  sequence_lengths=[8]					,  batch_sizes=[1]					,  multi_process=lowercase					,  )
          a__						:	Tuple =				TensorFlowBenchmark(lowercase)
          a__						:	str =				benchmark.run()
          self.check_results_dict_not_empty(results.time_train_result)
          self.check_results_dict_not_empty(results.memory_train_result)

   def 							__lowercase		(					self)			->						int:







          '''simple docstring'''

          a__						:	Optional[Any] =				'sshleifer/tiny-gpt2'
          a__						:	List[Any] =				AutoConfig.from_pretrained(lowercase)
          a__						:	List[Any] =				TensorFlowBenchmarkArguments(
              models=[MODEL_ID]					,  training=lowercase					,  inference=lowercase					,  sequence_lengths=[8]					,  batch_sizes=[1]					,  multi_process=lowercase					,  )
          a__						:	Optional[Any] =				TensorFlowBenchmark(lowercase					,  [config])
          a__						:	List[Any] =				benchmark.run()
          self.check_results_dict_not_empty(results.time_train_result)
          self.check_results_dict_not_empty(results.memory_train_result)

   def 							__lowercase		(					self)			->						int:







          '''simple docstring'''

          a__						:	Optional[int] =				'patrickvonplaten/t5-tiny-random'
          a__						:	Optional[int] =				AutoConfig.from_pretrained(lowercase)
          a__						:	Any =				TensorFlowBenchmarkArguments(
              models=[MODEL_ID]					,  training=lowercase					,  inference=lowercase					,  sequence_lengths=[8]					,  batch_sizes=[1]					,  multi_process=lowercase					,  )
          a__						:	List[Any] =				TensorFlowBenchmark(lowercase					,  configs=[config])
          a__						:	Union[str, Any] =				benchmark.run()
          self.check_results_dict_not_empty(results.time_inference_result)
          self.check_results_dict_not_empty(results.memory_inference_result)

   @unittest.skipIf(is_tf_available() and len(tf.config.list_physical_devices('GPU')) == 0					,  'Cannot do xla on CPU.')
   def 							__lowercase		(					self)			->						List[Any]:







          '''simple docstring'''

          a__						:	Optional[int] =				'sshleifer/tiny-gpt2'
          a__						:	str =				TensorFlowBenchmarkArguments(
              models=[MODEL_ID]					,  training=lowercase					,  inference=lowercase					,  sequence_lengths=[8]					,  batch_sizes=[1]					,  use_xla=lowercase					,  multi_process=lowercase					,  )
          a__						:	int =				TensorFlowBenchmark(lowercase)
          a__						:	Tuple =				benchmark.run()
          self.check_results_dict_not_empty(results.time_inference_result)
          self.check_results_dict_not_empty(results.memory_inference_result)

   def 							__lowercase		(					self)			->						Dict:







          '''simple docstring'''

          a__						:	str =				'sshleifer/tiny-gpt2'
          with tempfile.TemporaryDirectory() as tmp_dir:
                 a__						:	int =				TensorFlowBenchmarkArguments(
                     models=[MODEL_ID]					,  inference=lowercase					,  save_to_csv=lowercase					,  sequence_lengths=[8]					,  batch_sizes=[1]					,  inference_time_csv_file=os.path.join(lowercase					,  'inf_time.csv')					,  inference_memory_csv_file=os.path.join(lowercase					,  'inf_mem.csv')					,  env_info_csv_file=os.path.join(lowercase					,  'env.csv')					,  multi_process=lowercase					,  )
                 a__						:	List[str] =				TensorFlowBenchmark(lowercase)
                 benchmark.run()
                 self.assertTrue(Path(os.path.join(lowercase					,  'inf_time.csv')).exists())
                 self.assertTrue(Path(os.path.join(lowercase					,  'inf_mem.csv')).exists())
                 self.assertTrue(Path(os.path.join(lowercase					,  'env.csv')).exists())

   def 							__lowercase		(					self)			->						str:







          '''simple docstring'''

          a__						:	Union[str, Any] =				'sshleifer/tiny-gpt2'

          def _check_summary_is_not_empty(lowercase):
                 self.assertTrue(hasattr(lowercase					,  'sequential'))
                 self.assertTrue(hasattr(lowercase					,  'cumulative'))
                 self.assertTrue(hasattr(lowercase					,  'current'))
                 self.assertTrue(hasattr(lowercase					,  'total'))

          with tempfile.TemporaryDirectory() as tmp_dir:
                 a__						:	List[str] =				TensorFlowBenchmarkArguments(
                     models=[MODEL_ID]					,  inference=lowercase					,  sequence_lengths=[8]					,  batch_sizes=[1]					,  log_filename=os.path.join(lowercase					,  'log.txt')					,  log_print=lowercase					,  trace_memory_line_by_line=lowercase					,  eager_mode=lowercase					,  multi_process=lowercase					,  )
                 a__						:	List[str] =				TensorFlowBenchmark(lowercase)
                 a__						:	Any =				benchmark.run()
                 _check_summary_is_not_empty(result.inference_summary)
                 self.assertTrue(Path(os.path.join(lowercase					,  'log.txt')).exists())


