






# 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__	:			List[str]			   = '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   a			(						):






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






def   a			(						lowerCamelCase_=None				):






				'''simple docstring'''
				if subparsers is not None:
								lowercase__    =			subparsers.add_parser('''config'''		,   description=lowerCamelCase_				)
				else:
								lowercase__    =			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   a			(						lowerCamelCase_				):






				'''simple docstring'''
				lowercase__    =			get_user_input()
				if args.config_file is not None:
								lowercase__    =			args.config_file
				else:
								if not os.path.isdir(lowerCamelCase_				):
												os.makedirs(lowerCamelCase_				)
								lowercase__    =			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   a			(						):






				'''simple docstring'''
				lowercase__    =			config_command_parser()
				lowercase__    =			parser.parse_args()
				config_command(lowerCamelCase_				)


if __name__ == "__main__":
							main()












from math import asin, atan, cos, radians, sin, sqrt, tan

A__	:			Optional[int]			   = 637_8137.0
A__	:			List[str]			   = 635_6752.31_4245
A__	:			Union[str, Any]			   = 6_37_81_37






def   a			(						lowerCamelCase_		,   lowerCamelCase_		,   lowerCamelCase_		,   lowerCamelCase_				):






				'''simple docstring'''
				lowercase__    =			(AXIS_A - AXIS_B) / AXIS_A
				lowercase__    =			atan((1 - flattening) * tan(radians(lowerCamelCase_				)				)				)
				lowercase__    =			atan((1 - flattening) * tan(radians(lowerCamelCase_				)				)				)
				lowercase__    =			radians(lowerCamelCase_				)
				lowercase__    =			radians(lowerCamelCase_				)
				# Equation
				lowercase__    =			sin((phi_a - phi_a) / 2				)
				lowercase__    =			sin((lambda_a - lambda_a) / 2				)
				# Square both values
				sin_sq_phi *= sin_sq_phi
				sin_sq_lambda *= sin_sq_lambda
				lowercase__    =			sqrt(sin_sq_phi + (cos(lowerCamelCase_				) * cos(lowerCamelCase_				) * sin_sq_lambda)				)
				return 2 * RADIUS * asin(lowerCamelCase_				)


if __name__ == "__main__":
							import doctest

							doctest.testmod()




