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


_UpperCAmelCase            =		"""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     UpperCamelCase						(	):
		'''simple docstring'''




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




def     UpperCamelCase						(	__lowercase						:			Tuple=None     ):
		'''simple docstring'''




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

		parser.add_argument(
		    '--config_file'						,default=_lowerCAmelCase						,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=_lowerCAmelCase     )
		return parser




def     UpperCamelCase						(	__lowercase						:			Optional[Any]     ):
		'''simple docstring'''




		A_		:    str         =				get_user_input()
		if args.config_file is not None:
				A_		:    Tuple         =				args.config_file
		else:
				if not os.path.isdir(_lowerCAmelCase     ):
						os.makedirs(_lowerCAmelCase     )
				A_		:    str         =				default_yaml_config_file

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




def     UpperCamelCase						(	):
		'''simple docstring'''




		A_		:    Dict         =				config_command_parser()
		A_		:    int         =				parser.parse_args()
		config_command(_lowerCAmelCase     )


if __name__ == "__main__":
	main()







from typing import TYPE_CHECKING

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


_UpperCAmelCase            =		{
    """configuration_bridgetower""": [
        """BRIDGETOWER_PRETRAINED_CONFIG_ARCHIVE_MAP""",
        """BridgeTowerConfig""",
        """BridgeTowerTextConfig""",
        """BridgeTowerVisionConfig""",
    ],
    """processing_bridgetower""": ["""BridgeTowerProcessor"""],
}

try:
	if not is_vision_available():
		raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
	pass
else:
	_UpperCAmelCase            =		["""BridgeTowerImageProcessor"""]

try:
	if not is_torch_available():
		raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
	pass
else:
	_UpperCAmelCase            =		[
	    """BRIDGETOWER_PRETRAINED_MODEL_ARCHIVE_LIST""",
	    """BridgeTowerForContrastiveLearning""",
	    """BridgeTowerForImageAndTextRetrieval""",
	    """BridgeTowerForMaskedLM""",
	    """BridgeTowerModel""",
	    """BridgeTowerPreTrainedModel""",
	]


if TYPE_CHECKING:
	from .configuration_bridgetower import (
	    BRIDGETOWER_PRETRAINED_CONFIG_ARCHIVE_MAP,
	    BridgeTowerConfig,
	    BridgeTowerTextConfig,
	    BridgeTowerVisionConfig,
	)
	from .processing_bridgetower import BridgeTowerProcessor

	try:
		if not is_vision_available():
			raise OptionalDependencyNotAvailable()
	except OptionalDependencyNotAvailable:
		pass
	else:
		from .image_processing_bridgetower import BridgeTowerImageProcessor

	try:
		if not is_torch_available():
			raise OptionalDependencyNotAvailable()
	except OptionalDependencyNotAvailable:
		pass
	else:
		from .modeling_bridgetower import (
		    BRIDGETOWER_PRETRAINED_MODEL_ARCHIVE_LIST,
		    BridgeTowerForContrastiveLearning,
		    BridgeTowerForImageAndTextRetrieval,
		    BridgeTowerForMaskedLM,
		    BridgeTowerModel,
		    BridgeTowerPreTrainedModel,
		)


else:
	import sys

	_UpperCAmelCase            =		_LazyModule(__name__, globals()["""__file__"""], _import_structure)






