


'''simple docstring'''

from typing import TYPE_CHECKING

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


a_  :				Tuple						= {
    "configuration_lxmert": ["LXMERT_PRETRAINED_CONFIG_ARCHIVE_MAP", "LxmertConfig"],
    "tokenization_lxmert": ["LxmertTokenizer"],
}

try:
     if not is_tokenizers_available():
          raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
     pass
else:
     a_  :				List[Any]						= ["LxmertTokenizerFast"]

try:
     if not is_torch_available():
          raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
     pass
else:
     a_  :				int						= [
         "LxmertEncoder",
         "LxmertForPreTraining",
         "LxmertForQuestionAnswering",
         "LxmertModel",
         "LxmertPreTrainedModel",
         "LxmertVisualFeatureEncoder",
         "LxmertXLayer",
     ]

try:
     if not is_tf_available():
          raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
     pass
else:
     a_  :				Union[str, Any]						= [
         "TF_LXMERT_PRETRAINED_MODEL_ARCHIVE_LIST",
         "TFLxmertForPreTraining",
         "TFLxmertMainLayer",
         "TFLxmertModel",
         "TFLxmertPreTrainedModel",
         "TFLxmertVisualFeatureEncoder",
     ]


if TYPE_CHECKING:
     from .configuration_lxmert import LXMERT_PRETRAINED_CONFIG_ARCHIVE_MAP, LxmertConfig
     from .tokenization_lxmert import LxmertTokenizer

     try:
          if not is_tokenizers_available():
               raise OptionalDependencyNotAvailable()
     except OptionalDependencyNotAvailable:
          pass
     else:
          from .tokenization_lxmert_fast import LxmertTokenizerFast

     try:
          if not is_torch_available():
               raise OptionalDependencyNotAvailable()
     except OptionalDependencyNotAvailable:
          pass
     else:
          from .modeling_lxmert import (
              LxmertEncoder,
              LxmertForPreTraining,
              LxmertForQuestionAnswering,
              LxmertModel,
              LxmertPreTrainedModel,
              LxmertVisualFeatureEncoder,
              LxmertXLayer,
          )

     try:
          if not is_tf_available():
               raise OptionalDependencyNotAvailable()
     except OptionalDependencyNotAvailable:
          pass
     else:
          from .modeling_tf_lxmert import (
              TF_LXMERT_PRETRAINED_MODEL_ARCHIVE_LIST,
              TFLxmertForPreTraining,
              TFLxmertMainLayer,
              TFLxmertModel,
              TFLxmertPreTrainedModel,
              TFLxmertVisualFeatureEncoder,
          )

else:
     import sys

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









from typing import Union

import fire
import torch
from tqdm import tqdm



def 					UpperCAmelCase__     (   lowerCamelCase,	lowerCamelCase = "cpu",	lowerCamelCase = None      ):
  lowercase			:Optional[Any]							=  torch.load(lowerCamelCase,	map_location=lowerCamelCase      )
  for k, v in tqdm(state_dict.items()      ):
    if not isinstance(lowerCamelCase,	torch.Tensor      ):
      raise TypeError("FP16 conversion only works on paths that are saved state dicts, like pytorch_model.bin"      )
    lowercase			:List[Any]							=  v.half()
  if save_path is None:  # overwrite src_path
    lowercase			:Optional[Any]							=  src_path
  torch.save(lowerCamelCase,	lowerCamelCase      )


if __name__ == "__main__":
     fire.Fire(convert)



