from typing import TYPE_CHECKING

from ...utils import OptionalDependencyNotAvailable, _LazyModule, is_torch_available


a_		       =   {
    """configuration_megatron_bert""": ["""MEGATRON_BERT_PRETRAINED_CONFIG_ARCHIVE_MAP""", """MegatronBertConfig"""],
}

try:
       if not is_torch_available():
              raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
       pass
else:
       a_		       =   [
           """MEGATRON_BERT_PRETRAINED_MODEL_ARCHIVE_LIST""",
           """MegatronBertForCausalLM""",
           """MegatronBertForMaskedLM""",
           """MegatronBertForMultipleChoice""",
           """MegatronBertForNextSentencePrediction""",
           """MegatronBertForPreTraining""",
           """MegatronBertForQuestionAnswering""",
           """MegatronBertForSequenceClassification""",
           """MegatronBertForTokenClassification""",
           """MegatronBertModel""",
           """MegatronBertPreTrainedModel""",
       ]

if TYPE_CHECKING:
       from .configuration_megatron_bert import MEGATRON_BERT_PRETRAINED_CONFIG_ARCHIVE_MAP, MegatronBertConfig

       try:
              if not is_torch_available():
                     raise OptionalDependencyNotAvailable()
       except OptionalDependencyNotAvailable:
              pass
       else:
              from .modeling_megatron_bert import (
                  MEGATRON_BERT_PRETRAINED_MODEL_ARCHIVE_LIST,
                  MegatronBertForCausalLM,
                  MegatronBertForMaskedLM,
                  MegatronBertForMultipleChoice,
                  MegatronBertForNextSentencePrediction,
                  MegatronBertForPreTraining,
                  MegatronBertForQuestionAnswering,
                  MegatronBertForSequenceClassification,
                  MegatronBertForTokenClassification,
                  MegatronBertModel,
                  MegatronBertPreTrainedModel,
              )

else:
       import sys

       a_		       =   _LazyModule(__name__, globals()["""__file__"""], _import_structure, module_spec=__spec__)










# this script reports modified .py files under the desired list of top-level sub-dirs passed as a list of arguments, e.g.:
#   python ./utils/get_modified_files.py utils src tests examples
#
# it uses git to find the forking point and which files were modified - i.e. files not under git won't be considered
# since the output of this script is fed into Makefile commands it doesn't print a newline after the results

import re
import subprocess
import sys


UpperCamelCase__           =			subprocess.check_output("git merge-base main HEAD".split()).decode("utf-8")
UpperCamelCase__           =			subprocess.check_output(f"""git diff --name-only {fork_point_sha}""".split()).decode("utf-8").split()

UpperCamelCase__           =			"|".join(sys.argv[1:])
UpperCamelCase__           =			re.compile(rf"""^({joined_dirs}).*?\.py$""")

UpperCamelCase__           =			[x for x in modified_files if regex.match(x)]
print(" ".join(relevant_modified_files), end="")




