





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_           =	logging.getLogger()
def      A__       (    SCREAMING_SNAKE_CASE_   :      Optional[int]						)  ->  Any:






   """simple docstring"""







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


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




@require_torch_tpu
class 			__UpperCamelCase    (							A__    ):





     def 		UpperCamelCase(     self					):
        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(_UpperCamelCase				,							'''argv'''				,							_UpperCamelCase					):
           _UpperCAmelCase           =   time()
           xla_spawn.main()
           _UpperCAmelCase           =   time()

           _UpperCAmelCase           =   get_results(_UpperCamelCase					)
           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					):
        import xla_spawn

        _UpperCAmelCase           =   '''
            ./tests/test_trainer_tpu.py
            --num_cores=8
            ./tests/test_trainer_tpu.py
            '''.split()
        with patch.object(_UpperCamelCase				,							'''argv'''				,							_UpperCamelCase					):
           xla_spawn.main()






def      A__       (    SCREAMING_SNAKE_CASE_   :      int				,	SCREAMING_SNAKE_CASE_   :      int						)  ->  str:






   """simple docstring"""







   if a < 0 or b < 0:
      raise ValueError('''the value of both inputs must be positive'''						)

   _UpperCAmelCase           =   str(bin(SCREAMING_SNAKE_CASE_						)						)[2:]  # remove the leading "0b"
   _UpperCAmelCase           =   str(bin(SCREAMING_SNAKE_CASE_						)						)[2:]  # remove the leading "0b"

   _UpperCAmelCase           =   max(len(SCREAMING_SNAKE_CASE_						)				,	len(SCREAMING_SNAKE_CASE_						)						)

   return "0b" + "".join(
       str(int(char_a == '''1''' and char_b == '''1'''						)						)
       for char_a, char_b in zip(a_binary.zfill(SCREAMING_SNAKE_CASE_						)				,	b_binary.zfill(SCREAMING_SNAKE_CASE_						)						)						)


if __name__ == "__main__":
   import doctest

   doctest.testmod()