
"""simple docstring"""
import unittest

from transformers import JukeboxTokenizer
from transformers.testing_utils import require_torch






class      _UpperCAmelCase				(					unittest.TestCase):
    __lowercase							: int  =					JukeboxTokenizer
    __lowercase							: Any  =					{
        """artist""": """Zac Brown Band""",
        """genres""": """Country""",
        """lyrics""": """I met a traveller from an antique land,
        Who said \"Two vast and trunkless legs of stone
        Stand in the desert. . . . Near them, on the sand,
        Half sunk a shattered visage lies, whose frown,
        And wrinkled lip, and sneer of cold command,
        Tell that its sculptor well those passions read
        Which yet survive, stamped on these lifeless things,
        The hand that mocked them, and the heart that fed;
        And on the pedestal, these words appear:
        My name is Ozymandias, King of Kings;
        Look on my Works, ye Mighty, and despair!
        Nothing beside remains. Round the decay
        Of that colossal Wreck, boundless and bare
        The lone and level sands stretch far away
        """,
    }
    @require_torch
    def 					lowerCamelCase__	(    self     ):
      import torch

      _snake_case     :						List[str]						=   JukeboxTokenizer.from_pretrained("openai/jukebox-1b-lyrics"     )
      _snake_case     :						Dict						=   tokenizer(**self.metas     )["input_ids"]
      # fmt: off
      _snake_case     :						Optional[int]						=   [
          torch.tensor([[
              0, 0, 0, 71_69, 5_07, 9, 76, 39, 31, 46, 76, 27,
              76, 46, 44, 27, 48, 31, 38, 38, 31, 44, 76, 32,
              44, 41, 39, 76, 27, 40, 76, 27, 40, 46, 35, 43,
              47, 31, 76, 38, 27, 40, 30, 64, 78, 76, 76, 76,
              76, 76, 76, 76, 76, 23, 34, 41, 76, 45, 27, 35,
              30, 76, 71, 20, 49, 41, 76, 48, 27, 45, 46, 76,
              27, 40, 30, 76, 46, 44, 47, 40, 37, 38, 31, 45,
              45, 76, 38, 31, 33, 45, 76, 41, 32, 76, 45, 46,
              41, 40, 31, 78, 76, 76, 76, 76, 76, 76, 76, 76,
              19, 46, 27, 40, 30, 76, 35, 40, 76, 46, 34, 31,
              76, 30, 31, 45, 31, 44, 46, 63, 76, 63, 76, 63,
              76, 63, 76, 14, 31, 27, 44, 76, 46, 34, 31, 39,
              64, 76, 41, 40, 76, 46, 34, 31, 76, 45, 27, 40,
              30, 64, 78, 76, 76, 76, 76, 76, 76, 76, 76, 8,
              27, 38, 32, 76, 45, 47, 40, 37, 76, 27, 76, 45,
              34, 27, 46, 46, 31, 44, 31, 30, 76, 48, 35, 45,
              27, 33, 31, 76, 38, 35, 31, 45, 64, 76, 49, 34,
              41, 45, 31, 76, 32, 44, 41, 49, 40, 64, 78, 76,
              76, 76, 76, 76, 76, 76, 76, 1, 40, 30, 76, 49,
              44, 35, 40, 37, 38, 31, 30, 76, 38, 35, 42, 64,
              76, 27, 40, 30, 76, 45, 40, 31, 31, 44, 76, 41,
              32, 76, 29, 41, 38, 30, 76, 29, 41, 39, 39, 27,
              40, 30, 64, 78, 76, 76, 76, 76, 76, 76, 76, 76,
              20, 31, 38, 38, 76, 46, 34, 27, 46, 76, 35, 46,
              45, 76, 45, 29, 47, 38, 42, 46, 41, 44, 76, 49,
              31, 38, 38, 76, 46, 34, 41, 45, 31, 76, 42, 27,
              45, 45, 35, 41, 40, 45, 76, 44, 31, 27, 30, 78,
              76, 76, 76, 76, 76, 76, 76, 76, 23, 34, 35, 29,
              34, 76, 51, 31, 46, 76, 45, 47, 44, 48, 35, 48,
              31, 64, 76, 45, 46, 27, 39, 42, 31, 30, 76, 41,
              40, 76, 46, 34, 31, 45, 31, 76, 38, 35, 32, 31,
              38, 31, 45, 45, 76, 46, 34, 35, 40, 33, 45, 64,
              78, 76, 76, 76, 76, 76, 76, 76, 76, 20, 34, 31,
              76, 34, 27, 40, 30, 76, 46, 34, 27, 46, 76, 39,
              41, 29, 37, 31, 30, 76, 46, 34, 31, 39, 64, 76,
              27, 40, 30, 76, 46, 34, 31, 76, 34, 31, 27, 44,
              46, 76, 46, 34, 27, 46, 76, 32, 31, 30, 66, 78,
              76, 76, 76, 76, 76, 76, 76, 76, 1, 40, 30, 76,
              41, 40, 76, 46, 34, 31, 76, 42, 31, 30, 31, 45,
              46, 27, 38, 64, 76, 46, 34, 31, 45, 31, 76, 49,
              41, 44, 30, 45, 76, 27, 42, 42, 31, 27, 44, 65,
              78, 76, 76, 76, 76, 76, 76, 76, 76, 13, 51, 76,
              40, 27, 39, 31, 76, 35, 45, 76, 15, 52, 51, 39,
              27, 40, 30, 35, 27, 45, 64, 76, 11, 35, 40, 33,
              76, 41, 32, 76, 11, 35, 40, 33, 45, 66, 78, 76,
              76, 76, 76, 76, 76, 76, 76, 12, 41, 41, 37, 76,
              41, 40, 76, 39, 51, 76, 23, 41, 44, 37, 45, 64,
              76, 51, 31, 76, 13, 35, 33, 34, 46, 51, 64, 76,
              27, 40, 30, 76, 30, 31, 45, 42, 27, 35, 44, 67,
              78, 76, 76, 76, 76, 76, 76, 76, 76, 14, 41, 46,
              34, 35, 40, 33, 76, 28, 31, 45, 35, 30, 31, 76,
              44, 31, 39, 27, 35, 40, 45, 63, 76, 18, 41, 47,
              40, 30, 76, 46, 34, 31, 76, 30, 31, 29, 27, 51,
              78, 76, 76, 76, 76, 76, 76, 76, 76, 15, 32, 76,
              46, 34, 27, 46, 76, 29, 41, 38, 41, 45, 45, 27,
              38, 76, 23, 44, 31, 29, 37, 64, 76, 28, 41, 47,
              40, 30, 38, 31, 45, 45, 76, 27, 40, 30, 76, 28,
              27, 44, 31, 78, 76, 76, 76, 76, 76, 76, 76, 76,
              20, 34, 31, 76, 38, 41, 40, 31, 76, 27, 40, 30,
              76, 38, 31, 48, 31, 38, 76, 45, 27, 40, 30, 45,
              76, 45, 46, 44, 31, 46, 29, 34, 76, 32, 27, 44,
              76, 27, 49, 27, 51, 78, 76, 76, 76, 76, 76, 76,
              76, 76]]     ),
          torch.tensor([[0, 0, 0, 10_69, 11]]     ),
          torch.tensor([[0, 0, 0, 10_69, 11]]     ),
      ]
      # fmt: on
      self.assertTrue(torch.allclose(tokens[0]						,    EXPECTED_OUTPUT[0]     )     )
      self.assertTrue(torch.allclose(tokens[1]						,    EXPECTED_OUTPUT[1]     )     )
      self.assertTrue(torch.allclose(tokens[2]						,    EXPECTED_OUTPUT[2]     )     )


    @require_torch
    def 					lowerCamelCase__	(    self     ):
      import torch

      _snake_case     :						List[str]						=   JukeboxTokenizer.from_pretrained("openai/jukebox-5b-lyrics"     )
      _snake_case     :						Dict						=   tokenizer(**self.metas     )["input_ids"]
      # fmt: off
      _snake_case     :						Tuple						=   [
          torch.tensor([[
              0, 0, 0, 10_69, 11, -1, -1, -1, -1, 9, 77, 39,
              31, 46, 77, 27, 77, 46, 44, 27, 48, 31, 38, 38,
              31, 44, 77, 32, 44, 41, 39, 77, 27, 40, 77, 27,
              40, 46, 35, 43, 47, 31, 77, 38, 27, 40, 30, 64,
              79, 77, 77, 77, 77, 77, 77, 77, 77, 23, 34, 41,
              77, 45, 27, 35, 30, 77, 72, 20, 49, 41, 77, 48,
              27, 45, 46, 77, 27, 40, 30, 77, 46, 44, 47, 40,
              37, 38, 31, 45, 45, 77, 38, 31, 33, 45, 77, 41,
              32, 77, 45, 46, 41, 40, 31, 79, 77, 77, 77, 77,
              77, 77, 77, 77, 19, 46, 27, 40, 30, 77, 35, 40,
              77, 46, 34, 31, 77, 30, 31, 45, 31, 44, 46, 63,
              77, 63, 77, 63, 77, 63, 77, 14, 31, 27, 44, 77,
              46, 34, 31, 39, 64, 77, 41, 40, 77, 46, 34, 31,
              77, 45, 27, 40, 30, 64, 79, 77, 77, 77, 77, 77,
              77, 77, 77, 8, 27, 38, 32, 77, 45, 47, 40, 37,
              77, 27, 77, 45, 34, 27, 46, 46, 31, 44, 31, 30,
              77, 48, 35, 45, 27, 33, 31, 77, 38, 35, 31, 45,
              64, 77, 49, 34, 41, 45, 31, 77, 32, 44, 41, 49,
              40, 64, 79, 77, 77, 77, 77, 77, 77, 77, 77, 1,
              40, 30, 77, 49, 44, 35, 40, 37, 38, 31, 30, 77,
              38, 35, 42, 64, 77, 27, 40, 30, 77, 45, 40, 31,
              31, 44, 77, 41, 32, 77, 29, 41, 38, 30, 77, 29,
              41, 39, 39, 27, 40, 30, 64, 79, 77, 77, 77, 77,
              77, 77, 77, 77, 20, 31, 38, 38, 77, 46, 34, 27,
              46, 77, 35, 46, 45, 77, 45, 29, 47, 38, 42, 46,
              41, 44, 77, 49, 31, 38, 38, 77, 46, 34, 41, 45,
              31, 77, 42, 27, 45, 45, 35, 41, 40, 45, 77, 44,
              31, 27, 30, 79, 77, 77, 77, 77, 77, 77, 77, 77,
              23, 34, 35, 29, 34, 77, 51, 31, 46, 77, 45, 47,
              44, 48, 35, 48, 31, 64, 77, 45, 46, 27, 39, 42,
              31, 30, 77, 41, 40, 77, 46, 34, 31, 45, 31, 77,
              38, 35, 32, 31, 38, 31, 45, 45, 77, 46, 34, 35,
              40, 33, 45, 64, 79, 77, 77, 77, 77, 77, 77, 77,
              77, 20, 34, 31, 77, 34, 27, 40, 30, 77, 46, 34,
              27, 46, 77, 39, 41, 29, 37, 31, 30, 77, 46, 34,
              31, 39, 64, 77, 27, 40, 30, 77, 46, 34, 31, 77,
              34, 31, 27, 44, 46, 77, 46, 34, 27, 46, 77, 32,
              31, 30, 66, 79, 77, 77, 77, 77, 77, 77, 77, 77,
              1, 40, 30, 77, 41, 40, 77, 46, 34, 31, 77, 42,
              31, 30, 31, 45, 46, 27, 38, 64, 77, 46, 34, 31,
              45, 31, 77, 49, 41, 44, 30, 45, 77, 27, 42, 42,
              31, 27, 44, 65, 79, 77, 77, 77, 77, 77, 77, 77,
              77, 13, 51, 77, 40, 27, 39, 31, 77, 35, 45, 77,
              15, 52, 51, 39, 27, 40, 30, 35, 27, 45, 64, 77,
              11, 35, 40, 33, 77, 41, 32, 77, 11, 35, 40, 33,
              45, 66, 79, 77, 77, 77, 77, 77, 77, 77, 77, 12,
              41, 41, 37, 77, 41, 40, 77, 39, 51, 77, 23, 41,
              44, 37, 45, 64, 77, 51, 31, 77, 13, 35, 33, 34,
              46, 51, 64, 77, 27, 40, 30, 77, 30, 31, 45, 42,
              27, 35, 44, 67, 79, 77, 77, 77, 77, 77, 77, 77,
              77, 14, 41, 46, 34, 35, 40, 33, 77, 28, 31, 45,
              35, 30, 31, 77, 44, 31, 39, 27, 35, 40, 45, 63,
              77, 18, 41, 47, 40, 30, 77, 46, 34, 31, 77, 30,
              31, 29, 27, 51, 79, 77, 77, 77, 77, 77, 77, 77,
              77, 15, 32, 77, 46, 34, 27, 46, 77, 29, 41, 38,
              41, 45, 45, 27, 38, 77, 23, 44, 31, 29, 37, 64,
              77, 28, 41, 47, 40, 30, 38, 31, 45, 45, 77, 27,
              40, 30, 77, 28, 27, 44, 31, 79, 77, 77, 77, 77,
              77, 77, 77, 77, 20, 34, 31, 77, 38, 41, 40, 31,
              77, 27, 40, 30, 77, 38, 31, 48, 31, 38, 77, 45,
              27, 40, 30, 45, 77, 45, 46, 44, 31, 46, 29, 34,
              77, 32, 27, 44, 77, 27, 49, 27, 51, 79, 77, 77,
              77, 77, 77, 77, 77, 77]]     ),
          torch.tensor([[0, 0, 0, 10_69, 11, -1, -1, -1, -1]]     ),
          torch.tensor([[0, 0, 0, 10_69, 11, -1, -1, -1, -1]]     ),
      ]
      # fmt: on
      self.assertTrue(torch.allclose(tokens[0]						,    EXPECTED_OUTPUT[0]     )     )
      self.assertTrue(torch.allclose(tokens[1]						,    EXPECTED_OUTPUT[1]     )     )
      self.assertTrue(torch.allclose(tokens[2]						,    EXPECTED_OUTPUT[2]     )     )



