

# Copyright 2021 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.

import argparse
import os

from accelerate.utils import ComputeEnvironment

from .cluster import get_cluster_input
from .config_args import cache_dir, default_config_file, default_yaml_config_file, load_config_from_file  # noqa: F401
from .config_utils import _ask_field, _ask_options, _convert_compute_environment  # noqa: F401
from .sagemaker import get_sagemaker_input


a_    		=      "Launches a series of prompts to create and save a `default_config.yaml` configuration file for your training system. Should always be ran first on your machine"


def        __lowerCAmelCase    (       )		->							Any:
 '''simple docstring'''


 SCREAMING_SNAKE_CASE								=			_ask_options(
     'In which compute environment are you running?'		,							['This machine', 'AWS (Amazon SageMaker)']		,							_convert_compute_environment		,							)
 if compute_environment == ComputeEnvironment.AMAZON_SAGEMAKER:
  SCREAMING_SNAKE_CASE								=			get_sagemaker_input()
 else:
  SCREAMING_SNAKE_CASE								=			get_cluster_input()
 return config


def        __lowerCAmelCase    (       _UpperCamelCase		:  Any=None	)		->							Dict:
 '''simple docstring'''


 if subparsers is not None:
  SCREAMING_SNAKE_CASE								=			subparsers.add_parser('config'		,							description=_UpperCamelCase	)
 else:
  SCREAMING_SNAKE_CASE								=			argparse.ArgumentParser('Accelerate config command'		,							description=_UpperCamelCase	)

 parser.add_argument(
     '--config_file'		,							default=_UpperCamelCase		,							help=(
         'The path to use to store the config file. 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\'.'
     )		,							)

 if subparsers is not None:
  parser.set_defaults(func=_UpperCamelCase	)
 return parser


def        __lowerCAmelCase    (       _UpperCamelCase		:  str	)		->							Union[str, Any]:
 '''simple docstring'''


 SCREAMING_SNAKE_CASE								=			get_user_input()
 if args.config_file is not None:
  SCREAMING_SNAKE_CASE								=			args.config_file
 else:
  if not os.path.isdir(_UpperCamelCase	):
   os.makedirs(_UpperCamelCase	)
  SCREAMING_SNAKE_CASE								=			default_yaml_config_file

 if config_file.endswith('.json'	):
  config.to_json_file(_UpperCamelCase	)
 else:
  config.to_yaml_file(_UpperCamelCase	)
 print(f"""accelerate configuration saved at {config_file}"""	)


def        __lowerCAmelCase    (       )		->							Tuple:
 '''simple docstring'''


 SCREAMING_SNAKE_CASE								=			config_command_parser()
 SCREAMING_SNAKE_CASE								=			parser.parse_args()
 config_command(_UpperCamelCase	)


if __name__ == "__main__":
      main()




from ...utils import (
    OptionalDependencyNotAvailable,
    is_torch_available,
    is_transformers_available,
    is_transformers_version,
)


try:
      if not (is_transformers_available() and is_torch_available()):
            raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
      from ...utils.dummy_torch_and_transformers_objects import (
          ImageTextPipelineOutput,
          UniDiffuserPipeline,
      )
else:
      from .modeling_text_decoder import UniDiffuserTextDecoder
      from .modeling_uvit import UniDiffuserModel, UTransformeraDModel
      from .pipeline_unidiffuser import ImageTextPipelineOutput, UniDiffuserPipeline

