



"""simple docstring"""





import os
import unittest

from transformers.models.phobert.tokenization_phobert import VOCAB_FILES_NAMES, PhobertTokenizer

from ...test_tokenization_common import TokenizerTesterMixin
class 				lowercase__       (   SCREAMING_SNAKE_CASE    , unittest.TestCase				):







       '''simple docstring'''


       UpperCamelCase						=					PhobertTokenizer
       UpperCamelCase						=					False



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


             '''simple docstring'''




             super().setUp()

             # Adapted from Sennrich et al. 2015 and https://github.com/rsennrich/subword-nmt
             UpperCAmelCase_      			=							["T@@", "i", "I", "R@@", "r", "e@@"]
             UpperCAmelCase_      			=							dict(zip(_UpperCAmelCase		,    range(len(_UpperCAmelCase   )   )   )   )
             UpperCAmelCase_      			=							["#version: 0.2", "l à</w>"]
             UpperCAmelCase_      			=							{"unk_token": "<unk>"}

             UpperCAmelCase_      			=							os.path.join(self.tmpdirname		,    VOCAB_FILES_NAMES["vocab_file"]   )
             UpperCAmelCase_      			=							os.path.join(self.tmpdirname		,    VOCAB_FILES_NAMES["merges_file"]   )

             with open(self.vocab_file		,    "w"		,    encoding="utf-8"   ) as fp:
                   for token in vocab_tokens:
                         fp.write(F"""{token} {vocab_tokens[token]}\n"""   )
             with open(self.merges_file		,    "w"		,    encoding="utf-8"   ) as fp:
                   fp.write("\n".join(_UpperCAmelCase   )   )



       def 					lowercase__    (							self      :  Optional[Any]		,    **_UpperCAmelCase      :  Dict   )			->						List[Any]:


             '''simple docstring'''




             kwargs.update(self.special_tokens_map   )
             return PhobertTokenizer.from_pretrained(self.tmpdirname		,    **_UpperCAmelCase   )



       def 					lowercase__    (							self      :  Optional[int]		,    _UpperCAmelCase      :  str   )			->						List[Any]:


             '''simple docstring'''




             UpperCAmelCase_      			=							"Tôi là VinAI Research"
             UpperCAmelCase_      			=							"T<unk> i <unk> <unk> <unk> <unk> <unk> <unk> I Re<unk> e<unk> <unk> <unk> <unk>"
             return input_text, output_text







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


             '''simple docstring'''




             UpperCAmelCase_      			=							PhobertTokenizer(self.vocab_file		,    self.merges_file		,    **self.special_tokens_map   )
             UpperCAmelCase_      			=							"Tôi là VinAI Research"
             UpperCAmelCase_      			=							"T@@ ô@@ i l@@ à V@@ i@@ n@@ A@@ I R@@ e@@ s@@ e@@ a@@ r@@ c@@ h".split()
             UpperCAmelCase_      			=							tokenizer.tokenize(_UpperCAmelCase   )
             print(_UpperCAmelCase   )
             self.assertListEqual(_UpperCAmelCase		,    _UpperCAmelCase   )

             UpperCAmelCase_      			=							tokens + [tokenizer.unk_token]

             UpperCAmelCase_      			=							[4, 3, 5, 3, 3, 3, 3, 3, 3, 6, 7, 9, 3, 9, 3, 3, 3, 3, 3]
             self.assertListEqual(tokenizer.convert_tokens_to_ids(_UpperCAmelCase   )		,    _UpperCAmelCase   )









"""simple docstring"""





# Copyright 2023 The HuggingFace Team. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
from typing import TYPE_CHECKING

from ...utils import OptionalDependencyNotAvailable, _LazyModule, is_torch_available


lowerCamelCase       	=						{
    """configuration_mgp_str""": ["""MGP_STR_PRETRAINED_CONFIG_ARCHIVE_MAP""", """MgpstrConfig"""],
    """processing_mgp_str""": ["""MgpstrProcessor"""],
    """tokenization_mgp_str""": ["""MgpstrTokenizer"""],
}

try:
  if not is_torch_available():
    raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
  pass
else:
  lowerCamelCase       	=						[
      """MGP_STR_PRETRAINED_MODEL_ARCHIVE_LIST""",
      """MgpstrModel""",
      """MgpstrPreTrainedModel""",
      """MgpstrForSceneTextRecognition""",
  ]

if TYPE_CHECKING:
  from .configuration_mgp_str import MGP_STR_PRETRAINED_CONFIG_ARCHIVE_MAP, MgpstrConfig
  from .processing_mgp_str import MgpstrProcessor
  from .tokenization_mgp_str import MgpstrTokenizer

  try:
    if not is_torch_available():
      raise OptionalDependencyNotAvailable()
  except OptionalDependencyNotAvailable:
    pass
  else:
    from .modeling_mgp_str import (
        MGP_STR_PRETRAINED_MODEL_ARCHIVE_LIST,
        MgpstrForSceneTextRecognition,
        MgpstrModel,
        MgpstrPreTrainedModel,
    )
else:
  import sys

  lowerCamelCase       	=						_LazyModule(__name__, globals()["""__file__"""], _import_structure, module_spec=__spec__)