"""simple docstring"""
from argparse import ArgumentParser, Namespace

from ..utils import logging
from . import BaseTransformersCLICommand
def 				a__   (   a   :				Namespace		):

  """simple docstring"""







  return ConvertCommand(
      args.model_type       ,     args.tf_checkpoint       ,     args.pytorch_dump_output       ,     args.config       ,     args.finetuning_task_name		)


_a      :			int					=							"""
transformers can only be used from the commandline to convert TensorFlow models in PyTorch, In that case, it requires
TensorFlow to be installed. Please see https://www.tensorflow.org/install/ for installation instructions.
"""






class      _UpperCAmelCase				(					_snake_case):
    @staticmethod
    def 					lowerCamelCase__	(    snake_case_     ):
      _snake_case     :						Dict						=   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=snake_case_						,    required=snake_case_						,    help="Model's type."     )
      train_parser.add_argument(
          "--tf_checkpoint"						,    type=snake_case_						,    required=snake_case_						,    help="TensorFlow checkpoint path or folder."     )
      train_parser.add_argument(
          "--pytorch_dump_output"						,    type=snake_case_						,    required=snake_case_						,    help="Path to the PyTorch saved model output."     )
      train_parser.add_argument("--config"						,    type=snake_case_						,    default=""						,    help="Configuration file path or folder."     )
      train_parser.add_argument(
          "--finetuning_task_name"						,    type=snake_case_						,    default=snake_case_						,    help="Optional fine-tuning task name if the TF model was a finetuned model."						,    )
      train_parser.set_defaults(func=snake_case_     )
    def __init__(    self						,    snake_case_						,    snake_case_						,    snake_case_						,    snake_case_						,    snake_case_						,    *snake_case_						,    ):
      _snake_case     :						str						=   logging.get_logger("transformers-cli/converting"     )

      self._logger.info(F'Loading model {model_type}'     )
      _snake_case     :						Optional[int]						=   model_type
      _snake_case     :						Any						=   tf_checkpoint
      _snake_case     :						Optional[int]						=   pytorch_dump_output
      _snake_case     :						Tuple						=   config
      _snake_case     :						Tuple						=   finetuning_task_name


    def 					lowerCamelCase__	(    self     ):
      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(snake_case_     )

        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(snake_case_     )

        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(snake_case_     )

        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(snake_case_     )

        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(snake_case_     )

        if "ckpt" in self._tf_checkpoint.lower():
          _snake_case     :						int						=   self._tf_checkpoint
          _snake_case     :						Optional[Any]						=   ""
        else:
          _snake_case     :						Optional[int]						=   self._tf_checkpoint
          _snake_case     :						List[str]						=   ""
        convert_transfo_xl_checkpoint_to_pytorch(
            snake_case_						,    self._config						,    self._pytorch_dump_output						,    snake_case_     )
      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(snake_case_     )

        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(snake_case_     )

        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]"     )

