



'''simple docstring'''





import argparse
import os
import pickle
import sys

import torch

from transformers import TransfoXLConfig, TransfoXLLMHeadModel, load_tf_weights_in_transfo_xl
from transformers.models.transfo_xl import tokenization_transfo_xl as data_utils
from transformers.models.transfo_xl.tokenization_transfo_xl import CORPUS_NAME, VOCAB_FILES_NAMES
from transformers.utils import CONFIG_NAME, WEIGHTS_NAME, logging


logging.set_verbosity_info()

# We do this to be able to load python 2 datasets pickles
# See e.g. https://stackoverflow.com/questions/2121874/python-pickling-after-changing-a-modules-directory/2121918#2121918
lowercase_									=    data_utils.TransfoXLTokenizer
lowercase_									=    data_utils.TransfoXLCorpus
lowercase_									=    data_utils
lowercase_									=    data_utils




def lowerCAmelCase    (__A    ,      __A    ,      __A    ,      __A):



     """simple docstring"""



     if transfo_xl_dataset_file:
          # Convert a pre-processed corpus (see original TensorFlow repo)
          with open(__A    ,      '''rb''') as fp:
               _a           =    pickle.load(__A    ,      encoding='''latin1''')
          # Save vocabulary and dataset cache as Dictionaries (should be better than pickles for the long-term)
          _a           =    pytorch_dump_folder_path + '''/''' + VOCAB_FILES_NAMES['''pretrained_vocab_file''']
          print(F'''Save vocabulary to {pytorch_vocab_dump_path}''')
          _a           =    corpus.vocab.__dict__
          torch.save(__A    ,      __A)

          _a           =    corpus.__dict__
          corpus_dict_no_vocab.pop('''vocab'''    ,      __A)
          _a           =    pytorch_dump_folder_path + '''/''' + CORPUS_NAME
          print(F'''Save dataset to {pytorch_dataset_dump_path}''')
          torch.save(__A    ,      __A)

     if tf_checkpoint_path:
          # Convert a pre-trained TensorFlow model
          _a           =    os.path.abspath(__A)
          _a           =    os.path.abspath(__A)

          print(F'''Converting Transformer XL checkpoint from {tf_path} with config at {config_path}.''')
          # Initialise PyTorch model
          if transfo_xl_config_file == "":
               _a           =    TransfoXLConfig()
          else:
               _a           =    TransfoXLConfig.from_json_file(__A)
          print(F'''Building PyTorch model from configuration: {config}''')
          _a           =    TransfoXLLMHeadModel(__A)

          _a           =    load_tf_weights_in_transfo_xl(__A    ,      __A    ,      __A)
          # Save pytorch-model
          _a           =    os.path.join(__A    ,      __A)
          _a           =    os.path.join(__A    ,      __A)
          print(F'''Save PyTorch model to {os.path.abspath(__A)}''')
          torch.save(model.state_dict()    ,      __A)
          print(F'''Save configuration file to {os.path.abspath(__A)}''')
          with open(__A    ,      '''w'''    ,      encoding='''utf-8''') as f:
               f.write(config.to_json_string())


if __name__ == "__main__":
  lowercase_									=    argparse.ArgumentParser()
  parser.add_argument(
      "--pytorch_dump_folder_path",
      default=None,
      type=str,
      required=True,
      help="Path to the folder to store the PyTorch model or dataset/vocab.",
  )
  parser.add_argument(
      "--tf_checkpoint_path",
      default="",
      type=str,
      help="An optional path to a TensorFlow checkpoint path to be converted.",
  )
  parser.add_argument(
      "--transfo_xl_config_file",
      default="",
      type=str,
      help=(
          "An optional config json file corresponding to the pre-trained BERT model. \n"
          "This specifies the model architecture."
      ),
  )
  parser.add_argument(
      "--transfo_xl_dataset_file",
      default="",
      type=str,
      help="An optional dataset file to be converted in a vocabulary.",
  )
  lowercase_									=    parser.parse_args()
  convert_transfo_xl_checkpoint_to_pytorch(
      args.tf_checkpoint_path,
      args.transfo_xl_config_file,
      args.pytorch_dump_folder_path,
      args.transfo_xl_dataset_file,
  )








'''simple docstring'''





import random
import unittest

import torch

from diffusers import IFInpaintingSuperResolutionPipeline
from diffusers.utils import floats_tensor
from diffusers.utils.import_utils import is_xformers_available
from diffusers.utils.testing_utils import skip_mps, torch_device

from ..pipeline_params import (
    TEXT_GUIDED_IMAGE_INPAINTING_BATCH_PARAMS,
    TEXT_GUIDED_IMAGE_INPAINTING_PARAMS,
)
from ..test_pipelines_common import PipelineTesterMixin
from . import IFPipelineTesterMixin






@skip_mps
class __A     (    A  ,  A  ,  unittest.TestCase		):



 '''simple docstring'''







 __lowerCamelCase       :			List[Any]		=			IFInpaintingSuperResolutionPipeline
 __lowerCamelCase       :			Tuple		=			TEXT_GUIDED_IMAGE_INPAINTING_PARAMS - {'width', 'height'}
 __lowerCamelCase       :			Optional[Any]		=			TEXT_GUIDED_IMAGE_INPAINTING_BATCH_PARAMS.union({'original_image'}		)
 __lowerCamelCase       :			str		=			PipelineTesterMixin.required_optional_params - {'latents'}



 def    a__    (self			)       ->	List[Any]:


      """simple docstring"""



      return self._get_superresolution_dummy_components()



 def    a__    (self					,  A					,  A=0			)       ->	List[Any]:


      """simple docstring"""



      if str(A			).startswith('''mps'''			):
           _a           =    torch.manual_seed(A			)
      else:
           _a           =    torch.Generator(device=A			).manual_seed(A			)

      _a           =    floats_tensor((1, 3, 16, 16)					,  rng=random.Random(A			)			).to(A			)
      _a           =    floats_tensor((1, 3, 32, 32)					,  rng=random.Random(A			)			).to(A			)
      _a           =    floats_tensor((1, 3, 32, 32)					,  rng=random.Random(A			)			).to(A			)

      _a           =    {
          '''prompt''': '''A painting of a squirrel eating a burger''',
          '''image''': image,
          '''original_image''': original_image,
          '''mask_image''': mask_image,
          '''generator''': generator,
          '''num_inference_steps''': 2,
          '''output_type''': '''numpy''',
      }

      return inputs



 @unittest.skipIf(
     torch_device != '''cuda''' or not is_xformers_available()					,  reason='''XFormers attention is only available with CUDA and `xformers` installed'''					,  )
 def    a__    (self			)       ->	Optional[int]:


      """simple docstring"""



      self._test_xformers_attention_forwardGenerator_pass(expected_max_diff=1E-3			)



 def    a__    (self			)       ->	str:


      """simple docstring"""



      self._test_save_load_optional_components()



 @unittest.skipIf(torch_device != '''cuda'''					,  reason='''float16 requires CUDA'''			)
 def    a__    (self			)       ->	str:


      """simple docstring"""



      super().test_save_load_floataa(expected_max_diff=1E-1			)



 def    a__    (self			)       ->	Tuple:


      """simple docstring"""



      self._test_attention_slicing_forward_pass(expected_max_diff=1E-2			)



 def    a__    (self			)       ->	Union[str, Any]:


      """simple docstring"""



      self._test_save_load_local()



 def    a__    (self			)       ->	Any:


      """simple docstring"""



      self._test_inference_batch_single_identical(
          expected_max_diff=1E-2					,  )



