






'''simple docstring'''



import json
import logging
import os
import sys
from time import time
from unittest.mock import patch

from transformers.testing_utils import TestCasePlus, require_torch_tpu


logging.basicConfig(level=logging.DEBUG)

__UpperCamelCase   :							Union[str, Any]         =   logging.getLogger()



def  __UpperCAmelCase						(					SCREAMING_SNAKE_CASE__:						Tuple     )	->      Tuple:

   """simple docstring"""
   __a					  =     {}
   __a					  =     os.path.join(a__,       'all_results.json'     )
   if os.path.exists(a__     ):
      with open(a__,       'r'     ) as f:
         __a					  =     json.load(a__     )
   else:
      raise ValueError(f"""can\'t find {path}"""     )
   return results


__UpperCamelCase   :							Union[str, Any]         =   logging.StreamHandler(sys.stdout)
logger.addHandler(stream_handler)



@require_torch_tpu
class 				__SCREAMING_SNAKE_CASE							(				_lowerCAmelCase  ):




      def 			__UpperCamelCase				(	self   )				->Union[str, Any]:



         '''simple docstring'''
         import xla_spawn

         __a					  =     self.get_auto_remove_tmp_dir()
         __a					  =     F"""
            ./examples/pytorch/text-classification/run_glue.py
            --num_cores=8
            ./examples/pytorch/text-classification/run_glue.py
            --model_name_or_path distilbert-base-uncased
            --output_dir {tmp_dir}
            --overwrite_output_dir
            --train_file ./tests/fixtures/tests_samples/MRPC/train.csv
            --validation_file ./tests/fixtures/tests_samples/MRPC/dev.csv
            --do_train
            --do_eval
            --debug tpu_metrics_debug
            --per_device_train_batch_size=2
            --per_device_eval_batch_size=1
            --learning_rate=1e-4
            --max_steps=10
            --warmup_steps=2
            --seed=42
            --max_seq_length=128
            """.split()

         with patch.object(_SCREAMING_SNAKE_CASE			, 'argv'			, _SCREAMING_SNAKE_CASE   ):
            __a					  =     time()
            xla_spawn.main()
            __a					  =     time()

            __a					  =     get_results(_SCREAMING_SNAKE_CASE   )
            self.assertGreaterEqual(result['eval_accuracy']			, 0.75   )

            # Assert that the script takes less than 500 seconds to make sure it doesn't hang.
            self.assertLess(end - start			, 500   )






      def 			__UpperCamelCase				(	self   )				->Dict:



         '''simple docstring'''
         import xla_spawn

         __a					  =     '\n            ./tests/test_trainer_tpu.py\n            --num_cores=8\n            ./tests/test_trainer_tpu.py\n            '.split()
         with patch.object(_SCREAMING_SNAKE_CASE			, 'argv'			, _SCREAMING_SNAKE_CASE   ):
            xla_spawn.main()



from .imports import is_rich_available


if is_rich_available():
		from rich.traceback import install

		install(show_locals=False)

else:
		raise ModuleNotFoundError('''To use the rich extension, install rich with `pip install rich`''')
