






import argparse

from diffusers.pipelines.stable_diffusion.convert_from_ckpt import download_controlnet_from_original_ckpt


if __name__ == "__main__":
				A        =			argparse.ArgumentParser()

				parser.add_argument(
				    '--checkpoint_path', default=None, type=str, required=True, help='Path to the checkpoint to convert.'
				)
				parser.add_argument(
				    '--original_config_file',
				    type=str,
				    required=True,
				    help='The YAML config file corresponding to the original architecture.',
				)
				parser.add_argument(
				    '--num_in_channels',
				    default=None,
				    type=int,
				    help='The number of input channels. If `None` number of input channels will be automatically inferred.',
				)
				parser.add_argument(
				    '--image_size',
				    default=512,
				    type=int,
				    help=(
				        'The image size that the model was trained on. Use 512 for Stable Diffusion v1.X and Stable Siffusion v2'
				        ' Base. Use 768 for Stable Diffusion v2.'
				    ),
				)
				parser.add_argument(
				    '--extract_ema',
				    action='store_true',
				    help=(
				        'Only relevant for checkpoints that have both EMA and non-EMA weights. Whether to extract the EMA weights'
				        ' or not. Defaults to `False`. Add `--extract_ema` to extract the EMA weights. EMA weights usually yield'
				        ' higher quality images for inference. Non-EMA weights are usually better to continue fine-tuning.'
				    ),
				)
				parser.add_argument(
				    '--upcast_attention',
				    action='store_true',
				    help=(
				        'Whether the attention computation should always be upcasted. This is necessary when running stable'
				        ' diffusion 2.1.'
				    ),
				)
				parser.add_argument(
				    '--from_safetensors',
				    action='store_true',
				    help='If `--checkpoint_path` is in `safetensors` format, load checkpoint with safetensors instead of PyTorch.',
				)
				parser.add_argument(
				    '--to_safetensors',
				    action='store_true',
				    help='Whether to store pipeline in safetensors format or not.',
				)
				parser.add_argument('--dump_path', default=None, type=str, required=True, help='Path to the output model.')
				parser.add_argument('--device', type=str, help='Device to use (e.g. cpu, cuda:0, cuda:1, etc.)')



				def 					_lowerCamelCase(			lowerCAmelCase__				:		str      ):





								'''simple docstring'''







								if string == "True":
												return True
								elif string == "False":
												return False
								else:
												raise ValueError(F'''could not parse string as bool {string}'''      )

				parser.add_argument(
				    '--use_linear_projection', help='Override for use linear projection', required=False, type=parse_bool
				)

				parser.add_argument('--cross_attention_dim', help='Override for cross attention_dim', required=False, type=int)

				A        =			parser.parse_args()

				A        =			download_controlnet_from_original_ckpt(
				    checkpoint_path=args.checkpoint_path,
				    original_config_file=args.original_config_file,
				    image_size=args.image_size,
				    extract_ema=args.extract_ema,
				    num_in_channels=args.num_in_channels,
				    upcast_attention=args.upcast_attention,
				    from_safetensors=args.from_safetensors,
				    device=args.device,
				    use_linear_projection=args.use_linear_projection,
				    cross_attention_dim=args.cross_attention_dim,
				)


				controlnet.save_pretrained(args.dump_path, safe_serialization=args.to_safetensors)







from tempfile import TemporaryDirectory
from unittest import TestCase
from unittest.mock import MagicMock, patch

from transformers import AutoModel, TFAutoModel
from transformers.onnx import FeaturesManager
from transformers.testing_utils import SMALL_MODEL_IDENTIFIER, require_tf, require_torch


