code: 
  
  
  
  
  """simple docstring"""
  
  
  
  
  import argparse
  import json
  
  import gdown
  import numpy as np
  import torch
  from huggingface_hub import hf_hub_download
  
  from transformers import TimesformerConfig, TimesformerForVideoClassification, VideoMAEImageProcessor
  def 					A_			(		snake_case_     :       Optional[int]    ):
  
  
  
  
  
  
  
      '''simple docstring'''
      UpperCamelCase				:   Union[str, Any]          =							TimesformerConfig()
  
      if "large" in model_name:
          UpperCamelCase				:   Tuple          =							9_6
  
      if "hr" in model_name:
          UpperCamelCase				:   Tuple          =							1_6
          UpperCamelCase				:   Any          =							4_4_8
  
      UpperCamelCase				:   int          =							'''huggingface/label-files'''
      if "k400" in model_name:
          UpperCamelCase				:   Optional[Any]          =							4_0_0
          UpperCamelCase				:   Optional[Any]          =							'''kinetics400-id2label.json'''
      elif "k600" in model_name:
          UpperCamelCase				:   Union[str, Any]          =							6_0_0
          UpperCamelCase				:   Any          =							'''kinetics600-id2label.json'''
      elif "ssv2" in model_name:
          UpperCamelCase				:   Any          =							1_7_4
          UpperCamelCase				:   str          =							'''something-something-v2-id2label.json'''
      else:
          raise ValueError("""Model name should either contain \'k400\', \'k600\' or \'ssv2\'."""    )
      UpperCamelCase				:   Any          =							json.load(open(hf_hub_download(UpperCamelCase__						,UpperCamelCase__						,repo_type="""dataset"""    )						,"""r"""    )    )
      UpperCamelCase				:   List[Any]          =							{int(UpperCamelCase__    ): v for k, v in idalabel.items()}
      UpperCamelCase				:   Tuple          =							idalabel
      UpperCamelCase				:   List[str]          =							{v: k for k, v in idalabel.items()}
  
      return config
  def 					A_			(		snake_case_     :       Optional[Any]    ):
  
  
  
  
  
  
  
      '''simple docstring'''
      if "encoder." in name:
          UpperCamelCase				:   Tuple          =							name.replace("""encoder."""						,""""""    )
      if "cls_token" in name:
          UpperCamelCase				:   List[str]          =							name.replace("""cls_token"""						,"""timesformer.embeddings.cls_token"""    )
      if "pos_embed" in name:
          UpperCamelCase				:   Tuple          =							name.replace("""pos_embed"""						,"""timesformer.embeddings.position_embeddings"""    )
      if "time_embed" in name:
          UpperCamelCase				:   List[str]          =							name.replace("""time_embed"""						,"""timesformer.embeddings.time_embeddings"""    )
      if "patch_embed.proj" in name:
          UpperCamelCase				:   Tuple          =							name.replace("""patch_embed.proj"""						,"""timesformer.embeddings.patch_embeddings.projection"""    )
      if "patch_embed.norm" in name:
          UpperCamelCase				:   str          =							name.replace("""patch_embed.norm"""						,"""timesformer.embeddings.norm"""    )
      if "blocks" in name:
          UpperCamelCase				:   Tuple          =							name.replace("""blocks"""						,"""timesformer.encoder.layer"""    )
      if "attn.proj" in name:
          UpperCamelCase				:   Optional[Any]          =							name.replace("""attn.proj"""						,"""attention.output.dense"""    )
      if "attn" in name and "bias" not in name and "temporal" not in name:
          UpperCamelCase				:   Dict          =							name.replace("""attn"""						,"""attention.self"""    )
      if "attn" in name and "temporal" not in name:
          UpperCamelCase				:   Tuple          =							name.replace("""attn"""						,"""attention.attention"""    )
      if "temporal_norm1" in name:
          UpperCamelCase				:   Any          =							name.replace("""temporal_norm1"""						,"""temporal_layernorm"""    )
      if "temporal_attn.proj" in name:
          UpperCamelCase				:   List[str]          =							name.replace("""temporal_attn"""						,"""temporal_attention.output.dense"""    )
      if "temporal_fc" in name:
          UpperCamelCase				:   List[str]          =							name.replace("""temporal_fc"""						,"""temporal_dense"""    )
      if "norm1" in name and "temporal" not in name:
          UpperCamelCase				:   Tuple          =							name.replace("""norm1"""						,"""layernorm_before"""    )
      if "norm2" in name:
          UpperCamelCase				:   List[Any]          =							name.replace("""norm2"""						,"""layernorm_after"""    )
      if "mlp.fc1" in name:
          UpperCamelCase				:   List[str]          =							name.replace("""mlp.fc1"""						,"""intermediate.dense"""    )
      if "mlp.fc2" in name:
          UpperCamelCase				:   Optional[int]          =							name.replace("""mlp.fc2"""						,"""output.dense"""    )
      if "norm.weight" in name and "fc" not in name and "temporal" not in name:
          UpperCamelCase				:   List[str]          =							name.replace("""norm.weight"""						,"""timesformer.layernorm.weight"""    )
      if "norm.bias" in name and "fc" not in name and "temporal" not in name:
          UpperCamelCase				:   str          =							name.replace("""norm.bias"""						,"""timesformer.layernorm.bias"""    )
      if "head" in name:
          UpperCamelCase				:   List[str]          =							name.replace("""head"""						,"""classifier"""    )
  
      return name
  def 					A_			(		snake_case_     :       Union[str, Any]						,snake_case_     :       List[str]    ):
  
  
  
  
  
  
  
      '''simple docstring'''
      for key in orig_state_dict.copy().keys():
          UpperCamelCase				:   str          =							orig_state_dict.pop(UpperCamelCase__    )
  
          if key.startswith("""model."""    ):
              UpperCamelCase				:   Optional[Any]          =							key.replace("""model."""						,""""""    )
  
          if "qkv" in key:
              UpperCamelCase				:   List[str]          =							key.split("""."""    )
              UpperCamelCase				:   int          =							int(key_split[1]    )
              UpperCamelCase				:   List[Any]          =							'''timesformer.encoder.layer.'''
              if "temporal" in key:
                  UpperCamelCase				:   int          =							'''.temporal_attention.attention.qkv.'''
              else:
                  UpperCamelCase				:   List[str]          =							'''.attention.attention.qkv.'''
              if "weight" in key:
                  UpperCamelCase				:   List[Any]          =							val
              else:
                  UpperCamelCase				:   Any          =							val
          else:
              UpperCamelCase				:   Union[str, Any]          =							val
  
      return orig_state_dict
  def 					A_			(		):
  
  
  
  
  
  
  
      '''simple docstring'''
      UpperCamelCase				:   Dict          =							hf_hub_download(
          repo_id="""hf-internal-testing/spaghetti-video"""						,filename="""eating_spaghetti.npy"""						,repo_type="""dataset"""    )
      UpperCamelCase				:   Tuple          =							np.load(UpperCamelCase__    )
      return list(UpperCamelCase__    )
  def 					A_			(		snake_case_     :       List[Any]						,snake_case_     :       Optional[Any]						,snake_case_     :       Optional[int]						,snake_case_     :       Tuple    ):
  
  
  
  
  
  
  
      '''simple docstring'''
      UpperCamelCase				:   Any          =							get_timesformer_config(UpperCamelCase__    )
  
      UpperCamelCase				:   int          =							TimesformerForVideoClassification(UpperCamelCase__    )
  
      # download original checkpoint, hosted on Google Drive
      UpperCamelCase				:   Optional[int]          =							'''pytorch_model.bin'''
      gdown.cached_download(UpperCamelCase__						,UpperCamelCase__						,quiet=UpperCamelCase__    )
      UpperCamelCase				:   Optional[Any]          =							torch.load(UpperCamelCase__						,map_location="""cpu"""    )
      if "model" in files:
          UpperCamelCase				:   Tuple          =							files['''model''']
      elif "module" in files:
          UpperCamelCase				:   List[str]          =							files['''module''']
      else:
          UpperCamelCase				:   Union[str, Any]          =							files['''model_state''']
      UpperCamelCase				:   Dict          =							convert_state_dict(UpperCamelCase__						,UpperCamelCase__    )
  
      model.load_state_dict(UpperCamelCase__    )
      model.eval()
  
      # verify model on basic input
      UpperCamelCase				:   List[str]          =							VideoMAEImageProcessor(image_mean=[0.5, 0.5, 0.5]						,image_std=[0.5, 0.5, 0.5]    )
      UpperCamelCase				:   int          =							prepare_video()
      UpperCamelCase				:   List[str]          =							image_processor(video[:8]						,return_tensors="""pt"""    )
  
      UpperCamelCase				:   int          =							model(**UpperCamelCase__    )
      UpperCamelCase				:   Optional[int]          =							outputs.logits
  
      UpperCamelCase				:   Union[str, Any]          =							[
          # Kinetics-400 checkpoints (hr = high resolution input of 448px instead of 224px)
          '''timesformer-base-finetuned-k400''',
          '''timesformer-large-finetuned-k400''',
          '''timesformer-hr-finetuned-k400''',
          # Kinetics-600 checkpoints (hr = high resolution input of 448px instead of 224px)
          '''timesformer-base-finetuned-k600''',
          '''timesformer-large-finetuned-k600''',
          '''timesformer-hr-finetuned-k600''',
          # Something-Something-v2 checkpoints (hr = high resolution input of 448px instead of 224px)
          '''timesformer-base-finetuned-ssv2''',
          '''timesformer-large-finetuned-ssv2''',
          '''timesformer-hr-finetuned-ssv2''',
      ]
  
      # NOTE: logits were tested with image_mean and image_std equal to [0.5, 0.5, 0.5] and [0.5, 0.5, 0.5]
      if model_name == "timesformer-base-finetuned-k400":
          UpperCamelCase				:   List[Any]          =							torch.Size([1, 4_0_0]    )
          UpperCamelCase				:   Union[str, Any]          =							torch.tensor([-0.3016, -0.7713, -0.4205]    )
      elif model_name == "timesformer-base-finetuned-k600":
          UpperCamelCase				:   Tuple          =							torch.Size([1, 6_0_0]    )
          UpperCamelCase				:   Optional[int]          =							torch.tensor([-0.7267, -0.7466, 3.2404]    )
      elif model_name == "timesformer-base-finetuned-ssv2":
          UpperCamelCase				:   int          =							torch.Size([1, 1_7_4]    )
          UpperCamelCase				:   Optional[Any]          =							torch.tensor([-0.9059, 0.6433, -3.1457]    )
      elif model_name == "timesformer-large-finetuned-k400":
          UpperCamelCase				:   Any          =							torch.Size([1, 4_0_0]    )
          UpperCamelCase				:   str          =							torch.tensor([0, 0, 0]    )
      elif model_name == "timesformer-large-finetuned-k600":
          UpperCamelCase				:   Tuple          =							torch.Size([1, 6_0_0]    )
          UpperCamelCase				:   Any          =							torch.tensor([0, 0, 0]    )
      elif model_name == "timesformer-large-finetuned-ssv2":
          UpperCamelCase				:   List[Any]          =							torch.Size([1, 1_7_4]    )
          UpperCamelCase				:   Optional[Any]          =							torch.tensor([0, 0, 0]    )
      elif model_name == "timesformer-hr-finetuned-k400":
          UpperCamelCase				:   List[Any]          =							torch.Size([1, 4_0_0]    )
          UpperCamelCase				:   Optional[int]          =							torch.tensor([-0.9617, -3.7311, -3.7708]    )
      elif model_name == "timesformer-hr-finetuned-k600":
          UpperCamelCase				:   List[Any]          =							torch.Size([1, 6_0_0]    )
          UpperCamelCase				:   Tuple          =							torch.tensor([2.5273, 0.7127, 1.8848]    )
      elif model_name == "timesformer-hr-finetuned-ssv2":
          UpperCamelCase				:   List[str]          =							torch.Size([1, 1_7_4]    )
          UpperCamelCase				:   Tuple          =							torch.tensor([-3.6756, -0.7513, 0.7180]    )
      else:
          raise ValueError(f'Model name not supported. Should be one of {model_names}'    )
  
      # verify logits
      assert logits.shape == expected_shape
      assert torch.allclose(logits[0, :3]						,UpperCamelCase__						,atol=1e-4    )
      print("""Logits ok!"""    )
  
      if pytorch_dump_folder_path is not None:
          print(f'Saving model and image processor to {pytorch_dump_folder_path}'    )
          image_processor.save_pretrained(UpperCamelCase__    )
          model.save_pretrained(UpperCamelCase__    )
  
      if push_to_hub:
          print("""Pushing to the hub..."""    )
          model.push_to_hub(f'fcakyon/{model_name}'    )
  
  
  if __name__ == "__main__":
    __A :		int      							=			argparse.ArgumentParser()
    # Required parameters
    parser.add_argument(
        '''--checkpoint_url''',
        default='''https://drive.google.com/u/1/uc?id=17yvuYp9L4mn-HpIcK5Zo6K3UoOy1kA5l&export=download''',
        type=str,
        help=(
            '''URL of the original PyTorch checkpoint (on Google Drive) you\'d like to convert. Should be a direct'''
            ''' download link.'''
        ),
    )
    parser.add_argument(
        '''--pytorch_dump_folder_path''',
        default='''''',
        type=str,
        help='''Path to the output PyTorch model directory.''',
    )
    parser.add_argument('''--model_name''', default='''timesformer-base-finetuned-k400''', type=str, help='''Name of the model.''')
    parser.add_argument(
        '''--push_to_hub''', action='''store_true''', help='''Whether or not to push the converted model to the 🤗 hub.'''
    )
  
    __A :		str      							=			parser.parse_args()
    convert_timesformer_checkpoint(
        args.checkpoint_url, args.pytorch_dump_folder_path, args.model_name, args.push_to_hub
    )
  
  
  
  
  
