





import itertools
import json
import os
import unittest

from transformers import AddedToken, LongformerTokenizer, LongformerTokenizerFast
from transformers.models.longformer.tokenization_longformer import VOCAB_FILES_NAMES
from transformers.testing_utils import require_tokenizers, slow

from ...test_tokenization_common import TokenizerTesterMixin
@require_tokenizers
class     SCREAMING_SNAKE_CASE       (UpperCAmelCase      ,     unittest.TestCase				):
   _UpperCamelCase   :		Union[str, Any]			 =	LongformerTokenizer
   _UpperCamelCase   :		Union[str, Any]			 =	True
   _UpperCamelCase   :		Any			 =	LongformerTokenizerFast
   _UpperCamelCase   :		List[Any]			 =	True


   def 	SCREAMING_SNAKE_CASE_							(   self      :    Optional[Any]	)->       List[str]:





     """simple docstring"""







     super().setUp()

     # Adapted from Sennrich et al. 2015 and https://github.com/rsennrich/subword-nmt
     lowercase__           =  [
         'l',
         'o',
         'w',
         'e',
         'r',
         's',
         't',
         'i',
         'd',
         'n',
         '\u0120',
         '\u0120l',
         '\u0120n',
         '\u0120lo',
         '\u0120low',
         'er',
         '\u0120lowest',
         '\u0120newer',
         '\u0120wider',
         '<unk>',
     ]
     lowercase__           =  dict(zip(a      ,					range(len(a	)	)	)	)
     lowercase__           =  ['#version: 0.2', '\u0120 l', '\u0120l o', '\u0120lo w', 'e r', '']
     lowercase__           =  {'unk_token': '<unk>'}

     lowercase__           =  os.path.join(self.tmpdirname      ,					VOCAB_FILES_NAMES['vocab_file']	)
     lowercase__           =  os.path.join(self.tmpdirname      ,					VOCAB_FILES_NAMES['merges_file']	)
     with open(self.vocab_file      ,					'w'      ,					encoding='utf-8'	) as fp:
       fp.write(json.dumps(a	) + '\n'	)
     with open(self.merges_file      ,					'w'      ,					encoding='utf-8'	) as fp:
       fp.write('\n'.join(a	)	)


   def 	SCREAMING_SNAKE_CASE_							(   self      :    str      ,					**a      :    Dict	)->       int:





     """simple docstring"""







     kwargs.update(self.special_tokens_map	)
     return self.tokenizer_class.from_pretrained(self.tmpdirname      ,					**a	)


   def 	SCREAMING_SNAKE_CASE_							(   self      :    Tuple      ,					**a      :    Union[str, Any]	)->       List[str]:





     """simple docstring"""







     kwargs.update(self.special_tokens_map	)
     return self.rust_tokenizer_class.from_pretrained(self.tmpdirname      ,					**a	)


   def 	SCREAMING_SNAKE_CASE_							(   self      :    Optional[Any]      ,					a      :    Tuple	)->       Any:





     """simple docstring"""







     lowercase__           =  'lower newer'
     lowercase__           =  'lower newer'
     return input_text, output_text


   def 	SCREAMING_SNAKE_CASE_							(   self      :    Optional[int]	)->       Dict:





     """simple docstring"""







     lowercase__           =  self.tokenizer_class(self.vocab_file      ,					self.merges_file      ,					**self.special_tokens_map	)
     lowercase__           =  'lower newer'
     lowercase__           =  ['l', 'o', 'w', 'er', '\u0120', 'n', 'e', 'w', 'er']
     lowercase__           =  tokenizer.tokenize(a	)  # , add_prefix_space=True)
     self.assertListEqual(a      ,					a	)

     lowercase__           =  tokens + [tokenizer.unk_token]
     lowercase__           =  [0, 1, 2, 15, 10, 9, 3, 2, 15, 19]
     self.assertListEqual(tokenizer.convert_tokens_to_ids(a	)      ,					a	)


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





     """simple docstring"""







     lowercase__           =  self.get_tokenizer()

     self.assertListEqual(tokenizer.encode('Hello world!'      ,					add_special_tokens=a	)      ,					[0, 31_414, 232, 328, 2]	)
     self.assertListEqual(
         tokenizer.encode('Hello world! cécé herlolip 418'      ,					add_special_tokens=a	)      ,					[0, 31_414, 232, 328, 740, 1_140, 12_695, 69, 46_078, 1_588, 2]      ,					)


   @slow
   def 	SCREAMING_SNAKE_CASE_							(   self      :    int	)->       str:





     """simple docstring"""







     lowercase__           =  self.tokenizer_class.from_pretrained('allenai/longformer-base-4096'	)

     lowercase__           =  tokenizer.encode('sequence builders'      ,					add_special_tokens=a	)
     lowercase__           =  tokenizer.encode('multi-sequence build'      ,					add_special_tokens=a	)

     lowercase__           =  tokenizer.encode(
         'sequence builders'      ,					add_special_tokens=a      ,					add_prefix_space=a	)
     lowercase__           =  tokenizer.encode(
         'sequence builders'      ,					'multi-sequence build'      ,					add_special_tokens=a      ,					add_prefix_space=a	)

     lowercase__           =  tokenizer.build_inputs_with_special_tokens(a	)
     lowercase__           =  tokenizer.build_inputs_with_special_tokens(a      ,					a	)

     assert encoded_sentence == encoded_text_from_decode
     assert encoded_pair == encoded_pair_from_decode


   def 	SCREAMING_SNAKE_CASE_							(   self      :    str	)->       List[Any]:





     """simple docstring"""







     lowercase__           =  self.get_tokenizer()

     lowercase__           =  'Encode this sequence.'
     lowercase__           =  tokenizer.byte_encoder[' '.encode('utf-8'	)[0]]

     # Testing encoder arguments
     lowercase__           =  tokenizer.encode(a      ,					add_special_tokens=a      ,					add_prefix_space=a	)
     lowercase__           =  tokenizer.convert_ids_to_tokens(encoded[0]	)[0]
     self.assertNotEqual(a      ,					a	)

     lowercase__           =  tokenizer.encode(a      ,					add_special_tokens=a      ,					add_prefix_space=a	)
     lowercase__           =  tokenizer.convert_ids_to_tokens(encoded[0]	)[0]
     self.assertEqual(a      ,					a	)

     tokenizer.add_special_tokens({'bos_token': '<s>'}	)
     lowercase__           =  tokenizer.encode(a      ,					add_special_tokens=a	)
     lowercase__           =  tokenizer.convert_ids_to_tokens(encoded[1]	)[0]
     self.assertNotEqual(a      ,					a	)

     # Testing spaces after special tokens
     lowercase__           =  '<mask>'
     tokenizer.add_special_tokens(
         {'mask_token': AddedToken(a      ,					lstrip=a      ,					rstrip=a	)}	)  # mask token has a left space
     lowercase__           =  tokenizer.convert_tokens_to_ids(a	)

     lowercase__           =  'Encode <mask> sequence'
     lowercase__           =  'Encode <mask>sequence'

     lowercase__           =  tokenizer.encode(a	)
     lowercase__           =  encoded.index(a	)
     lowercase__           =  tokenizer.convert_ids_to_tokens(encoded[mask_loc + 1]	)[0]
     self.assertEqual(a      ,					a	)

     lowercase__           =  tokenizer.encode(a	)
     lowercase__           =  encoded.index(a	)
     lowercase__           =  tokenizer.convert_ids_to_tokens(encoded[mask_loc + 1]	)[0]
     self.assertNotEqual(a      ,					a	)


   def 	SCREAMING_SNAKE_CASE_							(   self      :    int	)->       Dict:





     """simple docstring"""







     pass


   def 	SCREAMING_SNAKE_CASE_							(   self      :    Tuple	)->       Optional[Any]:





     """simple docstring"""







     for tokenizer, pretrained_name, kwargs in self.tokenizers_list:
       with self.subTest(f"""{tokenizer.__class__.__name__} ({pretrained_name})"""	):
         lowercase__           =  self.rust_tokenizer_class.from_pretrained(a      ,					**a	)
         lowercase__           =  self.tokenizer_class.from_pretrained(a      ,					**a	)
         lowercase__           =  'A, <mask> AllenNLP sentence.'
         lowercase__           =  tokenizer_r.encode_plus(a      ,					add_special_tokens=a      ,					return_token_type_ids=a	)
         lowercase__           =  tokenizer_p.encode_plus(a      ,					add_special_tokens=a      ,					return_token_type_ids=a	)

         # token_type_ids should put 0 everywhere
         self.assertEqual(sum(tokens_r['token_type_ids']	)      ,					sum(tokens_p['token_type_ids']	)	)

         # attention_mask should put 1 everywhere, so sum over length should be 1
         self.assertEqual(
             sum(tokens_r['attention_mask']	) / len(tokens_r['attention_mask']	)      ,					sum(tokens_p['attention_mask']	) / len(tokens_p['attention_mask']	)      ,					)

         lowercase__           =  tokenizer_r.convert_ids_to_tokens(tokens_r['input_ids']	)
         lowercase__           =  tokenizer_p.convert_ids_to_tokens(tokens_p['input_ids']	)

         # Rust correctly handles the space before the mask while python doesnt
         self.assertSequenceEqual(tokens_p['input_ids']      ,					[0, 250, 6, 50_264, 3_823, 487, 21_992, 3_645, 4, 2]	)
         self.assertSequenceEqual(tokens_r['input_ids']      ,					[0, 250, 6, 50_264, 3_823, 487, 21_992, 3_645, 4, 2]	)

         self.assertSequenceEqual(
             a      ,					['<s>', 'A', ',', '<mask>', 'ĠAllen', 'N', 'LP', 'Ġsentence', '.', '</s>']	)
         self.assertSequenceEqual(
             a      ,					['<s>', 'A', ',', '<mask>', 'ĠAllen', 'N', 'LP', 'Ġsentence', '.', '</s>']	)


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





     """simple docstring"""







     for trim_offsets, add_prefix_space in itertools.product([True, False]      ,					repeat=2	):
       lowercase__           =  self.rust_tokenizer_class.from_pretrained(
           self.tmpdirname      ,					use_fast=a      ,					add_prefix_space=a      ,					trim_offsets=a	)

       lowercase__           =  json.loads(tokenizer_r.backend_tokenizer.pre_tokenizer.__getstate__()	)
       lowercase__           =  json.loads(tokenizer_r.backend_tokenizer.post_processor.__getstate__()	)

       self.assertEqual(pre_tokenizer_state['add_prefix_space']      ,					a	)

       self.assertEqual(post_processor_state['add_prefix_space']      ,					a	)
       self.assertEqual(post_processor_state['trim_offsets']      ,					a	)


   def 	SCREAMING_SNAKE_CASE_							(   self      :    str	)->       Optional[Any]:





     """simple docstring"""







     for tokenizer, pretrained_name, kwargs in self.tokenizers_list:
       with self.subTest(f"""{tokenizer.__class__.__name__} ({pretrained_name})"""	):
         lowercase__           =  'hello'  # `hello` is a token in the vocabulary of `pretrained_name`
         lowercase__           =  f"""{text_of_1_token} {text_of_1_token}"""

         lowercase__           =  self.rust_tokenizer_class.from_pretrained(
             a      ,					use_fast=a      ,					add_prefix_space=a      ,					trim_offsets=a	)
         lowercase__           =  tokenizer_r(a      ,					return_offsets_mapping=a      ,					add_special_tokens=a	)
         self.assertEqual(encoding.offset_mapping[0]      ,					(0, len(a	))	)
         self.assertEqual(
             encoding.offset_mapping[1]      ,					(len(a	) + 1, len(a	) + 1 + len(a	))      ,					)

         lowercase__           =  self.rust_tokenizer_class.from_pretrained(
             a      ,					use_fast=a      ,					add_prefix_space=a      ,					trim_offsets=a	)
         lowercase__           =  tokenizer_r(a      ,					return_offsets_mapping=a      ,					add_special_tokens=a	)
         self.assertEqual(encoding.offset_mapping[0]      ,					(0, len(a	))	)
         self.assertEqual(
             encoding.offset_mapping[1]      ,					(len(a	) + 1, len(a	) + 1 + len(a	))      ,					)

         lowercase__           =  self.rust_tokenizer_class.from_pretrained(
             a      ,					use_fast=a      ,					add_prefix_space=a      ,					trim_offsets=a	)
         lowercase__           =  tokenizer_r(a      ,					return_offsets_mapping=a      ,					add_special_tokens=a	)
         self.assertEqual(encoding.offset_mapping[0]      ,					(0, len(a	))	)
         self.assertEqual(
             encoding.offset_mapping[1]      ,					(len(a	), len(a	) + 1 + len(a	))      ,					)

         lowercase__           =  self.rust_tokenizer_class.from_pretrained(
             a      ,					use_fast=a      ,					add_prefix_space=a      ,					trim_offsets=a	)
         lowercase__           =  tokenizer_r(a      ,					return_offsets_mapping=a      ,					add_special_tokens=a	)
         self.assertEqual(encoding.offset_mapping[0]      ,					(0, len(a	))	)
         self.assertEqual(
             encoding.offset_mapping[1]      ,					(len(a	), len(a	) + 1 + len(a	))      ,					)

         lowercase__           =  f""" {text}"""

         # tokenizer_r = self.rust_tokenizer_class.from_pretrained(
         #     pretrained_name, use_fast=True, add_prefix_space=True, trim_offsets=True
         # )
         # encoding = tokenizer_r(text, return_offsets_mapping=True, add_special_tokens=False)
         # self.assertEqual(encoding.offset_mapping[0], (1, 1 + len(text_of_1_token)))
         # self.assertEqual(
         #     encoding.offset_mapping[1],
         #     (1 + len(text_of_1_token) + 1, 1 + len(text_of_1_token) + 1 + len(text_of_1_token)),
         # )

         lowercase__           =  self.rust_tokenizer_class.from_pretrained(
             a      ,					use_fast=a      ,					add_prefix_space=a      ,					trim_offsets=a	)
         lowercase__           =  tokenizer_r(a      ,					return_offsets_mapping=a      ,					add_special_tokens=a	)
         self.assertEqual(encoding.offset_mapping[0]      ,					(1, 1 + len(a	))	)
         self.assertEqual(
             encoding.offset_mapping[1]      ,					(1 + len(a	) + 1, 1 + len(a	) + 1 + len(a	))      ,					)

         lowercase__           =  self.rust_tokenizer_class.from_pretrained(
             a      ,					use_fast=a      ,					add_prefix_space=a      ,					trim_offsets=a	)
         lowercase__           =  tokenizer_r(a      ,					return_offsets_mapping=a      ,					add_special_tokens=a	)
         self.assertEqual(encoding.offset_mapping[0]      ,					(0, 1 + len(a	))	)
         self.assertEqual(
             encoding.offset_mapping[1]      ,					(1 + len(a	), 1 + len(a	) + 1 + len(a	))      ,					)

         lowercase__           =  self.rust_tokenizer_class.from_pretrained(
             a      ,					use_fast=a      ,					add_prefix_space=a      ,					trim_offsets=a	)
         lowercase__           =  tokenizer_r(a      ,					return_offsets_mapping=a      ,					add_special_tokens=a	)
         self.assertEqual(encoding.offset_mapping[0]      ,					(0, 1 + len(a	))	)
         self.assertEqual(
             encoding.offset_mapping[1]      ,					(1 + len(a	), 1 + len(a	) + 1 + len(a	))      ,					)









