"""simple docstring"""





from __future__ import annotations

from typing import Any





def        a_  (   _lowerCAmelCase						:				list[Any]  ):





       '''simple docstring'''

       create_state_space_tree(_lowerCAmelCase     ,				[]     ,				0  )





def        a_  (   _lowerCAmelCase						:				list[Any]     ,				_lowerCAmelCase						:				list[Any]     ,				_lowerCAmelCase						:				int  ):





       '''simple docstring'''

       if index == len(_lowerCAmelCase  ):
              print(_lowerCAmelCase  )
              return

       create_state_space_tree(_lowerCAmelCase     ,				_lowerCAmelCase     ,				index + 1  )
       current_subsequence.append(sequence[index]  )
       create_state_space_tree(_lowerCAmelCase     ,				_lowerCAmelCase     ,				index + 1  )
       current_subsequence.pop()


if __name__ == "__main__":
       _UpperCamelCase     :		list[Any]											=					[3, 1, 2, 4]
       generate_all_subsequences(seq)

       seq.clear()
       seq.extend(["A", "B", "C"])
       generate_all_subsequences(seq)


"""simple docstring"""





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   UpperCAmelCase_			(					unittest.TestCase):


      def 	_UpperCAmelCase (     self	,    a							) ->      str:
             for model_result in results.values():
                    for batch_size, sequence_length in zip(model_result['bs']	,    model_result['ss']							):
                           lowercase__    :	str     					=			model_result['result'][batch_size][sequence_length]
                           self.assertIsNotNone(a							)


      def 	_UpperCAmelCase (     self							) ->      int:
             lowercase__    :	Dict     					=			'sshleifer/tiny-gpt2'
             lowercase__    :	int     					=			TensorFlowBenchmarkArguments(
                 models=[MODEL_ID]	,    training=a	,    inference=a	,    sequence_lengths=[8]	,    batch_sizes=[1]	,    eager_mode=a	,    multi_process=a	,    )
             lowercase__    :	str     					=			TensorFlowBenchmark(a							)
             lowercase__    :	Optional[int]     					=			benchmark.run()
             self.check_results_dict_not_empty(results.time_inference_result							)
             self.check_results_dict_not_empty(results.memory_inference_result							)


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


      def 	_UpperCAmelCase (     self							) ->      Union[str, Any]:
             lowercase__    :	Optional[int]     					=			'sshleifer/tiny-gpt2'
             lowercase__    :	Union[str, Any]     					=			TensorFlowBenchmarkArguments(
                 models=[MODEL_ID]	,    training=a	,    inference=a	,    sequence_lengths=[8]	,    batch_sizes=[1]	,    multi_process=a	,    )
             lowercase__    :	Optional[Any]     					=			TensorFlowBenchmark(a							)
             lowercase__    :	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 	_UpperCAmelCase (     self							) ->      Optional[Any]:
             lowercase__    :	Any     					=			'sshleifer/tiny-gpt2'
             lowercase__    :	List[Any]     					=			AutoConfig.from_pretrained(a							)
             lowercase__    :	Any     					=			TensorFlowBenchmarkArguments(
                 models=[MODEL_ID]	,    training=a	,    inference=a	,    sequence_lengths=[8]	,    batch_sizes=[1]	,    eager_mode=a	,    multi_process=a	,    )
             lowercase__    :	Tuple     					=			TensorFlowBenchmark(a	,    [config]							)
             lowercase__    :	Dict     					=			benchmark.run()
             self.check_results_dict_not_empty(results.time_inference_result							)
             self.check_results_dict_not_empty(results.memory_inference_result							)


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


      def 	_UpperCAmelCase (     self							) ->      Tuple:
             lowercase__    :	Optional[Any]     					=			'sshleifer/tiny-gpt2'
             lowercase__    :	Any     					=			TensorFlowBenchmarkArguments(
                 models=[MODEL_ID]	,    training=a	,    inference=a	,    sequence_lengths=[8]	,    batch_sizes=[1]	,    multi_process=a	,    )
             lowercase__    :	Optional[Any]     					=			TensorFlowBenchmark(a							)
             lowercase__    :	Tuple     					=			benchmark.run()
             self.check_results_dict_not_empty(results.time_train_result							)
             self.check_results_dict_not_empty(results.memory_train_result							)


      def 	_UpperCAmelCase (     self							) ->      str:
             lowercase__    :	Optional[Any]     					=			'sshleifer/tiny-gpt2'
             lowercase__    :	Optional[int]     					=			AutoConfig.from_pretrained(a							)
             lowercase__    :	str     					=			TensorFlowBenchmarkArguments(
                 models=[MODEL_ID]	,    training=a	,    inference=a	,    sequence_lengths=[8]	,    batch_sizes=[1]	,    multi_process=a	,    )
             lowercase__    :	str     					=			TensorFlowBenchmark(a	,    [config]							)
             lowercase__    :	Optional[int]     					=			benchmark.run()
             self.check_results_dict_not_empty(results.time_train_result							)
             self.check_results_dict_not_empty(results.memory_train_result							)


      def 	_UpperCAmelCase (     self							) ->      Optional[Any]:
             lowercase__    :	List[str]     					=			'patrickvonplaten/t5-tiny-random'
             lowercase__    :	Any     					=			AutoConfig.from_pretrained(a							)
             lowercase__    :	List[str]     					=			TensorFlowBenchmarkArguments(
                 models=[MODEL_ID]	,    training=a	,    inference=a	,    sequence_lengths=[8]	,    batch_sizes=[1]	,    multi_process=a	,    )
             lowercase__    :	int     					=			TensorFlowBenchmark(a	,    configs=[config]							)
             lowercase__    :	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 	_UpperCAmelCase (     self							) ->      Any:
             lowercase__    :	Any     					=			'sshleifer/tiny-gpt2'
             lowercase__    :	Optional[Any]     					=			TensorFlowBenchmarkArguments(
                 models=[MODEL_ID]	,    training=a	,    inference=a	,    sequence_lengths=[8]	,    batch_sizes=[1]	,    use_xla=a	,    multi_process=a	,    )
             lowercase__    :	Any     					=			TensorFlowBenchmark(a							)
             lowercase__    :	Dict     					=			benchmark.run()
             self.check_results_dict_not_empty(results.time_inference_result							)
             self.check_results_dict_not_empty(results.memory_inference_result							)


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


      def 	_UpperCAmelCase (     self							) ->      Dict:
             lowercase__    :	Tuple     					=			'sshleifer/tiny-gpt2'

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

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

