




'''simple docstring'''



import json
import os
import unittest

from transformers.models.roc_bert.tokenization_roc_bert import (
    VOCAB_FILES_NAMES,
    RoCBertBasicTokenizer,
    RoCBertTokenizer,
    RoCBertWordpieceTokenizer,
    _is_control,
    _is_punctuation,
    _is_whitespace,
)
from transformers.testing_utils import require_tokenizers, slow

from ...test_tokenization_common import TokenizerTesterMixin, filter_non_english







@require_tokenizers
class 		lowercase_   (			A					,  unittest.TestCase       ):


   """simple docstring"""

   lowerCamelCase_      =						RoCBertTokenizer
   lowerCamelCase_      =						None
   lowerCamelCase_      =						False
   lowerCamelCase_      =						True
   lowerCamelCase_      =						filter_non_english



   def 							lowerCAmelCase_      (   self :     Tuple   ):

      """simple docstring"""
      super().setUp()

      _SCREAMING_SNAKE_CASE	=				["[UNK]", "[CLS]", "[SEP]", "[PAD]", "[MASK]", "你", "好", "是", "谁", "a", "b", "c", "d"]
      _SCREAMING_SNAKE_CASE	=				{}
      _SCREAMING_SNAKE_CASE	=				{}
      for i, value in enumerate(__lowerCamelCase   ):
         _SCREAMING_SNAKE_CASE	=				i
         _SCREAMING_SNAKE_CASE	=				i
      _SCREAMING_SNAKE_CASE	=				os.path.join(self.tmpdirname  ,				VOCAB_FILES_NAMES["vocab_file"]   )
      _SCREAMING_SNAKE_CASE	=				os.path.join(self.tmpdirname  ,				VOCAB_FILES_NAMES["word_shape_file"]   )
      _SCREAMING_SNAKE_CASE	=				os.path.join(self.tmpdirname  ,				VOCAB_FILES_NAMES["word_pronunciation_file"]   )
      with open(self.vocab_file  ,				"w"  ,				encoding="utf-8"   ) as vocab_writer:
         vocab_writer.write("".join([x + "\n" for x in vocab_tokens]   )   )
      with open(self.word_shape_file  ,				"w"  ,				encoding="utf-8"   ) as word_shape_writer:
         json.dump(__lowerCamelCase  ,				__lowerCamelCase  ,				ensure_ascii=__lowerCamelCase   )
      with open(self.word_pronunciation_file  ,				"w"  ,				encoding="utf-8"   ) as word_pronunciation_writer:
         json.dump(__lowerCamelCase  ,				__lowerCamelCase  ,				ensure_ascii=__lowerCamelCase   )



   def 							lowerCAmelCase_      (   self :     str   ):

      """simple docstring"""
      _SCREAMING_SNAKE_CASE	=				self.tokenizer_class(self.vocab_file  ,				self.word_shape_file  ,				self.word_pronunciation_file   )

      _SCREAMING_SNAKE_CASE	=				tokenizer.tokenize("你好[SEP]你是谁"   )
      self.assertListEqual(__lowerCamelCase  ,				["你", "好", "[SEP]", "你", "是", "谁"]   )
      self.assertListEqual(tokenizer.convert_tokens_to_ids(__lowerCamelCase   )  ,				[5, 6, 2, 5, 7, 8]   )
      self.assertListEqual(tokenizer.convert_tokens_to_shape_ids(__lowerCamelCase   )  ,				[5, 6, 2, 5, 7, 8]   )
      self.assertListEqual(tokenizer.convert_tokens_to_pronunciation_ids(__lowerCamelCase   )  ,				[5, 6, 2, 5, 7, 8]   )



   def 							lowerCAmelCase_      (   self :     Tuple   ):

      """simple docstring"""
      _SCREAMING_SNAKE_CASE	=				RoCBertBasicTokenizer()

      self.assertListEqual(tokenizer.tokenize("ah\u535A\u63A8zz"   )  ,				["ah", "\u535A", "\u63A8", "zz"]   )



   def 							lowerCAmelCase_      (   self :     List[Any]   ):

      """simple docstring"""
      _SCREAMING_SNAKE_CASE	=				RoCBertBasicTokenizer(do_lower_case=__lowerCamelCase   )

      self.assertListEqual(
          tokenizer.tokenize(" \tHeLLo!how  \n Are yoU?  "   )  ,				["hello", "!", "how", "are", "you", "?"]   )
      self.assertListEqual(tokenizer.tokenize("H\u00E9llo"   )  ,				["hello"]   )



   def 							lowerCAmelCase_      (   self :     Union[str, Any]   ):

      """simple docstring"""
      _SCREAMING_SNAKE_CASE	=				RoCBertBasicTokenizer(do_lower_case=__lowerCamelCase  ,				strip_accents=__lowerCamelCase   )

      self.assertListEqual(
          tokenizer.tokenize(" \tHäLLo!how  \n Are yoU?  "   )  ,				["hällo", "!", "how", "are", "you", "?"]   )
      self.assertListEqual(tokenizer.tokenize("H\u00E9llo"   )  ,				["h\u00E9llo"]   )



   def 							lowerCAmelCase_      (   self :     str   ):

      """simple docstring"""
      _SCREAMING_SNAKE_CASE	=				RoCBertBasicTokenizer(do_lower_case=__lowerCamelCase  ,				strip_accents=__lowerCamelCase   )

      self.assertListEqual(
          tokenizer.tokenize(" \tHäLLo!how  \n Are yoU?  "   )  ,				["hallo", "!", "how", "are", "you", "?"]   )
      self.assertListEqual(tokenizer.tokenize("H\u00E9llo"   )  ,				["hello"]   )



   def 							lowerCAmelCase_      (   self :     Dict   ):

      """simple docstring"""
      _SCREAMING_SNAKE_CASE	=				RoCBertBasicTokenizer(do_lower_case=__lowerCamelCase   )

      self.assertListEqual(
          tokenizer.tokenize(" \tHäLLo!how  \n Are yoU?  "   )  ,				["hallo", "!", "how", "are", "you", "?"]   )
      self.assertListEqual(tokenizer.tokenize("H\u00E9llo"   )  ,				["hello"]   )



   def 							lowerCAmelCase_      (   self :     Optional[Any]   ):

      """simple docstring"""
      _SCREAMING_SNAKE_CASE	=				RoCBertBasicTokenizer(do_lower_case=__lowerCamelCase   )

      self.assertListEqual(
          tokenizer.tokenize(" \tHeLLo!how  \n Are yoU?  "   )  ,				["HeLLo", "!", "how", "Are", "yoU", "?"]   )



   def 							lowerCAmelCase_      (   self :     int   ):

      """simple docstring"""
      _SCREAMING_SNAKE_CASE	=				RoCBertBasicTokenizer(do_lower_case=__lowerCamelCase  ,				strip_accents=__lowerCamelCase   )

      self.assertListEqual(
          tokenizer.tokenize(" \tHäLLo!how  \n Are yoU?  "   )  ,				["HäLLo", "!", "how", "Are", "yoU", "?"]   )



   def 							lowerCAmelCase_      (   self :     str   ):

      """simple docstring"""
      _SCREAMING_SNAKE_CASE	=				RoCBertBasicTokenizer(do_lower_case=__lowerCamelCase  ,				strip_accents=__lowerCamelCase   )

      self.assertListEqual(
          tokenizer.tokenize(" \tHäLLo!how  \n Are yoU?  "   )  ,				["HaLLo", "!", "how", "Are", "yoU", "?"]   )



   def 							lowerCAmelCase_      (   self :     List[Any]   ):

      """simple docstring"""
      _SCREAMING_SNAKE_CASE	=				RoCBertBasicTokenizer(do_lower_case=__lowerCamelCase  ,				never_split=["[UNK]"]   )

      self.assertListEqual(
          tokenizer.tokenize(" \tHeLLo!how  \n Are yoU? [UNK]"   )  ,				["HeLLo", "!", "how", "Are", "yoU", "?", "[UNK]"]   )



   def 							lowerCAmelCase_      (   self :     Tuple   ):

      """simple docstring"""
      _SCREAMING_SNAKE_CASE	=				["[UNK]", "[CLS]", "[SEP]", "want", "##want", "##ed", "wa", "un", "runn", "##ing"]

      _SCREAMING_SNAKE_CASE	=				{}
      for i, token in enumerate(__lowerCamelCase   ):
         _SCREAMING_SNAKE_CASE	=				i
      _SCREAMING_SNAKE_CASE	=				RoCBertWordpieceTokenizer(vocab=__lowerCamelCase  ,				unk_token="[UNK]"   )

      self.assertListEqual(tokenizer.tokenize(""   )  ,				[]   )

      self.assertListEqual(tokenizer.tokenize("unwanted running"   )  ,				["un", "##want", "##ed", "runn", "##ing"]   )

      self.assertListEqual(tokenizer.tokenize("unwantedX running"   )  ,				["[UNK]", "runn", "##ing"]   )



   def 							lowerCAmelCase_      (   self :     List[Any]   ):

      """simple docstring"""
      self.assertTrue(_is_whitespace(" "   )   )
      self.assertTrue(_is_whitespace("\t"   )   )
      self.assertTrue(_is_whitespace("\r"   )   )
      self.assertTrue(_is_whitespace("\n"   )   )
      self.assertTrue(_is_whitespace("\u00A0"   )   )

      self.assertFalse(_is_whitespace("A"   )   )
      self.assertFalse(_is_whitespace("-"   )   )



   def 							lowerCAmelCase_      (   self :     int   ):

      """simple docstring"""
      self.assertTrue(_is_control("\u0005"   )   )

      self.assertFalse(_is_control("A"   )   )
      self.assertFalse(_is_control(" "   )   )
      self.assertFalse(_is_control("\t"   )   )
      self.assertFalse(_is_control("\r"   )   )



   def 							lowerCAmelCase_      (   self :     str   ):

      """simple docstring"""
      self.assertTrue(_is_punctuation("-"   )   )
      self.assertTrue(_is_punctuation("$"   )   )
      self.assertTrue(_is_punctuation("`"   )   )
      self.assertTrue(_is_punctuation("."   )   )

      self.assertFalse(_is_punctuation("A"   )   )
      self.assertFalse(_is_punctuation(" "   )   )



   def 							lowerCAmelCase_      (   self :     Optional[int]   ):

      """simple docstring"""
      _SCREAMING_SNAKE_CASE	=				self.get_tokenizer()

      # Example taken from the issue https://github.com/huggingface/tokenizers/issues/340
      self.assertListEqual([tokenizer.tokenize(__lowerCamelCase   ) for t in ["Test", "\xad", "test"]]  ,				[["[UNK]"], [], ["[UNK]"]]   )

      if self.test_rust_tokenizer:
         _SCREAMING_SNAKE_CASE	=				self.get_rust_tokenizer()
         self.assertListEqual(
             [rust_tokenizer.tokenize(__lowerCamelCase   ) for t in ["Test", "\xad", "test"]]  ,				[["[UNK]"], [], ["[UNK]"]]   )



   def 							lowerCAmelCase_      (   self :     List[Any]   ):

      """simple docstring"""
      for tokenizer, pretrained_name, kwargs in self.tokenizers_list:
         with self.subTest(F"""{tokenizer.__class__.__name__} ({pretrained_name})"""   ):
            _SCREAMING_SNAKE_CASE	=				self.rust_tokenizer_class.from_pretrained(__lowerCamelCase  ,				**__lowerCamelCase   )

            _SCREAMING_SNAKE_CASE	=				F"""A, naïve {tokenizer_r.mask_token} AllenNLP sentence."""
            _SCREAMING_SNAKE_CASE	=				tokenizer_r.encode_plus(
                __lowerCamelCase  ,				return_attention_mask=__lowerCamelCase  ,				return_token_type_ids=__lowerCamelCase  ,				return_offsets_mapping=__lowerCamelCase  ,				add_special_tokens=__lowerCamelCase  ,				)

            _SCREAMING_SNAKE_CASE	=				tokenizer_r.do_lower_case if hasattr(__lowerCamelCase  ,				"do_lower_case"   ) else False
            _SCREAMING_SNAKE_CASE	=				(
                [
                    ((0, 0), tokenizer_r.cls_token),
                    ((0, 1), "A"),
                    ((1, 2), ","),
                    ((3, 5), "na"),
                    ((5, 6), "##ï"),
                    ((6, 8), "##ve"),
                    ((9, 1_5), tokenizer_r.mask_token),
                    ((1_6, 2_1), "Allen"),
                    ((2_1, 2_3), "##NL"),
                    ((2_3, 2_4), "##P"),
                    ((2_5, 3_3), "sentence"),
                    ((3_3, 3_4), "."),
                    ((0, 0), tokenizer_r.sep_token),
                ]
                if not do_lower_case
                else [
                    ((0, 0), tokenizer_r.cls_token),
                    ((0, 1), "a"),
                    ((1, 2), ","),
                    ((3, 8), "naive"),
                    ((9, 1_5), tokenizer_r.mask_token),
                    ((1_6, 2_1), "allen"),
                    ((2_1, 2_3), "##nl"),
                    ((2_3, 2_4), "##p"),
                    ((2_5, 3_3), "sentence"),
                    ((3_3, 3_4), "."),
                    ((0, 0), tokenizer_r.sep_token),
                ]
            )

            self.assertEqual(
                [e[1] for e in expected_results]  ,				tokenizer_r.convert_ids_to_tokens(tokens["input_ids"]   )   )
            self.assertEqual([e[0] for e in expected_results]  ,				tokens["offset_mapping"]   )



   def 							lowerCAmelCase_      (   self :     Optional[Any]   ):

      """simple docstring"""
      _SCREAMING_SNAKE_CASE	=				["的", "人", "有"]
      _SCREAMING_SNAKE_CASE	=				"".join(__lowerCamelCase   )
      for tokenizer, pretrained_name, kwargs in self.tokenizers_list:
         with self.subTest(F"""{tokenizer.__class__.__name__} ({pretrained_name})"""   ):
            _SCREAMING_SNAKE_CASE	=				True
            _SCREAMING_SNAKE_CASE	=				self.tokenizer_class.from_pretrained(__lowerCamelCase  ,				**__lowerCamelCase   )
            _SCREAMING_SNAKE_CASE	=				self.rust_tokenizer_class.from_pretrained(__lowerCamelCase  ,				**__lowerCamelCase   )

            _SCREAMING_SNAKE_CASE	=				tokenizer_p.encode(__lowerCamelCase  ,				add_special_tokens=__lowerCamelCase   )
            _SCREAMING_SNAKE_CASE	=				tokenizer_r.encode(__lowerCamelCase  ,				add_special_tokens=__lowerCamelCase   )

            _SCREAMING_SNAKE_CASE	=				tokenizer_r.convert_ids_to_tokens(__lowerCamelCase   )
            _SCREAMING_SNAKE_CASE	=				tokenizer_p.convert_ids_to_tokens(__lowerCamelCase   )

            # it is expected that each Chinese character is not preceded by "##"
            self.assertListEqual(__lowerCamelCase  ,				__lowerCamelCase   )
            self.assertListEqual(__lowerCamelCase  ,				__lowerCamelCase   )

            _SCREAMING_SNAKE_CASE	=				False
            _SCREAMING_SNAKE_CASE	=				self.rust_tokenizer_class.from_pretrained(__lowerCamelCase  ,				**__lowerCamelCase   )
            _SCREAMING_SNAKE_CASE	=				self.tokenizer_class.from_pretrained(__lowerCamelCase  ,				**__lowerCamelCase   )

            _SCREAMING_SNAKE_CASE	=				tokenizer_r.encode(__lowerCamelCase  ,				add_special_tokens=__lowerCamelCase   )
            _SCREAMING_SNAKE_CASE	=				tokenizer_p.encode(__lowerCamelCase  ,				add_special_tokens=__lowerCamelCase   )

            _SCREAMING_SNAKE_CASE	=				tokenizer_r.convert_ids_to_tokens(__lowerCamelCase   )
            _SCREAMING_SNAKE_CASE	=				tokenizer_p.convert_ids_to_tokens(__lowerCamelCase   )

            # it is expected that only the first Chinese character is not preceded by "##".
            _SCREAMING_SNAKE_CASE	=				[
                F"""##{token}""" if idx != 0 else token for idx, token in enumerate(__lowerCamelCase   )
            ]
            self.assertListEqual(__lowerCamelCase  ,				__lowerCamelCase   )
            self.assertListEqual(__lowerCamelCase  ,				__lowerCamelCase   )



   @slow
   def 							lowerCAmelCase_      (   self :     Dict   ):

      """simple docstring"""
      _SCREAMING_SNAKE_CASE	=				self.tokenizer_class(self.vocab_file  ,				self.word_shape_file  ,				self.word_pronunciation_file   )

      _SCREAMING_SNAKE_CASE	=				tokenizer.encode("你好"  ,				add_special_tokens=__lowerCamelCase   )
      _SCREAMING_SNAKE_CASE	=				tokenizer.encode("你是谁"  ,				add_special_tokens=__lowerCamelCase   )

      _SCREAMING_SNAKE_CASE	=				tokenizer.build_inputs_with_special_tokens(__lowerCamelCase   )
      _SCREAMING_SNAKE_CASE	=				tokenizer.build_inputs_with_special_tokens(__lowerCamelCase  ,				__lowerCamelCase   )

      assert encoded_sentence == [1] + text + [2]
      assert encoded_pair == [1] + text + [2] + text_a + [2]



   def 							lowerCAmelCase_      (   self :     Optional[Any]   ):

      """simple docstring"""
      _SCREAMING_SNAKE_CASE	=				self.get_tokenizers(do_lower_case=__lowerCamelCase   )
      for tokenizer in tokenizers:
         with self.subTest(F"""{tokenizer.__class__.__name__}"""   ):
            _SCREAMING_SNAKE_CASE	=				"你好，你是谁"
            _SCREAMING_SNAKE_CASE	=				tokenizer.tokenize(__lowerCamelCase   )
            _SCREAMING_SNAKE_CASE	=				tokenizer.convert_tokens_to_ids(__lowerCamelCase   )
            _SCREAMING_SNAKE_CASE	=				tokenizer.convert_tokens_to_shape_ids(__lowerCamelCase   )
            _SCREAMING_SNAKE_CASE	=				tokenizer.convert_tokens_to_pronunciation_ids(__lowerCamelCase   )
            _SCREAMING_SNAKE_CASE	=				tokenizer.prepare_for_model(
                __lowerCamelCase  ,				__lowerCamelCase  ,				__lowerCamelCase  ,				add_special_tokens=__lowerCamelCase   )

            _SCREAMING_SNAKE_CASE	=				tokenizer.encode_plus(__lowerCamelCase  ,				add_special_tokens=__lowerCamelCase   )

            self.assertEqual(__lowerCamelCase  ,				__lowerCamelCase   )