import os
import re
import unicodedata
from shutil import copyfile
from typing import TYPE_CHECKING, Any, Dict, List, Optional, Tuple, Union

import sentencepiece as spm

from ...tokenization_utils import PreTrainedTokenizer
from ...utils import is_torch_available, logging


if is_torch_available():
      import torch


if TYPE_CHECKING:
      from transformers.pipelines.conversational import Conversation


lowercase_          =		logging.get_logger(__name__)
lowercase_          =		{"""vocab_file""": """spiece.model"""}

lowercase_          =		{
    """vocab_file""": {
        """AI-Sweden/gpt-sw3-126m""": """https://huggingface.co/AI-Sweden/gpt-sw3-126m/resolve/main/spiece.model""",
        """AI-Sweden/gpt-sw3-350m""": """https://huggingface.co/AI-Sweden/gpt-sw3-350m/resolve/main/spiece.model""",
        """AI-Sweden/gpt-sw3-1.6b""": """https://huggingface.co/AI-Sweden/gpt-sw3-1.6b/resolve/main/spiece.model""",
        """AI-Sweden/gpt-sw3-6.7b""": """https://huggingface.co/AI-Sweden/gpt-sw3-6.7b/resolve/main/spiece.model""",
        """AI-Sweden/gpt-sw3-20b""": """https://huggingface.co/AI-Sweden/gpt-sw3-20b/resolve/main/spiece.model""",
    }
}

