





def 	A_       (  _lowerCAmelCase = "The quick brown fox jumps over the lazy dog"							,     )		->				bool:
 UpperCamelCase			:      Optional[int] 			=     set()

 # Replace all the whitespace in our sentence
 UpperCamelCase			:      Union[str, Any] 			=     input_str.replace(" "							,     ""  )
 for alpha in input_str:
  if "a" <= alpha.lower() <= "z":
   frequency.add(alpha.lower()  )
 return len(_lowerCAmelCase  ) == 26



def 	A_       (  _lowerCAmelCase = "The quick brown fox jumps over the lazy dog"							,     )		->				bool:
 UpperCamelCase			:      int 			=     [False] * 26
 for char in input_str:
  if char.islower():
   UpperCamelCase			:      Tuple 			=     True
  elif char.isupper():
   UpperCamelCase			:      str 			=     True
 return all(_lowerCAmelCase  )



def 	A_       (  _lowerCAmelCase = "The quick brown fox jumps over the lazy dog"							,     )		->				bool:
 return len({char for char in input_str.lower() if char.isalpha()}  ) == 26



def 	A_       (  )		->				None:
 from timeit import timeit

 UpperCamelCase			:      Any 			=     "from __main__ import is_pangram, is_pangram_faster, is_pangram_fastest"
 print(timeit("is_pangram()"							,     setup=_lowerCAmelCase  )  )
 print(timeit("is_pangram_faster()"							,     setup=_lowerCAmelCase  )  )
 print(timeit("is_pangram_fastest()"							,     setup=_lowerCAmelCase  )  )
 # 5.348480500048026, 2.6477354579837993, 1.8470395830227062
 # 5.036091582966037, 2.644472333951853,  1.8869528750656173


if __name__ == "__main__":
    import doctest

    doctest.testmod()
    benchmark()







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

import torch_xla.distributed.xla_multiprocessing as xmp



def 	A_       (  )		->				Dict:
 UpperCamelCase			:      Tuple 			=     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 	A_       (  )		->				Optional[int]:
 UpperCamelCase			:      Tuple 			=     parse_args()

 # Import training_script as a module.
 UpperCamelCase			:      Union[str, Any] 			=     Path(args.training_script  )
 sys.path.append(str(script_fpath.parent.resolve()  )  )
 UpperCamelCase			:      List[Any] 			=     script_fpath.stem
 UpperCamelCase			:      Optional[Any] 			=     importlib.import_module(_lowerCAmelCase  )

 # Patch sys.argv
 UpperCamelCase			:      List[Any] 			=     [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()
