




# Copyright 2022 The HuggingFace Team. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

from pathlib import Path

from .config_args import default_config_file, load_config_from_file
from .config_utils import SubcommandHelpFormatter


_lowerCAmelCase  :				List[Any]				=				"Update an existing config file with the latest defaults while maintaining the old configuration."



def   lowerCAmelCase						(						_lowerCAmelCase							:				Union[str, Any]		):




 """simple docstring"""







 UpperCAmelCase__								=  args.config_file
 if config_file is None and Path(_lowerCAmelCase		).exists():
  UpperCAmelCase__								=  default_config_file
 elif not Path(_lowerCAmelCase		).exists():
  raise ValueError(F'''The passed config file located at {config_file} doesn\'t exist.'''		)
 UpperCAmelCase__								=  load_config_from_file(_lowerCAmelCase		)

 if config_file.endswith(".json"		):
  config.to_json_file(_lowerCAmelCase		)
 else:
  config.to_yaml_file(_lowerCAmelCase		)
 return config_file



def   lowerCAmelCase						(						_lowerCAmelCase							:				Dict  ,							_lowerCAmelCase							:				Optional[int]		):




 """simple docstring"""







 UpperCAmelCase__								=  parser.add_parser("update"  ,							parents=_lowerCAmelCase  ,							help=_lowerCAmelCase  ,							formatter_class=_lowerCAmelCase		)
 parser.add_argument(
     "--config_file"  ,							default=_lowerCAmelCase  ,							help=(
         "The path to the config file to update. Will default to a file named default_config.yaml in the cache "
         "location, which is the content of the environment `HF_HOME` suffixed with 'accelerate', or if you don't have "
         "such an environment variable, your cache directory ('~/.cache' or the content of `XDG_CACHE_HOME`) suffixed "
         "with 'huggingface'."
     )  ,							)

 parser.set_defaults(func=_lowerCAmelCase		)
 return parser



def   lowerCAmelCase						(						_lowerCAmelCase							:				Dict		):




 """simple docstring"""







 UpperCAmelCase__								=  update_config(_lowerCAmelCase		)
 print(F'''Sucessfully updated the configuration file at {config_file}.'''		)











from typing import TYPE_CHECKING

from ...utils import OptionalDependencyNotAvailable, _LazyModule, is_tf_available, is_torch_available


_lowerCAmelCase  :				str						=				{
    "configuration_esm": ["ESM_PRETRAINED_CONFIG_ARCHIVE_MAP", "EsmConfig"],
    "tokenization_esm": ["EsmTokenizer"],
}

try:
  if not is_torch_available():
    raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
  pass
else:
  _lowerCAmelCase  :				Union[str, Any]						=				[
      "ESM_PRETRAINED_MODEL_ARCHIVE_LIST",
      "EsmForMaskedLM",
      "EsmForSequenceClassification",
      "EsmForTokenClassification",
      "EsmModel",
      "EsmPreTrainedModel",
  ]
  _lowerCAmelCase  :				Tuple						=				["EsmForProteinFolding", "EsmFoldPreTrainedModel"]

try:
  if not is_tf_available():
    raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
  pass
else:
  _lowerCAmelCase  :				str						=				[
      "TF_ESM_PRETRAINED_MODEL_ARCHIVE_LIST",
      "TFEsmForMaskedLM",
      "TFEsmForSequenceClassification",
      "TFEsmForTokenClassification",
      "TFEsmModel",
      "TFEsmPreTrainedModel",
  ]

if TYPE_CHECKING:
  from .configuration_esm import ESM_PRETRAINED_CONFIG_ARCHIVE_MAP, EsmConfig
  from .tokenization_esm import EsmTokenizer

  try:
    if not is_torch_available():
      raise OptionalDependencyNotAvailable()
  except OptionalDependencyNotAvailable:
    pass
  else:
    from .modeling_esm import (
        ESM_PRETRAINED_MODEL_ARCHIVE_LIST,
        EsmForMaskedLM,
        EsmForSequenceClassification,
        EsmForTokenClassification,
        EsmModel,
        EsmPreTrainedModel,
    )
    from .modeling_esmfold import EsmFoldPreTrainedModel, EsmForProteinFolding

  try:
    if not is_tf_available():
      raise OptionalDependencyNotAvailable()
  except OptionalDependencyNotAvailable:
    pass
  else:
    from .modeling_tf_esm import (
        TF_ESM_PRETRAINED_MODEL_ARCHIVE_LIST,
        TFEsmForMaskedLM,
        TFEsmForSequenceClassification,
        TFEsmForTokenClassification,
        TFEsmModel,
        TFEsmPreTrainedModel,
    )


else:
  import sys

  _lowerCAmelCase  :				List[Any]						=				_LazyModule(__name__, globals()["__file__"], _import_structure)





