




"""simple docstring"""






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


lowercase__  		=		"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   _snake_case    (       ):
				_lowerCamelCase  :    List[Any]					=					_ask_options(
				    'In which compute environment are you running?'							,					['This machine', 'AWS (Amazon SageMaker)']							,					_convert_compute_environment							,					)
				if compute_environment == ComputeEnvironment.AMAZON_SAGEMAKER:
								_lowerCamelCase  :    Optional[Any]					=					get_sagemaker_input()
				else:
								_lowerCamelCase  :    int					=					get_cluster_input()
				return config







def   _snake_case    (       lowercase__=None	):





				if subparsers is not None:
								_lowerCamelCase  :    str					=					subparsers.add_parser('config'							,					description=UpperCamelCase__	)
				else:
								_lowerCamelCase  :    Optional[int]					=					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   _snake_case    (       lowercase__	):
				_lowerCamelCase  :    List[Any]					=					get_user_input()
				if args.config_file is not None:
								_lowerCamelCase  :    Tuple					=					args.config_file
				else:
								if not os.path.isdir(UpperCamelCase__	):
												os.makedirs(UpperCamelCase__	)
								_lowerCamelCase  :    List[Any]					=					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   _snake_case    (       ):
				_lowerCamelCase  :    Dict					=					config_command_parser()
				_lowerCamelCase  :    List[Any]					=					parser.parse_args()
				config_command(UpperCamelCase__	)


if __name__ == "__main__":
			main()





"""simple docstring"""






import unittest

from transformers import is_vision_available
from transformers.pipelines import pipeline
from transformers.testing_utils import (
    is_pipeline_test,
    nested_simplify,
    require_tf,
    require_torch,
    require_vision,
    slow,
)

from .test_pipelines_common import ANY


if is_vision_available():
			from PIL import Image
else:






			class lowerCAmelCase__			:






						'''simple docstring'''



						@staticmethod
						def       A_					(						*lowercase						,   **lowercase						):
										pass