@require_torch
@require_tf
class 							__a							(  __A						):





		'''simple docstring'''



		def   __snake_case			(						self       ):
						SCREAMING_SNAKE_CASE_   :	Any													=   SMALL_MODEL_IDENTIFIER
						SCREAMING_SNAKE_CASE_   :	List[Any]													=   'pt'
						SCREAMING_SNAKE_CASE_   :	Tuple													=   'tf'


		def   __snake_case			(						self ,    UpperCamelCase__       ):
						SCREAMING_SNAKE_CASE_   :	Dict													=   AutoModel.from_pretrained(self.test_model       )
						model_pt.save_pretrained(UpperCamelCase__       )


		def   __snake_case			(						self ,    UpperCamelCase__       ):
						SCREAMING_SNAKE_CASE_   :	int													=   TFAutoModel.from_pretrained(self.test_model ,    from_pt=UpperCamelCase__       )
						model_tf.save_pretrained(UpperCamelCase__       )


		def   __snake_case			(						self       ):
						SCREAMING_SNAKE_CASE_   :	Union[str, Any]													=   'mock_framework'

						# Framework provided - return whatever the user provides
						SCREAMING_SNAKE_CASE_   :	Union[str, Any]													=   FeaturesManager.determine_framework(self.test_model ,    UpperCamelCase__       )
						self.assertEqual(UpperCamelCase__ ,    UpperCamelCase__       )

						# Local checkpoint and framework provided - return provided framework
						# PyTorch checkpoint
						with TemporaryDirectory() as local_pt_ckpt:
										self._setup_pt_ckpt(UpperCamelCase__       )
										SCREAMING_SNAKE_CASE_   :	Dict													=   FeaturesManager.determine_framework(UpperCamelCase__ ,    UpperCamelCase__       )
										self.assertEqual(UpperCamelCase__ ,    UpperCamelCase__       )

						# TensorFlow checkpoint
						with TemporaryDirectory() as local_tf_ckpt:
										self._setup_tf_ckpt(UpperCamelCase__       )
										SCREAMING_SNAKE_CASE_   :	List[str]													=   FeaturesManager.determine_framework(UpperCamelCase__ ,    UpperCamelCase__       )
										self.assertEqual(UpperCamelCase__ ,    UpperCamelCase__       )


		def   __snake_case			(						self       ):
						# PyTorch checkpoint
						with TemporaryDirectory() as local_pt_ckpt:
										self._setup_pt_ckpt(UpperCamelCase__       )
										SCREAMING_SNAKE_CASE_   :	Optional[Any]													=   FeaturesManager.determine_framework(UpperCamelCase__       )
										self.assertEqual(UpperCamelCase__ ,    self.framework_pt       )

						# TensorFlow checkpoint
						with TemporaryDirectory() as local_tf_ckpt:
										self._setup_tf_ckpt(UpperCamelCase__       )
										SCREAMING_SNAKE_CASE_   :	Union[str, Any]													=   FeaturesManager.determine_framework(UpperCamelCase__       )
										self.assertEqual(UpperCamelCase__ ,    self.framework_tf       )

						# Invalid local checkpoint
						with TemporaryDirectory() as local_invalid_ckpt:
										with self.assertRaises(UpperCamelCase__       ):
														SCREAMING_SNAKE_CASE_   :	Any													=   FeaturesManager.determine_framework(UpperCamelCase__       )






		def   __snake_case			(						self       ):
						SCREAMING_SNAKE_CASE_   :	Optional[Any]													=   MagicMock(return_value=UpperCamelCase__       )
						with patch('transformers.onnx.features.is_tf_available' ,    UpperCamelCase__       ):
										SCREAMING_SNAKE_CASE_   :	str													=   FeaturesManager.determine_framework(self.test_model       )
										self.assertEqual(UpperCamelCase__ ,    self.framework_pt       )

						# PyTorch not in environment -> use TensorFlow
						SCREAMING_SNAKE_CASE_   :	List[str]													=   MagicMock(return_value=UpperCamelCase__       )
						with patch('transformers.onnx.features.is_torch_available' ,    UpperCamelCase__       ):
										SCREAMING_SNAKE_CASE_   :	Optional[Any]													=   FeaturesManager.determine_framework(self.test_model       )
										self.assertEqual(UpperCamelCase__ ,    self.framework_tf       )

						# Both in environment -> use PyTorch
						SCREAMING_SNAKE_CASE_   :	Union[str, Any]													=   MagicMock(return_value=UpperCamelCase__       )
						SCREAMING_SNAKE_CASE_   :	Tuple													=   MagicMock(return_value=UpperCamelCase__       )
						with patch('transformers.onnx.features.is_tf_available' ,    UpperCamelCase__       ), patch(
						    'transformers.onnx.features.is_torch_available' ,    UpperCamelCase__       ):
										SCREAMING_SNAKE_CASE_   :	Union[str, Any]													=   FeaturesManager.determine_framework(self.test_model       )
										self.assertEqual(UpperCamelCase__ ,    self.framework_pt       )

						# Both not in environment -> raise error
						SCREAMING_SNAKE_CASE_   :	Tuple													=   MagicMock(return_value=UpperCamelCase__       )
						SCREAMING_SNAKE_CASE_   :	Any													=   MagicMock(return_value=UpperCamelCase__       )
						with patch('transformers.onnx.features.is_tf_available' ,    UpperCamelCase__       ), patch(
						    'transformers.onnx.features.is_torch_available' ,    UpperCamelCase__       ):
										with self.assertRaises(UpperCamelCase__       ):
														SCREAMING_SNAKE_CASE_   :	Optional[int]													=   FeaturesManager.determine_framework(self.test_model       )