
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)

lowercase__       =logging.getLogger()




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


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



@require_torch_tpu
class 		UpperCamelCase__  (       __lowercase    ):
   def       lowerCAmelCase			(self :					Tuple   ):
    import xla_spawn

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

    with patch.object(A_					,				'''argv'''					,				A_   ):
     __a :  Optional[int]						=  time()
     xla_spawn.main()
     __a :  Optional[int]						=  time()

     __a :  List[Any]						=  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					,				5_0_0   )







   def       lowerCAmelCase			(self :					Any   ):
    import xla_spawn

    __a :  Tuple						=  '''\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()






from typing import TYPE_CHECKING

from ...utils import (
    OptionalDependencyNotAvailable,
    _LazyModule,
    is_flax_available,
    is_tf_available,
    is_tokenizers_available,
    is_torch_available,
)


lowerCamelCase				:		Optional[Any]     =   {
    "configuration_whisper": ["WHISPER_PRETRAINED_CONFIG_ARCHIVE_MAP", "WhisperConfig", "WhisperOnnxConfig"],
    "feature_extraction_whisper": ["WhisperFeatureExtractor"],
    "processing_whisper": ["WhisperProcessor"],
    "tokenization_whisper": ["WhisperTokenizer"],
}

try:
 if not is_tokenizers_available():
  raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
 pass
else:
 lowerCamelCase				:		Tuple     =   ["WhisperTokenizerFast"]

try:
 if not is_torch_available():
  raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
 pass
else:
 lowerCamelCase				:		str     =   [
     "WHISPER_PRETRAINED_MODEL_ARCHIVE_LIST",
     "WhisperForConditionalGeneration",
     "WhisperModel",
     "WhisperPreTrainedModel",
     "WhisperForAudioClassification",
 ]

try:
 if not is_tf_available():
  raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
 pass
else:
 lowerCamelCase				:		List[str]     =   [
     "TF_WHISPER_PRETRAINED_MODEL_ARCHIVE_LIST",
     "TFWhisperForConditionalGeneration",
     "TFWhisperModel",
     "TFWhisperPreTrainedModel",
 ]

try:
 if not is_flax_available():
  raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
 pass
else:
 lowerCamelCase				:		str     =   [
     "FlaxWhisperForConditionalGeneration",
     "FlaxWhisperModel",
     "FlaxWhisperPreTrainedModel",
     "FlaxWhisperForAudioClassification",
 ]


if TYPE_CHECKING:
 from .configuration_whisper import WHISPER_PRETRAINED_CONFIG_ARCHIVE_MAP, WhisperConfig, WhisperOnnxConfig
 from .feature_extraction_whisper import WhisperFeatureExtractor
 from .processing_whisper import WhisperProcessor
 from .tokenization_whisper import WhisperTokenizer

 try:
  if not is_tokenizers_available():
   raise OptionalDependencyNotAvailable()
 except OptionalDependencyNotAvailable:
  pass
 else:
  from .tokenization_whisper_fast import WhisperTokenizerFast

 try:
  if not is_torch_available():
   raise OptionalDependencyNotAvailable()
 except OptionalDependencyNotAvailable:
  pass
 else:
  from .modeling_whisper import (
      WHISPER_PRETRAINED_MODEL_ARCHIVE_LIST,
      WhisperForAudioClassification,
      WhisperForConditionalGeneration,
      WhisperModel,
      WhisperPreTrainedModel,
  )

 try:
  if not is_tf_available():
   raise OptionalDependencyNotAvailable()
 except OptionalDependencyNotAvailable:
  pass
 else:
  from .modeling_tf_whisper import (
      TF_WHISPER_PRETRAINED_MODEL_ARCHIVE_LIST,
      TFWhisperForConditionalGeneration,
      TFWhisperModel,
      TFWhisperPreTrainedModel,
  )

 try:
  if not is_flax_available():
   raise OptionalDependencyNotAvailable()
 except OptionalDependencyNotAvailable:
  pass
 else:
  from .modeling_flax_whisper import (
      FlaxWhisperForAudioClassification,
      FlaxWhisperForConditionalGeneration,
      FlaxWhisperModel,
      FlaxWhisperPreTrainedModel,
  )

else:
 import sys

 lowerCamelCase				:		Tuple     =   _LazyModule(__name__, globals()["__file__"], _import_structure, module_spec=__spec__)