@is_pipeline_test
@require_vision
class lowerCAmelCase__			(  unittest.TestCase		):






			'''simple docstring'''



			@require_torch
			def       A_					(						self						):
							_lowerCamelCase  :    int					=					pipeline(
							    model='hf-internal-testing/tiny-random-clip-zero-shot-image-classification'						,   )
							_lowerCamelCase  :    List[Any]					=					Image.open('./tests/fixtures/tests_samples/COCO/000000039769.png'						)
							_lowerCamelCase  :    List[str]					=					image_classifier(lowercase						,   candidate_labels=['a', 'b', 'c']						)

							# The floating scores are so close, we enter floating error approximation and the order is not guaranteed across
							# python and torch versions.
							self.assertIn(
							    nested_simplify(lowercase						)						,   [
							        [{'score': 0.3_33, 'label': 'a'}, {'score': 0.3_33, 'label': 'b'}, {'score': 0.3_33, 'label': 'c'}],
							        [{'score': 0.3_33, 'label': 'a'}, {'score': 0.3_33, 'label': 'c'}, {'score': 0.3_33, 'label': 'b'}],
							    ]						,   )

							_lowerCamelCase  :    Optional[Any]					=					image_classifier([image] * 5						,   candidate_labels=['A', 'B', 'C']						,   batch_size=2						)
							self.assertEqual(
							    nested_simplify(lowercase						)						,   [
							        [
							            {'score': 0.3_33, 'label': ANY(lowercase						)},
							            {'score': 0.3_33, 'label': ANY(lowercase						)},
							            {'score': 0.3_33, 'label': ANY(lowercase						)},
							        ],
							        [
							            {'score': 0.3_33, 'label': ANY(lowercase						)},
							            {'score': 0.3_33, 'label': ANY(lowercase						)},
							            {'score': 0.3_33, 'label': ANY(lowercase						)},
							        ],
							        [
							            {'score': 0.3_33, 'label': ANY(lowercase						)},
							            {'score': 0.3_33, 'label': ANY(lowercase						)},
							            {'score': 0.3_33, 'label': ANY(lowercase						)},
							        ],
							        [
							            {'score': 0.3_33, 'label': ANY(lowercase						)},
							            {'score': 0.3_33, 'label': ANY(lowercase						)},
							            {'score': 0.3_33, 'label': ANY(lowercase						)},
							        ],
							        [
							            {'score': 0.3_33, 'label': ANY(lowercase						)},
							            {'score': 0.3_33, 'label': ANY(lowercase						)},
							            {'score': 0.3_33, 'label': ANY(lowercase						)},
							        ],
							    ]						,   )
			@require_tf
			def       A_					(						self						):
							_lowerCamelCase  :    Optional[Any]					=					pipeline(
							    model='hf-internal-testing/tiny-random-clip-zero-shot-image-classification'						,   framework='tf'						)
							_lowerCamelCase  :    Tuple					=					Image.open('./tests/fixtures/tests_samples/COCO/000000039769.png'						)
							_lowerCamelCase  :    Optional[int]					=					image_classifier(lowercase						,   candidate_labels=['a', 'b', 'c']						)

							self.assertEqual(
							    nested_simplify(lowercase						)						,   [{'score': 0.3_33, 'label': 'a'}, {'score': 0.3_33, 'label': 'b'}, {'score': 0.3_33, 'label': 'c'}]						,   )

							_lowerCamelCase  :    Optional[Any]					=					image_classifier([image] * 5						,   candidate_labels=['A', 'B', 'C']						,   batch_size=2						)
							self.assertEqual(
							    nested_simplify(lowercase						)						,   [
							        [
							            {'score': 0.3_33, 'label': ANY(lowercase						)},
							            {'score': 0.3_33, 'label': ANY(lowercase						)},
							            {'score': 0.3_33, 'label': ANY(lowercase						)},
							        ],
							        [
							            {'score': 0.3_33, 'label': ANY(lowercase						)},
							            {'score': 0.3_33, 'label': ANY(lowercase						)},
							            {'score': 0.3_33, 'label': ANY(lowercase						)},
							        ],
							        [
							            {'score': 0.3_33, 'label': ANY(lowercase						)},
							            {'score': 0.3_33, 'label': ANY(lowercase						)},
							            {'score': 0.3_33, 'label': ANY(lowercase						)},
							        ],
							        [
							            {'score': 0.3_33, 'label': ANY(lowercase						)},
							            {'score': 0.3_33, 'label': ANY(lowercase						)},
							            {'score': 0.3_33, 'label': ANY(lowercase						)},
							        ],
							        [
							            {'score': 0.3_33, 'label': ANY(lowercase						)},
							            {'score': 0.3_33, 'label': ANY(lowercase						)},
							            {'score': 0.3_33, 'label': ANY(lowercase						)},
							        ],
							    ]						,   )
			@slow
			@require_torch
			def       A_					(						self						):
							_lowerCamelCase  :    Tuple					=					pipeline(
							    task='zero-shot-image-classification'						,   model='openai/clip-vit-base-patch32'						,   )
							# This is an image of 2 cats with remotes and no planes
							_lowerCamelCase  :    Optional[Any]					=					Image.open('./tests/fixtures/tests_samples/COCO/000000039769.png'						)
							_lowerCamelCase  :    Optional[Any]					=					image_classifier(lowercase						,   candidate_labels=['cat', 'plane', 'remote']						)

							self.assertEqual(
							    nested_simplify(lowercase						)						,   [
							        {'score': 0.5_11, 'label': 'remote'},
							        {'score': 0.4_85, 'label': 'cat'},
							        {'score': 0.0_04, 'label': 'plane'},
							    ]						,   )

							_lowerCamelCase  :    Dict					=					image_classifier([image] * 5						,   candidate_labels=['cat', 'plane', 'remote']						,   batch_size=2						)
							self.assertEqual(
							    nested_simplify(lowercase						)						,   [
							        [
							            {'score': 0.5_11, 'label': 'remote'},
							            {'score': 0.4_85, 'label': 'cat'},
							            {'score': 0.0_04, 'label': 'plane'},
							        ],
							    ]
							    * 5						,   )






			@slow
			@require_tf
			def       A_					(						self						):
							_lowerCamelCase  :    List[str]					=					pipeline(
							    task='zero-shot-image-classification'						,   model='openai/clip-vit-base-patch32'						,   framework='tf'						)
							# This is an image of 2 cats with remotes and no planes
							_lowerCamelCase  :    List[str]					=					Image.open('./tests/fixtures/tests_samples/COCO/000000039769.png'						)
							_lowerCamelCase  :    Tuple					=					image_classifier(lowercase						,   candidate_labels=['cat', 'plane', 'remote']						)
							self.assertEqual(
							    nested_simplify(lowercase						)						,   [
							        {'score': 0.5_11, 'label': 'remote'},
							        {'score': 0.4_85, 'label': 'cat'},
							        {'score': 0.0_04, 'label': 'plane'},
							    ]						,   )

							_lowerCamelCase  :    Dict					=					image_classifier([image] * 5						,   candidate_labels=['cat', 'plane', 'remote']						,   batch_size=2						)
							self.assertEqual(
							    nested_simplify(lowercase						)						,   [
							        [
							            {'score': 0.5_11, 'label': 'remote'},
							            {'score': 0.4_85, 'label': 'cat'},
							            {'score': 0.0_04, 'label': 'plane'},
							        ],
							    ]
							    * 5						,   )