
"""simple docstring"""




import os
import sys
import unittest


UpperCAmelCase__      :    List[Any]    							= os.path.abspath(os.path.dirname(os.path.dirname(os.path.dirname(__file__))))
sys.path.append(os.path.join(git_repo_path, 'utils'))

import get_test_info  # noqa: E402
from get_test_info import (  # noqa: E402
    get_model_to_test_mapping,
    get_model_to_tester_mapping,
    get_test_to_tester_mapping,
)


UpperCAmelCase__      :    List[str]    							= os.path.join('tests', 'models', 'bert', 'test_modeling_bert.py')
UpperCAmelCase__      :    Dict    							= os.path.join('tests', 'models', 'blip', 'test_modeling_blip.py')



class 	lowerCAmelCase_						(unittest.TestCase  ):


				"""simple docstring"""



				def 	__magic_name__    (self    )					->		Any:



											"""simple docstring"""




											SCREAMING_SNAKE_CASE__						:       Union[str, Any]           =   get_test_to_tester_mapping(SCREAMING_SNAKE_CASE__    )
											SCREAMING_SNAKE_CASE__						:       Optional[int]           =   get_test_to_tester_mapping(SCREAMING_SNAKE_CASE__    )

											SCREAMING_SNAKE_CASE__						:       Optional[Any]           =   {"""BertModelTest""": """BertModelTester"""}

											SCREAMING_SNAKE_CASE__						:       Any           =   {
											    """BlipModelTest""": """BlipModelTester""",
											    """BlipTextImageModelTest""": """BlipTextImageModelsModelTester""",
											    """BlipTextModelTest""": """BlipTextModelTester""",
											    """BlipTextRetrievalModelTest""": """BlipTextRetrievalModelTester""",
											    """BlipVQAModelTest""": """BlipVQAModelTester""",
											    """BlipVisionModelTest""": """BlipVisionModelTester""",
											}

											self.assertEqual(get_test_info.to_json(SCREAMING_SNAKE_CASE__    )   ,       SCREAMING_SNAKE_CASE__    )
											self.assertEqual(get_test_info.to_json(SCREAMING_SNAKE_CASE__    )   ,       SCREAMING_SNAKE_CASE__    )



				def 	__magic_name__    (self    )					->		Optional[Any]:



											"""simple docstring"""




											SCREAMING_SNAKE_CASE__						:       List[str]           =   get_model_to_test_mapping(SCREAMING_SNAKE_CASE__    )
											SCREAMING_SNAKE_CASE__						:       List[str]           =   get_model_to_test_mapping(SCREAMING_SNAKE_CASE__    )

											SCREAMING_SNAKE_CASE__						:       int           =   {
											    """BertForMaskedLM""": ["""BertModelTest"""],
											    """BertForMultipleChoice""": ["""BertModelTest"""],
											    """BertForNextSentencePrediction""": ["""BertModelTest"""],
											    """BertForPreTraining""": ["""BertModelTest"""],
											    """BertForQuestionAnswering""": ["""BertModelTest"""],
											    """BertForSequenceClassification""": ["""BertModelTest"""],
											    """BertForTokenClassification""": ["""BertModelTest"""],
											    """BertLMHeadModel""": ["""BertModelTest"""],
											    """BertModel""": ["""BertModelTest"""],
											}

											SCREAMING_SNAKE_CASE__						:       Dict           =   {
											    """BlipForConditionalGeneration""": ["""BlipTextImageModelTest"""],
											    """BlipForImageTextRetrieval""": ["""BlipTextRetrievalModelTest"""],
											    """BlipForQuestionAnswering""": ["""BlipVQAModelTest"""],
											    """BlipModel""": ["""BlipModelTest"""],
											    """BlipTextModel""": ["""BlipTextModelTest"""],
											    """BlipVisionModel""": ["""BlipVisionModelTest"""],
											}

											self.assertEqual(get_test_info.to_json(SCREAMING_SNAKE_CASE__    )   ,       SCREAMING_SNAKE_CASE__    )
											self.assertEqual(get_test_info.to_json(SCREAMING_SNAKE_CASE__    )   ,       SCREAMING_SNAKE_CASE__    )



				def 	__magic_name__    (self    )					->		List[str]:



											"""simple docstring"""




											SCREAMING_SNAKE_CASE__						:       Dict           =   get_model_to_tester_mapping(SCREAMING_SNAKE_CASE__    )
											SCREAMING_SNAKE_CASE__						:       Dict           =   get_model_to_tester_mapping(SCREAMING_SNAKE_CASE__    )

											SCREAMING_SNAKE_CASE__						:       Optional[int]           =   {
											    """BertForMaskedLM""": ["""BertModelTester"""],
											    """BertForMultipleChoice""": ["""BertModelTester"""],
											    """BertForNextSentencePrediction""": ["""BertModelTester"""],
											    """BertForPreTraining""": ["""BertModelTester"""],
											    """BertForQuestionAnswering""": ["""BertModelTester"""],
											    """BertForSequenceClassification""": ["""BertModelTester"""],
											    """BertForTokenClassification""": ["""BertModelTester"""],
											    """BertLMHeadModel""": ["""BertModelTester"""],
											    """BertModel""": ["""BertModelTester"""],
											}

											SCREAMING_SNAKE_CASE__						:       int           =   {
											    """BlipForConditionalGeneration""": ["""BlipTextImageModelsModelTester"""],
											    """BlipForImageTextRetrieval""": ["""BlipTextRetrievalModelTester"""],
											    """BlipForQuestionAnswering""": ["""BlipVQAModelTester"""],
											    """BlipModel""": ["""BlipModelTester"""],
											    """BlipTextModel""": ["""BlipTextModelTester"""],
											    """BlipVisionModel""": ["""BlipVisionModelTester"""],
											}

											self.assertEqual(get_test_info.to_json(SCREAMING_SNAKE_CASE__    )   ,       SCREAMING_SNAKE_CASE__    )
											self.assertEqual(get_test_info.to_json(SCREAMING_SNAKE_CASE__    )   ,       SCREAMING_SNAKE_CASE__    )






