"""simple docstring"""






from argparse import ArgumentParser, Namespace

from ..utils import logging
from . import BaseTransformersCLICommand



def   a_						(					lowerCamelCase       ):
				return ConvertCommand(
				    args.model_type					,			args.tf_checkpoint					,			args.pytorch_dump_output					,			args.config					,			args.finetuning_task_name       )


lowerCAmelCase__  :  List[Any]						     =	'\ntransformers can only be used from the commandline to convert TensorFlow models in PyTorch, In that case, it requires\nTensorFlow to be installed. Please see https://www.tensorflow.org/install/ for installation instructions.\n'







class 				snake_case       ( __UpperCAmelCase				):




					"""simple docstring"""

					@staticmethod
					def 		__lowerCAmelCase						(				lowerCamelCase__   :	ArgumentParser			):
									UpperCAmelCase__             =							parser.add_parser(
									    'convert'    ,help='CLI tool to run convert model from original author checkpoints to Transformers PyTorch checkpoints.'    ,)
									train_parser.add_argument('--model_type'    ,type=lowerCamelCase__    ,required=lowerCamelCase__    ,help='Model\'s type.'			)
									train_parser.add_argument(
									    '--tf_checkpoint'    ,type=lowerCamelCase__    ,required=lowerCamelCase__    ,help='TensorFlow checkpoint path or folder.'			)
									train_parser.add_argument(
									    '--pytorch_dump_output'    ,type=lowerCamelCase__    ,required=lowerCamelCase__    ,help='Path to the PyTorch saved model output.'			)
									train_parser.add_argument('--config'    ,type=lowerCamelCase__    ,default=''    ,help='Configuration file path or folder.'			)
									train_parser.add_argument(
									    '--finetuning_task_name'    ,type=lowerCamelCase__    ,default=lowerCamelCase__    ,help='Optional fine-tuning task name if the TF model was a finetuned model.'    ,)
									train_parser.set_defaults(func=lowerCamelCase__			)







					def __init__(				self   :	List[Any]    ,lowerCamelCase__   :	str    ,lowerCamelCase__   :	str    ,lowerCamelCase__   :	str    ,lowerCamelCase__   :	str    ,lowerCamelCase__   :	str    ,*lowerCamelCase__   :	Any    ,):
									UpperCAmelCase__             =							logging.get_logger('transformers-cli/converting'			)

									self._logger.info(f'''Loading model {model_type}'''			)
									UpperCAmelCase__             =							model_type
									UpperCAmelCase__             =							tf_checkpoint
									UpperCAmelCase__             =							pytorch_dump_output
									UpperCAmelCase__             =							config
									UpperCAmelCase__             =							finetuning_task_name







					def 		__lowerCAmelCase						(				self   :	str			):
									if self._model_type == "albert":
													try:
																	from ..models.albert.convert_albert_original_tf_checkpoint_to_pytorch import (
																	    convert_tf_checkpoint_to_pytorch,
																	)
													except ImportError:
																	raise ImportError(lowerCamelCase__			)

													convert_tf_checkpoint_to_pytorch(self._tf_checkpoint    ,self._config    ,self._pytorch_dump_output			)
									elif self._model_type == "bert":
													try:
																	from ..models.bert.convert_bert_original_tf_checkpoint_to_pytorch import (
																	    convert_tf_checkpoint_to_pytorch,
																	)
													except ImportError:
																	raise ImportError(lowerCamelCase__			)

													convert_tf_checkpoint_to_pytorch(self._tf_checkpoint    ,self._config    ,self._pytorch_dump_output			)
									elif self._model_type == "funnel":
													try:
																	from ..models.funnel.convert_funnel_original_tf_checkpoint_to_pytorch import (
																	    convert_tf_checkpoint_to_pytorch,
																	)
													except ImportError:
																	raise ImportError(lowerCamelCase__			)

													convert_tf_checkpoint_to_pytorch(self._tf_checkpoint    ,self._config    ,self._pytorch_dump_output			)
									elif self._model_type == "t5":
													try:
																	from ..models.ta.convert_ta_original_tf_checkpoint_to_pytorch import convert_tf_checkpoint_to_pytorch
													except ImportError:
																	raise ImportError(lowerCamelCase__			)

													convert_tf_checkpoint_to_pytorch(self._tf_checkpoint    ,self._config    ,self._pytorch_dump_output			)
									elif self._model_type == "gpt":
													from ..models.openai.convert_openai_original_tf_checkpoint_to_pytorch import (
													    convert_openai_checkpoint_to_pytorch,
													)

													convert_openai_checkpoint_to_pytorch(self._tf_checkpoint    ,self._config    ,self._pytorch_dump_output			)
									elif self._model_type == "transfo_xl":
													try:
																	from ..models.transfo_xl.convert_transfo_xl_original_tf_checkpoint_to_pytorch import (
																	    convert_transfo_xl_checkpoint_to_pytorch,
																	)
													except ImportError:
																	raise ImportError(lowerCamelCase__			)

													if "ckpt" in self._tf_checkpoint.lower():
																	UpperCAmelCase__             =							self._tf_checkpoint
																	UpperCAmelCase__             =							''
													else:
																	UpperCAmelCase__             =							self._tf_checkpoint
																	UpperCAmelCase__             =							''
													convert_transfo_xl_checkpoint_to_pytorch(
													    lowerCamelCase__    ,self._config    ,self._pytorch_dump_output    ,lowerCamelCase__			)
									elif self._model_type == "gpt2":
													try:
																	from ..models.gpta.convert_gpta_original_tf_checkpoint_to_pytorch import (
																	    convert_gpta_checkpoint_to_pytorch,
																	)
													except ImportError:
																	raise ImportError(lowerCamelCase__			)

													convert_gpta_checkpoint_to_pytorch(self._tf_checkpoint    ,self._config    ,self._pytorch_dump_output			)
									elif self._model_type == "xlnet":
													try:
																	from ..models.xlnet.convert_xlnet_original_tf_checkpoint_to_pytorch import (
																	    convert_xlnet_checkpoint_to_pytorch,
																	)
													except ImportError:
																	raise ImportError(lowerCamelCase__			)

													convert_xlnet_checkpoint_to_pytorch(
													    self._tf_checkpoint    ,self._config    ,self._pytorch_dump_output    ,self._finetuning_task_name			)
									elif self._model_type == "xlm":
													from ..models.xlm.convert_xlm_original_pytorch_checkpoint_to_pytorch import (
													    convert_xlm_checkpoint_to_pytorch,
													)

													convert_xlm_checkpoint_to_pytorch(self._tf_checkpoint    ,self._pytorch_dump_output			)
									elif self._model_type == "lxmert":
													from ..models.lxmert.convert_lxmert_original_tf_checkpoint_to_pytorch import (
													    convert_lxmert_checkpoint_to_pytorch,
													)

													convert_lxmert_checkpoint_to_pytorch(self._tf_checkpoint    ,self._pytorch_dump_output			)
									elif self._model_type == "rembert":
													from ..models.rembert.convert_rembert_tf_checkpoint_to_pytorch import (
													    convert_rembert_tf_checkpoint_to_pytorch,
													)

													convert_rembert_tf_checkpoint_to_pytorch(self._tf_checkpoint    ,self._config    ,self._pytorch_dump_output			)
									else:
													raise ValueError(
													    '--model_type should be selected in the list [bert, gpt, gpt2, t5, transfo_xl, xlnet, xlm, lxmert]'			)




"""simple docstring"""






def   a_						(					lowerCamelCase					,			lowerCamelCase       ):
				if a < 0 or b < 0:
								raise ValueError('the value of both inputs must be positive'       )

				UpperCAmelCase__             =							str(bin(lowerCamelCase       )       )[2:]  # remove the leading "0b"
				UpperCAmelCase__             =							str(bin(lowerCamelCase       )       )[2:]  # remove the leading "0b"

				UpperCAmelCase__             =							max(len(lowerCamelCase       )					,			len(lowerCamelCase       )       )

				return "0b" + "".join(
				    str(int(char_a == '1' and char_b == '1'       )       )
				    for char_a, char_b in zip(a_binary.zfill(lowerCamelCase       )					,			b_binary.zfill(lowerCamelCase       )       )       )


if __name__ == "__main__":
						import doctest

						doctest.testmod()



