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

lowerCAmelCase					:    Optional[Any]           = logging.getLogger()







def 		A_(     A						:		Dict):
							UpperCamelCase   			=     {}
							UpperCamelCase   			=     os.path.join(A		,     'all_results.json')
							if os.path.exists(A):
														with open(A		,     'r') as f:
																					UpperCamelCase   			=     json.load(A)
							else:
														raise ValueError(f'''can\'t find {path}''')
							return results


lowerCAmelCase					:    Optional[Any]           = logging.StreamHandler(sys.stdout)
logger.addHandler(stream_handler)





@require_torch_tpu
class 			SCREAMING_SNAKE_CASE__      (     snake_case_):







				def 						UpperCAmelCase_    (       self     )->		Any:







											'''simple docstring'''






											import xla_spawn

											UpperCamelCase   			=     self.get_auto_remove_tmp_dir()
											UpperCamelCase   			=     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_     ):
																		UpperCamelCase   			=     time()
																		xla_spawn.main()
																		UpperCamelCase   			=     time()

																		UpperCamelCase   			=     get_results(A_     )
																		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     )->		Any:







											'''simple docstring'''






											import xla_spawn

											UpperCamelCase   			=     '\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()









SCREAMING_SNAKE_CASE__   			=   '''
# Transformers installation
! pip install transformers datasets
# To install from source instead of the last release, comment the command above and uncomment the following one.
# ! pip install git+https://github.com/huggingface/transformers.git
'''

SCREAMING_SNAKE_CASE__   			=   [{'''type''': '''code''', '''content''': INSTALL_CONTENT}]
SCREAMING_SNAKE_CASE__   			=   {
    '''{processor_class}''': '''FakeProcessorClass''',
    '''{model_class}''': '''FakeModelClass''',
    '''{object_class}''': '''FakeObjectClass''',
}