"""simple docstring"""




import importlib
import sys
from argparse import REMAINDER, ArgumentParser
from pathlib import Path

import torch_xla.distributed.xla_multiprocessing as xmp

def lowercase_  (   ):
							SCREAMING_SNAKE_CASE__						:       Optional[Any]           =   ArgumentParser(
							    description=(
							        """PyTorch TPU distributed training launch """
							        """helper utility that will spawn up """
							        """multiple distributed processes"""
							    )						)

							# Optional arguments for the launch helper
							parser.add_argument("""--num_cores"""   ,type=_snake_case   ,default=1   ,help="""Number of TPU cores to use (1 or 8)."""						)

							# positional
							parser.add_argument(
							    """training_script"""   ,type=_snake_case   ,help=(
							        """The full path to the single TPU training """
							        """program/script to be launched in parallel, """
							        """followed by all the arguments for the """
							        """training script"""
							    )   ,)

							# rest from the training program
							parser.add_argument("""training_script_args"""   ,nargs=_snake_case						)

							return parser.parse_args()

def lowercase_  (   ):
							SCREAMING_SNAKE_CASE__						:       int           =   parse_args()

							# Import training_script as a module.
							SCREAMING_SNAKE_CASE__						:       Dict           =   Path(args.training_script						)
							sys.path.append(str(script_fpath.parent.resolve()						)						)
							SCREAMING_SNAKE_CASE__						:       int           =   script_fpath.stem
							SCREAMING_SNAKE_CASE__						:       Optional[Any]           =   importlib.import_module(_snake_case						)

							# Patch sys.argv
							SCREAMING_SNAKE_CASE__						:       str           =   [args.training_script] + args.training_script_args + ["""--tpu_num_cores""", str(args.num_cores						)]
							xmp.spawn(mod._mp_fn   ,args=()   ,nprocs=args.num_cores						)


if __name__ == "__main__":
					main()




