
"""simple docstring"""
import importlib
import sys
from argparse import REMAINDER, ArgumentParser
from pathlib import Path

import torch_xla.distributed.xla_multiprocessing as xmp


def      lowerCamelCase_     (						)  ->      Union[str, Any]:


					'''simple docstring'''
					__a:    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=_lowerCamelCase						,					default=1						,					help="""Number of TPU cores to use (1 or 8)."""			)

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

					return parser.parse_args()


def      lowerCamelCase_     (						)  ->      Union[str, Any]:


					'''simple docstring'''
					__a:    str		     =       parse_args()

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

					# Patch sys.argv
					__a:    List[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()








"""simple docstring"""
from __future__ import annotations






def 			lowerCamelCase_    (		_lowerCamelCase							):
 lowerCamelCase__	:     int
 lowerCamelCase__	:     list[str]								=		list(_lowerCamelCase							)
 lowerCamelCase__							,	lowerCamelCase__	:     Union[str, Any]								=		_vector[:-1], int(_vector[-1]							)
 lowerCamelCase__	:     list[int]								=		[int(_lowerCamelCase							) for digit in __vector]

 vector.reverse()
 for i, digit in enumerate(_lowerCamelCase							):
  if i & 1 == 0:
   lowerCamelCase__	:     int								=		digit * 2
   if doubled > 9:
    doubled -= 9
   check_digit += doubled
  else:
   check_digit += digit

 return check_digit % 10 == 0


if __name__ == "__main__":
      import doctest

      doctest.testmod()
      assert is_luhn("79927398713")
      assert not is_luhn("79927398714")

