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   :	Optional[int] 							=   logging.getLogger()

def _lowercase	(      lowerCamelCase__						)					->       Optional[int]:





       """simple docstring"""


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


_a   :	List[str] 							=   logging.StreamHandler(sys.stdout)
logger.addHandler(stream_handler)






@require_torch_tpu
class 		__A       (snake_case__   ):






       def 			_snake_case						(      self      ):
              import xla_spawn

              __UpperCAmelCase  :				str       				=		self.get_auto_remove_tmp_dir()
              __UpperCAmelCase  :				List[str]       				=		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  :				Optional[Any]       				=		time()
                     xla_spawn.main()
                     __UpperCAmelCase  :				Optional[Any]       				=		time()

                     __UpperCAmelCase  :				str       				=		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_00      )







       def 			_snake_case						(      self      ):
              import xla_spawn

              __UpperCAmelCase  :				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'''




def _lowercase	(      lowerCamelCase__							,    lowerCamelCase__						)					->       float:





       """simple docstring"""


       if discount_rate < 0:
              raise ValueError("Discount rate cannot be negative"						)
       if not cash_flows:
              raise ValueError("Cash flows list cannot be empty"						)
       __UpperCAmelCase  :				Tuple       				=		sum(
           cash_flow / ((1 + discount_rate) ** i) for i, cash_flow in enumerate(lowerCamelCase__						)						)
       return round(lowerCamelCase__							,    ndigits=2						)


if __name__ == "__main__":
   import doctest

   doctest.testmod()






