
"""simple docstring"""

from ..utils import DummyObject, requires_backends

class __lowerCAmelCase	(   metaclass=__SCREAMING_SNAKE_CASE    ):
     lowercase		     =		["torch", "transformers", "onnx"]





     def __init__(			self			,  *__UpperCAmelCase			,  **__UpperCAmelCase   ):

      '''simple docstring'''




      requires_backends(self			,  ['torch', 'transformers', 'onnx']   )





     @classmethod
     def 		UpperCAmelCase      (			cls			,  *__UpperCAmelCase			,  **__UpperCAmelCase   ):

      '''simple docstring'''




      requires_backends(cls			,  ['torch', 'transformers', 'onnx']   )







     @classmethod
     def 		UpperCAmelCase      (			cls			,  *__UpperCAmelCase			,  **__UpperCAmelCase   ):

      '''simple docstring'''




      requires_backends(cls			,  ['torch', 'transformers', 'onnx']   )


class __lowerCAmelCase	(   metaclass=__SCREAMING_SNAKE_CASE    ):
     lowercase		     =		["torch", "transformers", "onnx"]





     def __init__(			self			,  *__UpperCAmelCase			,  **__UpperCAmelCase   ):

      '''simple docstring'''




      requires_backends(self			,  ['torch', 'transformers', 'onnx']   )





     @classmethod
     def 		UpperCAmelCase      (			cls			,  *__UpperCAmelCase			,  **__UpperCAmelCase   ):

      '''simple docstring'''




      requires_backends(cls			,  ['torch', 'transformers', 'onnx']   )







     @classmethod
     def 		UpperCAmelCase      (			cls			,  *__UpperCAmelCase			,  **__UpperCAmelCase   ):

      '''simple docstring'''




      requires_backends(cls			,  ['torch', 'transformers', 'onnx']   )


class __lowerCAmelCase	(   metaclass=__SCREAMING_SNAKE_CASE    ):
     lowercase		     =		["torch", "transformers", "onnx"]





     def __init__(			self			,  *__UpperCAmelCase			,  **__UpperCAmelCase   ):

      '''simple docstring'''




      requires_backends(self			,  ['torch', 'transformers', 'onnx']   )





     @classmethod
     def 		UpperCAmelCase      (			cls			,  *__UpperCAmelCase			,  **__UpperCAmelCase   ):

      '''simple docstring'''




      requires_backends(cls			,  ['torch', 'transformers', 'onnx']   )







     @classmethod
     def 		UpperCAmelCase      (			cls			,  *__UpperCAmelCase			,  **__UpperCAmelCase   ):

      '''simple docstring'''




      requires_backends(cls			,  ['torch', 'transformers', 'onnx']   )


class __lowerCAmelCase	(   metaclass=__SCREAMING_SNAKE_CASE    ):
     lowercase		     =		["torch", "transformers", "onnx"]





     def __init__(			self			,  *__UpperCAmelCase			,  **__UpperCAmelCase   ):

      '''simple docstring'''




      requires_backends(self			,  ['torch', 'transformers', 'onnx']   )





     @classmethod
     def 		UpperCAmelCase      (			cls			,  *__UpperCAmelCase			,  **__UpperCAmelCase   ):

      '''simple docstring'''




      requires_backends(cls			,  ['torch', 'transformers', 'onnx']   )







     @classmethod
     def 		UpperCAmelCase      (			cls			,  *__UpperCAmelCase			,  **__UpperCAmelCase   ):

      '''simple docstring'''




      requires_backends(cls			,  ['torch', 'transformers', 'onnx']   )


class __lowerCAmelCase	(   metaclass=__SCREAMING_SNAKE_CASE    ):
     lowercase		     =		["torch", "transformers", "onnx"]





     def __init__(			self			,  *__UpperCAmelCase			,  **__UpperCAmelCase   ):

      '''simple docstring'''




      requires_backends(self			,  ['torch', 'transformers', 'onnx']   )





     @classmethod
     def 		UpperCAmelCase      (			cls			,  *__UpperCAmelCase			,  **__UpperCAmelCase   ):

      '''simple docstring'''




      requires_backends(cls			,  ['torch', 'transformers', 'onnx']   )







     @classmethod
     def 		UpperCAmelCase      (			cls			,  *__UpperCAmelCase			,  **__UpperCAmelCase   ):

      '''simple docstring'''




      requires_backends(cls			,  ['torch', 'transformers', 'onnx']   )


class __lowerCAmelCase	(   metaclass=__SCREAMING_SNAKE_CASE    ):
     lowercase		     =		["torch", "transformers", "onnx"]





     def __init__(			self			,  *__UpperCAmelCase			,  **__UpperCAmelCase   ):

      '''simple docstring'''




      requires_backends(self			,  ['torch', 'transformers', 'onnx']   )





     @classmethod
     def 		UpperCAmelCase      (			cls			,  *__UpperCAmelCase			,  **__UpperCAmelCase   ):

      '''simple docstring'''




      requires_backends(cls			,  ['torch', 'transformers', 'onnx']   )







     @classmethod
     def 		UpperCAmelCase      (			cls			,  *__UpperCAmelCase			,  **__UpperCAmelCase   ):

      '''simple docstring'''




      requires_backends(cls			,  ['torch', 'transformers', 'onnx']   )





"""simple docstring"""

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

import torch_xla.distributed.xla_multiprocessing as xmp






def 							A		(       )   ->			List[Any]:
 __UpperCamelCase       						= 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 							A		(       )   ->			Optional[int]:
 __UpperCamelCase       						= parse_args()

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

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



