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

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

						return parser.parse_args()



def 			_a		(	):
						_SCREAMING_SNAKE_CASE				= parse_args()

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

						# Patch sys.argv
						_SCREAMING_SNAKE_CASE				= [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 typing import TYPE_CHECKING

from ...utils import (
    OptionalDependencyNotAvailable,
    _LazyModule,
    is_tf_available,
    is_tokenizers_available,
    is_torch_available,
)


_snake_case				:   int     =				{
    """configuration_longformer""": [
        """LONGFORMER_PRETRAINED_CONFIG_ARCHIVE_MAP""",
        """LongformerConfig""",
        """LongformerOnnxConfig""",
    ],
    """tokenization_longformer""": ["""LongformerTokenizer"""],
}

try:
						if not is_tokenizers_available():
												raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
						pass
else:
						_snake_case				:   Optional[int]     =				["""LongformerTokenizerFast"""]

try:
						if not is_torch_available():
												raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
						pass
else:
						_snake_case				:   int     =				[
						    """LONGFORMER_PRETRAINED_MODEL_ARCHIVE_LIST""",
						    """LongformerForMaskedLM""",
						    """LongformerForMultipleChoice""",
						    """LongformerForQuestionAnswering""",
						    """LongformerForSequenceClassification""",
						    """LongformerForTokenClassification""",
						    """LongformerModel""",
						    """LongformerPreTrainedModel""",
						    """LongformerSelfAttention""",
						]

try:
						if not is_tf_available():
												raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
						pass
else:
						_snake_case				:   Tuple     =				[
						    """TF_LONGFORMER_PRETRAINED_MODEL_ARCHIVE_LIST""",
						    """TFLongformerForMaskedLM""",
						    """TFLongformerForMultipleChoice""",
						    """TFLongformerForQuestionAnswering""",
						    """TFLongformerForSequenceClassification""",
						    """TFLongformerForTokenClassification""",
						    """TFLongformerModel""",
						    """TFLongformerPreTrainedModel""",
						    """TFLongformerSelfAttention""",
						]


if TYPE_CHECKING:
						from .configuration_longformer import (
						    LONGFORMER_PRETRAINED_CONFIG_ARCHIVE_MAP,
						    LongformerConfig,
						    LongformerOnnxConfig,
						)
						from .tokenization_longformer import LongformerTokenizer

						try:
												if not is_tokenizers_available():
																		raise OptionalDependencyNotAvailable()
						except OptionalDependencyNotAvailable:
												pass
						else:
												from .tokenization_longformer_fast import LongformerTokenizerFast

						try:
												if not is_torch_available():
																		raise OptionalDependencyNotAvailable()
						except OptionalDependencyNotAvailable:
												pass
						else:
												from .modeling_longformer import (
												    LONGFORMER_PRETRAINED_MODEL_ARCHIVE_LIST,
												    LongformerForMaskedLM,
												    LongformerForMultipleChoice,
												    LongformerForQuestionAnswering,
												    LongformerForSequenceClassification,
												    LongformerForTokenClassification,
												    LongformerModel,
												    LongformerPreTrainedModel,
												    LongformerSelfAttention,
												)

						try:
												if not is_tf_available():
																		raise OptionalDependencyNotAvailable()
						except OptionalDependencyNotAvailable:
												pass
						else:
												from .modeling_tf_longformer import (
												    TF_LONGFORMER_PRETRAINED_MODEL_ARCHIVE_LIST,
												    TFLongformerForMaskedLM,
												    TFLongformerForMultipleChoice,
												    TFLongformerForQuestionAnswering,
												    TFLongformerForSequenceClassification,
												    TFLongformerForTokenClassification,
												    TFLongformerModel,
												    TFLongformerPreTrainedModel,
												    TFLongformerSelfAttention,
												)

else:
						import sys

						_snake_case				:   Dict     =				_LazyModule(__name__, globals()["""__file__"""], _import_structure, module_spec=__spec__)