





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

import torch_xla.distributed.xla_multiprocessing as xmp





def    __UpperCamelCase      (    ) ->List[str]:
					lowerCamelCase__       =       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=a,     default=1,     help="Number of TPU cores to use (1 or 8).")

					# positional
					parser.add_argument(
					    "training_script",     type=a,     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=a)

					return parser.parse_args()





def    __UpperCamelCase      (    ) ->List[str]:
					lowerCamelCase__       =       parse_args()

					# Import training_script as a module.
					lowerCamelCase__       =       Path(args.training_script)
					sys.path.append(str(script_fpath.parent.resolve()))
					lowerCamelCase__       =       script_fpath.stem
					lowerCamelCase__       =       importlib.import_module(a)

					# Patch sys.argv
					lowerCamelCase__       =       [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()








import unittest

from transformers import load_tool

from .test_tools_common import ToolTesterMixin

class SCREAMING_SNAKE_CASE_ (					unittest.TestCase							,       lowercase_   ):





					"""simple docstring"""


					def 					__magic_name__ ( self	):
										lowerCamelCase__       =       load_tool("text-classification"	)
										self.tool.setup()
										lowerCamelCase__       =       load_tool("text-classification"	,  remote=_lowerCAmelCase	)





					def 					__magic_name__ ( self	):
										lowerCamelCase__       =       self.tool("That's quite cool"	,  ["positive", "negative"]	)
										self.assertEqual(_lowerCAmelCase	,  "positive"	)





					def 					__magic_name__ ( self	):
										lowerCamelCase__       =       self.remote_tool("That's quite cool"	,  ["positive", "negative"]	)
										self.assertEqual(_lowerCAmelCase	,  "positive"	)





					def 					__magic_name__ ( self	):
										lowerCamelCase__       =       self.tool(text="That's quite cool"	,  labels=["positive", "negative"]	)
										self.assertEqual(_lowerCAmelCase	,  "positive"	)






					def 					__magic_name__ ( self	):
										lowerCamelCase__       =       self.remote_tool(text="That's quite cool"	,  labels=["positive", "negative"]	)
										self.assertEqual(_lowerCAmelCase	,  "positive"	)

