



'''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)

a							   =				logging.getLogger()







def a_     (    __UpperCAmelCase					)				->					Optional[int]:





			"""simple docstring"""







			snake_case:    List[str]      							={}
			snake_case:    List[str]      							=os.path.join(_UpperCAmelCase				,							'all_results.json'					)
			if os.path.exists(_UpperCAmelCase					):
						with open(_UpperCAmelCase				,							'r'					) as f:
									snake_case:    Dict      							=json.load(_UpperCAmelCase					)
			else:
						raise ValueError(f'''can\'t find {path}'''					)
			return results


a							   =				logging.StreamHandler(sys.stdout)
logger.addHandler(stream_handler)







@require_torch_tpu
class 						a_		(     SCREAMING_SNAKE_CASE_    ):


							def    UpperCamelCase     (				self   :						Optional[Any]			)			->					List[str]:
										import xla_spawn

										snake_case:    int      							=self.get_auto_remove_tmp_dir()
										snake_case:    Tuple      							=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(__a      ,						'argv'      ,						__a			):
													snake_case:    Tuple      							=time()
													xla_spawn.main()
													snake_case:    Optional[int]      							=time()

													snake_case:    List[Any]      							=get_results(__a			)
													self.assertGreaterEqual(result['eval_accuracy']      ,						0.7_5			)

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




							def    UpperCamelCase     (				self   :						List[str]			)			->					Optional[int]:
										import xla_spawn

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









'''simple docstring'''





from abc import ABC, abstractmethod
from argparse import ArgumentParser



class  snake_case__						(    SCREAMING_SNAKE_CASE_				):
 @staticmethod
 @abstractmethod
 def A_   (   __a						:							ArgumentParser  )      ->   List[str]:







       '''simple docstring'''
       raise NotImplementedError()





 @abstractmethod
 def A_   (   self						:							Optional[Any]  )      ->   Optional[Any]:







       '''simple docstring'''
       raise NotImplementedError()