style_context: 
  
  
  
  
  """simple docstring"""
  
  
  
  
  import os
  from shutil import copyfile
  from typing import List, Optional, Tuple
  
  from tokenizers import processors
  
  from ...tokenization_utils import AddedToken, BatchEncoding
  from ...tokenization_utils_fast import PreTrainedTokenizerFast
  from ...utils import is_sentencepiece_available, logging
  
  
  if is_sentencepiece_available():
    from .tokenization_mbartaa import MBartaaTokenizer
  else:
    __A :		Tuple      							=    None
  
  
  __A :		Optional[Any]      							=    logging.get_logger(__name__)
  
  __A :		Optional[Any]      							=    {'''vocab_file''': '''sentencepiece.bpe.model''', '''tokenizer_file''': '''tokenizer.json'''}
  
  __A :		Optional[Any]      							=    {
      '''vocab_file''': {
          '''facebook/mbart-large-50-one-to-many-mmt''': (
              '''https://huggingface.co/facebook/mbart-large-50-one-to-many-mmt/resolve/main/sentencepiece.bpe.model'''
          ),
      },
      '''tokenizer_file''': {
          '''facebook/mbart-large-50-one-to-many-mmt''': (
              '''https://huggingface.co/facebook/mbart-large-50-one-to-many-mmt/resolve/main/tokenizer.json'''
          ),
      },
  }
  
  __A :		List[Any]      							=    {
      '''facebook/mbart-large-50-one-to-many-mmt''': 1024,
  }
  
  # fmt: off
  __A :		Dict      							=    ['''ar_AR''', '''cs_CZ''', '''de_DE''', '''en_XX''', '''es_XX''', '''et_EE''', '''fi_FI''', '''fr_XX''', '''gu_IN''', '''hi_IN''', '''it_IT''', '''ja_XX''', '''kk_KZ''', '''ko_KR''', '''lt_LT''', '''lv_LV''', '''my_MM''', '''ne_NP''', '''nl_XX''', '''ro_RO''', '''ru_RU''', '''si_LK''', '''tr_TR''', '''vi_VN''', '''zh_CN''', '''af_ZA''', '''az_AZ''', '''bn_IN''', '''fa_IR''', '''he_IL''', '''hr_HR''', '''id_ID''', '''ka_GE''', '''km_KH''', '''mk_MK''', '''ml_IN''', '''mn_MN''', '''mr_IN''', '''pl_PL''', '''ps_AF''', '''pt_XX''', '''sv_SE''', '''sw_KE''', '''ta_IN''', '''te_IN''', '''th_TH''', '''tl_XX''', '''uk_UA''', '''ur_PK''', '''xh_ZA''', '''gl_ES''', '''sl_SI''']
  class 							lowerCamelCase		( _UpperCAmelCase				):
     lowercase       :  List[Any]      =				VOCAB_FILES_NAMES
     lowercase       :  Optional[Any]      =				PRETRAINED_POSITIONAL_EMBEDDINGS_SIZES
     lowercase       :  List[Any]      =				PRETRAINED_VOCAB_FILES_MAP
     lowercase       :  Tuple      =				['input_ids', 'attention_mask']
     lowercase       :  Optional[int]      =				MBartaaTokenizer
  
     lowercase       :  List[int]      =				[]
     lowercase       :  List[int]      =				[]
  
  
  
  
  
  
  
     def __init__(							self    ,      SCREAMING_SNAKE_CASE_=None    ,      SCREAMING_SNAKE_CASE_=None    ,      SCREAMING_SNAKE_CASE_=None    ,      SCREAMING_SNAKE_CASE_=None    ,      SCREAMING_SNAKE_CASE_="</s>"    ,      SCREAMING_SNAKE_CASE_="</s>"    ,      SCREAMING_SNAKE_CASE_="<s>"    ,      SCREAMING_SNAKE_CASE_="<unk>"    ,      SCREAMING_SNAKE_CASE_="<pad>"    ,      SCREAMING_SNAKE_CASE_="<mask>"    ,      **SCREAMING_SNAKE_CASE_    ,      ):
         # Mask token behave like a normal word, i.e. include the space before it
         UpperCamelCase				:   Optional[int]          =							AddedToken(SCREAMING_SNAKE_CASE_    ,      lstrip=SCREAMING_SNAKE_CASE_    ,      rstrip=SCREAMING_SNAKE_CASE_ ) if isinstance(SCREAMING_SNAKE_CASE_    ,      SCREAMING_SNAKE_CASE_ ) else mask_token
  
         UpperCamelCase				:   Dict          =							kwargs.get("""additional_special_tokens"""    ,      [] )
         kwargs["additional_special_tokens"] += [
             code for code in FAIRSEQ_LANGUAGE_CODES if code not in kwargs["additional_special_tokens"]
         ]
  
         super().__init__(
             SCREAMING_SNAKE_CASE_    ,      src_lang=SCREAMING_SNAKE_CASE_    ,      tgt_lang=SCREAMING_SNAKE_CASE_    ,      tokenizer_file=SCREAMING_SNAKE_CASE_    ,      eos_token=SCREAMING_SNAKE_CASE_    ,      sep_token=SCREAMING_SNAKE_CASE_    ,      cls_token=SCREAMING_SNAKE_CASE_    ,      unk_token=SCREAMING_SNAKE_CASE_    ,      pad_token=SCREAMING_SNAKE_CASE_    ,      mask_token=SCREAMING_SNAKE_CASE_    ,      **SCREAMING_SNAKE_CASE_    ,      )
  
         UpperCamelCase				:   int          =							vocab_file
         UpperCamelCase				:   Optional[Any]          =							False if not self.vocab_file else True
  
         UpperCamelCase				:   List[Any]          =							{
             lang_code: self.convert_tokens_to_ids(SCREAMING_SNAKE_CASE_ ) for lang_code in FAIRSEQ_LANGUAGE_CODES
         }
  
         UpperCamelCase				:   List[str]          =							src_lang if src_lang is not None else """en_XX"""
         UpperCamelCase				:   Union[str, Any]          =							tgt_lang
         UpperCamelCase				:   Union[str, Any]          =							self.lang_code_to_id[self._src_lang]
         self.set_src_lang_special_tokens(self._src_lang )
  
  
  
  
  
  
  
     @property
     def       a_							(							self ):
         return self._src_lang
  
  
  
  
  
  
  
     @src_lang.setter
     def       a_							(							self    ,      SCREAMING_SNAKE_CASE_ ):
         UpperCamelCase				:   str          =							new_src_lang
         self.set_src_lang_special_tokens(self._src_lang )
  
  
  
  
  
  
  
     def       a_							(							self    ,      SCREAMING_SNAKE_CASE_    ,      SCREAMING_SNAKE_CASE_ = None ):
         if token_ids_a is None:
             return self.prefix_tokens + token_ids_a + self.suffix_tokens
         # We don't expect to process pairs, but leave the pair logic for API consistency
         return self.prefix_tokens + token_ids_a + token_ids_a + self.suffix_tokens
  
  
  
  
  
  
  
     def       a_							(							self    ,      SCREAMING_SNAKE_CASE_    ,      SCREAMING_SNAKE_CASE_ = "en_XX"    ,      SCREAMING_SNAKE_CASE_ = None    ,      SCREAMING_SNAKE_CASE_ = "ro_RO"    ,      **SCREAMING_SNAKE_CASE_    ,      ):
         UpperCamelCase				:   str          =							src_lang
         UpperCamelCase				:   Optional[Any]          =							tgt_lang
         return super().prepare_seqaseq_batch(SCREAMING_SNAKE_CASE_    ,      SCREAMING_SNAKE_CASE_    ,      **SCREAMING_SNAKE_CASE_ )
  
  
  
  
  
  
  
     def       a_							(							self ):
         return self.set_src_lang_special_tokens(self.src_lang )
  
  
  
  
  
  
  
     def       a_							(							self ):
         return self.set_tgt_lang_special_tokens(self.tgt_lang )
  
  
  
  
  
  
  
     def       a_							(							self    ,      SCREAMING_SNAKE_CASE_ ):
         UpperCamelCase				:   Optional[Any]          =							self.convert_tokens_to_ids(SCREAMING_SNAKE_CASE_ )
         UpperCamelCase				:   Tuple          =							[self.cur_lang_code_id]
         UpperCamelCase				:   Optional[int]          =							[self.eos_token_id]
  
         UpperCamelCase				:   Dict          =							self.convert_ids_to_tokens(self.prefix_tokens )
         UpperCamelCase				:   Any          =							self.convert_ids_to_tokens(self.suffix_tokens )
  
         UpperCamelCase				:   Any          =							processors.TemplateProcessing(
             single=prefix_tokens_str + ["""$A"""] + suffix_tokens_str    ,      pair=prefix_tokens_str + ["""$A""", """$B"""] + suffix_tokens_str    ,      special_tokens=list(zip(prefix_tokens_str + suffix_tokens_str    ,      self.prefix_tokens + self.suffix_tokens ) )    ,      )
  
  
  
  
  
  
  
     def       a_							(							self    ,      SCREAMING_SNAKE_CASE_ ):
         UpperCamelCase				:   Any          =							self.convert_tokens_to_ids(SCREAMING_SNAKE_CASE_ )
         UpperCamelCase				:   Optional[Any]          =							[self.cur_lang_code_id]
         UpperCamelCase				:   Tuple          =							[self.eos_token_id]
  
         UpperCamelCase				:   str          =							self.convert_ids_to_tokens(self.prefix_tokens )
         UpperCamelCase				:   Dict          =							self.convert_ids_to_tokens(self.suffix_tokens )
  
         UpperCamelCase				:   Dict          =							processors.TemplateProcessing(
             single=prefix_tokens_str + ["""$A"""] + suffix_tokens_str    ,      pair=prefix_tokens_str + ["""$A""", """$B"""] + suffix_tokens_str    ,      special_tokens=list(zip(prefix_tokens_str + suffix_tokens_str    ,      self.prefix_tokens + self.suffix_tokens ) )    ,      )
  
  
  
  
  
  
  
     def       a_							(							self    ,      SCREAMING_SNAKE_CASE_    ,      SCREAMING_SNAKE_CASE_    ,      SCREAMING_SNAKE_CASE_    ,      SCREAMING_SNAKE_CASE_    ,      **SCREAMING_SNAKE_CASE_ ):
         if src_lang is None or tgt_lang is None:
             raise ValueError("""Translation requires a `src_lang` and a `tgt_lang` for this model""" )
         UpperCamelCase				:   Optional[int]          =							src_lang
         UpperCamelCase				:   Optional[int]          =							self(SCREAMING_SNAKE_CASE_    ,      add_special_tokens=SCREAMING_SNAKE_CASE_    ,      return_tensors=SCREAMING_SNAKE_CASE_    ,      **SCREAMING_SNAKE_CASE_ )
         UpperCamelCase				:   Dict          =							self.convert_tokens_to_ids(SCREAMING_SNAKE_CASE_ )
         UpperCamelCase				:   str          =							tgt_lang_id
         return inputs
  
  
  
  
  
  
  
     def       a_							(							self    ,      SCREAMING_SNAKE_CASE_    ,      SCREAMING_SNAKE_CASE_ = None ):
         if not self.can_save_slow_tokenizer:
             raise ValueError(
                 """Your fast tokenizer does not have the necessary information to save the vocabulary for a slow """
                 """tokenizer.""" )
  
         if not os.path.isdir(SCREAMING_SNAKE_CASE_ ):
             logger.error(f'Vocabulary path ({save_directory}) should be a directory' )
             return
         UpperCamelCase				:   Optional[int]          =							os.path.join(
             SCREAMING_SNAKE_CASE_    ,      (filename_prefix + """-""" if filename_prefix else """""") + VOCAB_FILES_NAMES["""vocab_file"""] )
  
         if os.path.abspath(self.vocab_file ) != os.path.abspath(SCREAMING_SNAKE_CASE_ ):
             copyfile(self.vocab_file    ,      SCREAMING_SNAKE_CASE_ )
  
         return (out_vocab_file,)
  
  
  
  
  