'''simple docstring'''



from collections import OrderedDict
from typing import List, Mapping

from packaging import version

from ...configuration_utils import PretrainedConfig
from ...onnx import OnnxConfig
from ...utils import logging


lowerCamelCase_			=						logging.get_logger(__name__)

lowerCamelCase_			=						{
    'google/efficientnet-b7': 'https://huggingface.co/google/efficientnet-b7/resolve/main/config.json',
}







class 		lowercase_   (			A       ):


   """simple docstring"""

   lowerCamelCase_      =						'''efficientnet'''



   def __init__(   self :     Optional[Any]  ,				__lowerCamelCase :     int = 3  ,				__lowerCamelCase :     int = 6_0_0  ,				__lowerCamelCase :     float = 2.0  ,				__lowerCamelCase :     float = 3.1  ,				__lowerCamelCase :     int = 8  ,				__lowerCamelCase :     List[int] = [3, 3, 5, 3, 5, 5, 3]  ,				__lowerCamelCase :     List[int] = [3_2, 1_6, 2_4, 4_0, 8_0, 1_1_2, 1_9_2]  ,				__lowerCamelCase :     List[int] = [1_6, 2_4, 4_0, 8_0, 1_1_2, 1_9_2, 3_2_0]  ,				__lowerCamelCase :     List[int] = []  ,				__lowerCamelCase :     List[int] = [1, 2, 2, 2, 1, 2, 1]  ,				__lowerCamelCase :     List[int] = [1, 2, 2, 3, 3, 4, 1]  ,				__lowerCamelCase :     List[int] = [1, 6, 6, 6, 6, 6, 6]  ,				__lowerCamelCase :     float = 0.2_5  ,				__lowerCamelCase :     str = "swish"  ,				__lowerCamelCase :     int = 2_5_6_0  ,				__lowerCamelCase :     str = "mean"  ,				__lowerCamelCase :     float = 0.0_2  ,				__lowerCamelCase :     float = 0.0_0_1  ,				__lowerCamelCase :     float = 0.9_9  ,				__lowerCamelCase :     float = 0.5  ,				__lowerCamelCase :     float = 0.2  ,				**__lowerCamelCase :     Tuple  ,				):

      """simple docstring"""
      super().__init__(**__lowerCamelCase   )

      _SCREAMING_SNAKE_CASE	=				num_channels
      _SCREAMING_SNAKE_CASE	=				image_size
      _SCREAMING_SNAKE_CASE	=				width_coefficient
      _SCREAMING_SNAKE_CASE	=				depth_coefficient
      _SCREAMING_SNAKE_CASE	=				depth_divisor
      _SCREAMING_SNAKE_CASE	=				kernel_sizes
      _SCREAMING_SNAKE_CASE	=				in_channels
      _SCREAMING_SNAKE_CASE	=				out_channels
      _SCREAMING_SNAKE_CASE	=				depthwise_padding
      _SCREAMING_SNAKE_CASE	=				strides
      _SCREAMING_SNAKE_CASE	=				num_block_repeats
      _SCREAMING_SNAKE_CASE	=				expand_ratios
      _SCREAMING_SNAKE_CASE	=				squeeze_expansion_ratio
      _SCREAMING_SNAKE_CASE	=				hidden_act
      _SCREAMING_SNAKE_CASE	=				hidden_dim
      _SCREAMING_SNAKE_CASE	=				pooling_type
      _SCREAMING_SNAKE_CASE	=				initializer_range
      _SCREAMING_SNAKE_CASE	=				batch_norm_eps
      _SCREAMING_SNAKE_CASE	=				batch_norm_momentum
      _SCREAMING_SNAKE_CASE	=				dropout_rate
      _SCREAMING_SNAKE_CASE	=				drop_connect_rate
      _SCREAMING_SNAKE_CASE	=				sum(__lowerCamelCase   ) * 4







class 		lowercase_   (			A       ):


   """simple docstring"""

   lowerCamelCase_      =						version.parse('''1.11'''       )



   @property
   def 							lowerCAmelCase_      (   self :     Optional[Any]   ):

      """simple docstring"""
      return OrderedDict(
          [
              ("pixel_values", {0: "batch", 1: "num_channels", 2: "height", 3: "width"}),
          ]   )



   @property
   def 							lowerCAmelCase_      (   self :     List[Any]   ):

      """simple docstring"""
      return 1e-5