lowercase_          =		{
    """AI-Sweden/gpt-sw3-126m""": 2_048,
    """AI-Sweden/gpt-sw3-350m""": 2_048,
    """AI-Sweden/gpt-sw3-1.6b""": 2_048,
    """AI-Sweden/gpt-sw3-6.7b""": 2_048,
    """AI-Sweden/gpt-sw3-20b""": 2_048,
}
class     SCREAMING_SNAKE_CASE       (UpperCAmelCase				):
   _UpperCamelCase   :		List[str]			 =	VOCAB_FILES_NAMES
   _UpperCamelCase   :		List[Any]			 =	PRETRAINED_VOCAB_FILES_MAP
   _UpperCamelCase   :		Union[str, Any]			 =	PRETRAINED_POSITIONAL_EMBEDDINGS_SIZES
   _UpperCamelCase   :		Any			 =	['input_ids', 'attention_mask']


   def __init__(   self      :    Optional[Any]      ,					a      :    Tuple      ,					a      :    Optional[int]=False      ,					a      :    str=False      ,					a      :    str=False      ,					a      :    Tuple=None      ,					a      :    Any=None      ,					a      :    Union[str, Any]=None      ,					a      :    Union[str, Any]=None      ,					a      :    Optional[Dict[str, Any]] = None      ,					**a      :    Optional[int]      ,					)->       None:





     """simple docstring"""







     lowercase__           =  {} if sp_model_kwargs is None else sp_model_kwargs

     lowercase__           =  kwargs.get('name_or_path'	)
     if name_or_path is None:
       logger.warning(
           'name_or_path not provided, will work for all GPTSw3 models except gpt-sw3-7b,'
           ' you are testing the model, this can safely be ignored'	)
       lowercase__           =  'None'

     # Default definitions for our 2 tokenizer versions, with None-checks to enable proper testing
     lowercase__           =  '<|endoftext|>' if eos_token is None else eos_token
     lowercase__           =  '<unk>' if unk_token is None else unk_token
     if "gpt-sw3-7b" in name_or_path:
       lowercase__           =  unk_token if pad_token is None else pad_token
       lowercase__           =  eos_token if bos_token is None else bos_token
     else:
       lowercase__           =  '<pad>' if pad_token is None else pad_token
       lowercase__           =  '<s>' if bos_token is None else bos_token

     super().__init__(
         do_lower_case=a      ,					remove_space=a      ,					keep_accents=a      ,					bos_token=a      ,					eos_token=a      ,					unk_token=a      ,					pad_token=a      ,					sp_model_kwargs=self.sp_model_kwargs      ,					**a      ,					)

     lowercase__           =  do_lower_case
     lowercase__           =  remove_space
     lowercase__           =  keep_accents
     lowercase__           =  vocab_file

     lowercase__           =  spm.SentencePieceProcessor(**self.sp_model_kwargs	)
     self.sp_model.Load(a	)

     # Used for whitespace normalization in input texts
     # fmt : off
     lowercase__           =  {' ', ' ', ' ', ' ', ' ', '　', ' ', ' ', ' ', ' ', '￼', ''}
     # fmt : on

     # Regular expression to remove non-printing characters (e.g. some unicode control chars) in preprocessing
     lowercase__           =  re.compile(
         f"""[{"".join(map(a      ,					list(range(0      ,					9	)	) + list(range(11      ,					32	)	) + list(range(127      ,					160	)	) + [160, 173, 8_203]	)	)}]"""	)


   def __getstate__(   self      :    Any	)->       str:





     """simple docstring"""







     lowercase__           =  self.__dict__.copy()
     lowercase__           =  None
     return state


   def __setstate__(   self      :    int      ,					a      :    Optional[Any]	)->       int:





     """simple docstring"""







     lowercase__           =  d

     # for backward compatibility
     if not hasattr(self      ,					'sp_model_kwargs'	):
       lowercase__           =  {}

     lowercase__           =  spm.SentencePieceProcessor(**self.sp_model_kwargs	)
     self.sp_model.Load(self.vocab_file	)


   @property
   # Copied from transformers.models.albert.tokenization_albert.AlbertTokenizer.vocab_size
   def 	SCREAMING_SNAKE_CASE_							(   self      :    Union[str, Any]	)->       int:





     """simple docstring"""







     return len(self.sp_model	)


   def 	SCREAMING_SNAKE_CASE_							(   self      :    Tuple      ,					a      :    str	)->       str:





     """simple docstring"""







     lowercase__           =  self.non_printing_characters_re.sub(''      ,					a	)

     # Normalize whitespaces
     lowercase__           =  ''.join([char if char not in self.whitespaces else ' ' for char in text]	)

     # NFC Unicode normalization
     lowercase__           =  unicodedata.normalize('NFC'      ,					a	)
     return text


   def 	SCREAMING_SNAKE_CASE_							(   self      :    Any      ,					a      :    str      ,					**a      :    Tuple	)->       List[str]:





     """simple docstring"""







     lowercase__           =  self.preprocess_text(a	)
     return self.sp_model.encode(a      ,					out_type=a	)


   def 	SCREAMING_SNAKE_CASE_							(   self      :    Optional[int]      ,					a      :    str	)->       int:





     """simple docstring"""







     return self.sp_model.PieceToId(a	)


   def 	SCREAMING_SNAKE_CASE_							(   self      :    Optional[Any]      ,					a      :    int	)->       str:





     """simple docstring"""







     return self.sp_model.IdToPiece(a	)


   @staticmethod
   def 	SCREAMING_SNAKE_CASE_							(   a      :    str	)->       str:





     """simple docstring"""







     return out_string


   def 	SCREAMING_SNAKE_CASE_							(   self      :    Union[str, Any]      ,					a      :    List[str]	)->       str:





     """simple docstring"""







     lowercase__           =  []
     lowercase__           =  ''
     lowercase__           =  False
     for token in tokens:
       # make sure that special tokens are not decoded using sentencepiece model
       if token in self.all_special_tokens:
         # TODO: Check if this is needed, as it ensures that decode(encode(doc)) != doc by adding extra whitespace in the decoded document
         if not prev_is_special:
           out_string += " "

         out_string += self.sp_model.decode(a	) + token
         lowercase__           =  True
         lowercase__           =  []
       else:
         current_sub_tokens.append(a	)
         lowercase__           =  False
     out_string += self.sp_model.decode(a	)

     return out_string


   def 	SCREAMING_SNAKE_CASE_							(   self      :    List[str]	)->       Dict[str, int]:





     """simple docstring"""







     lowercase__           =  {self.convert_ids_to_tokens(a	): i for i in range(self.vocab_size	)}
     vocab.update(self.added_tokens_encoder	)
     return vocab


   def 	SCREAMING_SNAKE_CASE_							(   self      :    Any      ,					a      :    str      ,					a      :    Optional[str] = None	)->       Tuple[str]:





     """simple docstring"""







     if not os.path.isdir(a	):
       logger.error(f"""Vocabulary path ({save_directory}) should be a directory"""	)
       return
     lowercase__           =  os.path.join(
         a      ,					(filename_prefix + '-' if filename_prefix else '') + VOCAB_FILES_NAMES['vocab_file']	)

     if os.path.abspath(self.vocab_file	) != os.path.abspath(a	) and os.path.isfile(self.vocab_file	):
       copyfile(self.vocab_file      ,					a	)
     elif not os.path.isfile(self.vocab_file	):
       with open(a      ,					'wb'	) as fi:
         lowercase__           =  self.sp_model.serialized_model_proto()
         fi.write(a	)

     return (out_vocab_file,)


   def 	SCREAMING_SNAKE_CASE_							(   self      :    Union[str, Any]      ,					a      :    Union[str, List[str]]      ,					a      :    Union[str, bool] = False	)->       Union[List[int], List[List[int]], "torch.Tensor"]:





     """simple docstring"""







     if isinstance(a      ,					a	):
       lowercase__           =  self.preprocess_text(a	)
       lowercase__           =  self.sp_model.encode(a	)
     else:
       lowercase__           =  [self.preprocess_text(a	) for t in text]
       lowercase__           =  self.sp_model.encode(a	)

     if return_tensors is True or return_tensors == "pt":
       lowercase__           =  torch.tensor(a	)

     return token_ids


   def 	SCREAMING_SNAKE_CASE_							(   self      :    Optional[Any]      ,					a      :    Union[int, List[int]]	)->       str:





     """simple docstring"""







     return self.sp_model.decode(a	)


   def 	SCREAMING_SNAKE_CASE_							(   self      :    Any      ,					a      :    "Conversation"	)->       List[int]:





     """simple docstring"""







     lowercase__           =  [f"""User: {text}""" if is_user else f"""Bot: {text}""" for is_user, text in conversation.iter_texts()]
     lowercase__           =  (
         f"""{self.eos_token}{self.bos_token}""" + f"""{self.bos_token}""".join(a	) + f"""{self.bos_token}Bot:"""
     )
     return self.encode(text=a	)


