




from typing import TYPE_CHECKING

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


__magic_name__     :     Dict  							=					{
    """configuration_openai""": ["""OPENAI_GPT_PRETRAINED_CONFIG_ARCHIVE_MAP""", """OpenAIGPTConfig"""],
    """tokenization_openai""": ["""OpenAIGPTTokenizer"""],
}

try:
      if not is_tokenizers_available():
            raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
      pass
else:
      __magic_name__     :     Optional[Any]  							=					["""OpenAIGPTTokenizerFast"""]

try:
      if not is_torch_available():
            raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
      pass
else:
      __magic_name__     :     Dict  							=					[
          """OPENAI_GPT_PRETRAINED_MODEL_ARCHIVE_LIST""",
          """OpenAIGPTDoubleHeadsModel""",
          """OpenAIGPTForSequenceClassification""",
          """OpenAIGPTLMHeadModel""",
          """OpenAIGPTModel""",
          """OpenAIGPTPreTrainedModel""",
          """load_tf_weights_in_openai_gpt""",
      ]

try:
      if not is_tf_available():
            raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
      pass
else:
      __magic_name__     :     Any  							=					[
          """TF_OPENAI_GPT_PRETRAINED_MODEL_ARCHIVE_LIST""",
          """TFOpenAIGPTDoubleHeadsModel""",
          """TFOpenAIGPTForSequenceClassification""",
          """TFOpenAIGPTLMHeadModel""",
          """TFOpenAIGPTMainLayer""",
          """TFOpenAIGPTModel""",
          """TFOpenAIGPTPreTrainedModel""",
      ]


if TYPE_CHECKING:
      from .configuration_openai import OPENAI_GPT_PRETRAINED_CONFIG_ARCHIVE_MAP, OpenAIGPTConfig
      from .tokenization_openai import OpenAIGPTTokenizer

      try:
            if not is_tokenizers_available():
                  raise OptionalDependencyNotAvailable()
      except OptionalDependencyNotAvailable:
            pass
      else:
            from .tokenization_openai_fast import OpenAIGPTTokenizerFast

      try:
            if not is_torch_available():
                  raise OptionalDependencyNotAvailable()
      except OptionalDependencyNotAvailable:
            pass
      else:
            from .modeling_openai import (
                OPENAI_GPT_PRETRAINED_MODEL_ARCHIVE_LIST,
                OpenAIGPTDoubleHeadsModel,
                OpenAIGPTForSequenceClassification,
                OpenAIGPTLMHeadModel,
                OpenAIGPTModel,
                OpenAIGPTPreTrainedModel,
                load_tf_weights_in_openai_gpt,
            )

      try:
            if not is_tf_available():
                  raise OptionalDependencyNotAvailable()
      except OptionalDependencyNotAvailable:
            pass
      else:
            from .modeling_tf_openai import (
                TF_OPENAI_GPT_PRETRAINED_MODEL_ARCHIVE_LIST,
                TFOpenAIGPTDoubleHeadsModel,
                TFOpenAIGPTForSequenceClassification,
                TFOpenAIGPTLMHeadModel,
                TFOpenAIGPTMainLayer,
                TFOpenAIGPTModel,
                TFOpenAIGPTPreTrainedModel,
            )

else:
      import sys

      __magic_name__     :     List[str]  							=					_LazyModule(__name__, globals()["""__file__"""], _import_structure, module_spec=__spec__)







def 		a_       (   __lowerCAmelCase      ,   __lowerCAmelCase							):
  lowerCAmelCase__								=			0
  for ele in arr:
    total_sum += product_sum(__lowerCAmelCase      ,   depth + 1							) if isinstance(__lowerCAmelCase      ,   __lowerCAmelCase							) else ele
  return total_sum * depth
def 		a_       (   __lowerCAmelCase							):
  return product_sum(__lowerCAmelCase      ,   1							)


if __name__ == "__main__":
      import doctest

      doctest.testmod()

