






"""simple docstring"""




import copy
import inspect
import unittest

from transformers import PretrainedConfig, SwiftFormerConfig
from transformers.testing_utils import (
    require_torch,
    require_vision,
    slow,
    torch_device,
)
from transformers.utils import cached_property, is_torch_available, is_vision_available

from ...test_configuration_common import ConfigTester
from ...test_modeling_common import ModelTesterMixin, floats_tensor, ids_tensor
from ...test_pipeline_mixin import PipelineTesterMixin


if is_torch_available():
					import torch
					from torch import nn

					from transformers import SwiftFormerForImageClassification, SwiftFormerModel
					from transformers.models.swiftformer.modeling_swiftformer import SWIFTFORMER_PRETRAINED_MODEL_ARCHIVE_LIST


if is_vision_available():
					from PIL import Image

					from transformers import ViTImageProcessor


class       __SCREAMING_SNAKE_CASE   :






						def __init__(		self       ,  _UpperCamelCase       ,  _UpperCamelCase=13       ,  _UpperCamelCase=3       ,  _UpperCamelCase=True       ,  _UpperCamelCase=True       ,  _UpperCamelCase=0.1       ,  _UpperCamelCase=0.1       ,  _UpperCamelCase=2_24       ,  _UpperCamelCase=10_00       ,  _UpperCamelCase=[3, 3, 6, 4]       ,  _UpperCamelCase=[48, 56, 1_12, 2_20]       ,  ):






												"""simple docstring"""
												lowerCAmelCase__        =  parent
												lowerCAmelCase__        =  batch_size
												lowerCAmelCase__        =  num_channels
												lowerCAmelCase__        =  is_training
												lowerCAmelCase__        =  use_labels
												lowerCAmelCase__        =  hidden_dropout_prob
												lowerCAmelCase__        =  attention_probs_dropout_prob
												lowerCAmelCase__        =  num_labels
												lowerCAmelCase__        =  image_size
												lowerCAmelCase__        =  layer_depths
												lowerCAmelCase__        =  embed_dims






						def  UpperCamelCase__ (		self				):






												"""simple docstring"""
												lowerCAmelCase__        =  floats_tensor([self.batch_size, self.num_channels, self.image_size, self.image_size]				)

												lowerCAmelCase__        =  None
												if self.use_labels:
																		lowerCAmelCase__        =  ids_tensor([self.batch_size]       ,  self.num_labels				)

												lowerCAmelCase__        =  self.get_config()

												return config, pixel_values, labels






						def  UpperCamelCase__ (		self				):






												"""simple docstring"""
												return SwiftFormerConfig(
												    depths=self.layer_depths       ,  embed_dims=self.embed_dims       ,  mlp_ratio=4       ,  downsamples=[True, True, True, True]       ,  hidden_act='gelu'       ,  num_labels=self.num_labels       ,  down_patch_size=3       ,  down_stride=2       ,  down_pad=1       ,  drop_rate=0.0       ,  drop_path_rate=0.0       ,  use_layer_scale=_UpperCamelCase       ,  layer_scale_init_value=1E-5       ,  )






						def  UpperCamelCase__ (		self       ,  _UpperCamelCase       ,  _UpperCamelCase       ,  _UpperCamelCase				):






												"""simple docstring"""
												lowerCAmelCase__        =  SwiftFormerModel(config=_UpperCamelCase				)
												model.to(_UpperCamelCase				)
												model.eval()
												lowerCAmelCase__        =  model(_UpperCamelCase				)
												self.parent.assertEqual(result.last_hidden_state.shape       ,  (self.batch_size, self.embed_dims[-1], 7, 7)				)






						def  UpperCamelCase__ (		self       ,  _UpperCamelCase       ,  _UpperCamelCase       ,  _UpperCamelCase				):






												"""simple docstring"""
												lowerCAmelCase__        =  self.num_labels
												lowerCAmelCase__        =  SwiftFormerForImageClassification(_UpperCamelCase				)
												model.to(_UpperCamelCase				)
												model.eval()
												lowerCAmelCase__        =  model(_UpperCamelCase       ,  labels=_UpperCamelCase				)
												self.parent.assertEqual(result.logits.shape       ,  (self.batch_size, self.num_labels)				)

												lowerCAmelCase__        =  SwiftFormerForImageClassification(_UpperCamelCase				)
												model.to(_UpperCamelCase				)
												model.eval()

												lowerCAmelCase__        =  floats_tensor([self.batch_size, self.num_channels, self.image_size, self.image_size]				)
												lowerCAmelCase__        =  model(_UpperCamelCase				)
												self.parent.assertEqual(result.logits.shape       ,  (self.batch_size, self.num_labels)				)







						def  UpperCamelCase__ (		self				):






												"""simple docstring"""
												((lowerCAmelCase__)  ,    (lowerCAmelCase__)  ,    (lowerCAmelCase__))        =  self.prepare_config_and_inputs()
												lowerCAmelCase__        =  {'pixel_values': pixel_values}
												return config, inputs_dict




@require_torch
class       __SCREAMING_SNAKE_CASE   (				__lowercase						,   __lowercase						,   unittest.TestCase):
						_SCREAMING_SNAKE_CASE		:    List[Any]						=   (SwiftFormerModel, SwiftFormerForImageClassification) if is_torch_available() else ()
						_SCREAMING_SNAKE_CASE		:    List[str]						=   (
						    {'''feature-extraction''': SwiftFormerModel, '''image-classification''': SwiftFormerForImageClassification}
						    if is_torch_available()
						    else {}
						)

						_SCREAMING_SNAKE_CASE		:    Optional[int]						=   False
						_SCREAMING_SNAKE_CASE		:    List[Any]						=   False
						_SCREAMING_SNAKE_CASE		:    Optional[Any]						=   False
						_SCREAMING_SNAKE_CASE		:    List[str]						=   False
						_SCREAMING_SNAKE_CASE		:    Union[str, Any]						=   False






						def  UpperCamelCase__ (		self				):






												"""simple docstring"""
												lowerCAmelCase__        =  SwiftFormerModelTester(self				)
												lowerCAmelCase__        =  ConfigTester(
												    self       ,  config_class=_UpperCamelCase       ,  has_text_modality=_UpperCamelCase       ,  hidden_size=37       ,  num_attention_heads=12       ,  num_hidden_layers=12       ,  )






						def  UpperCamelCase__ (		self				):






												"""simple docstring"""
												self.config_tester.run_common_tests()






						@unittest.skip(reason='SwiftFormer does not use inputs_embeds'				)
						def  UpperCamelCase__ (		self				):






												"""simple docstring"""
												pass






						def  UpperCamelCase__ (		self				):






												"""simple docstring"""
												lowerCAmelCase__  ,    lowerCAmelCase__        =  self.model_tester.prepare_config_and_inputs_for_common()

												for model_class in self.all_model_classes:
																		lowerCAmelCase__        =  model_class(_UpperCamelCase				)
																		lowerCAmelCase__        =  model.get_output_embeddings()
																		self.assertTrue(x is None or isinstance(_UpperCamelCase       ,  nn.Linear				)				)






						def  UpperCamelCase__ (		self				):






												"""simple docstring"""
												lowerCAmelCase__  ,    lowerCAmelCase__        =  self.model_tester.prepare_config_and_inputs_for_common()

												for model_class in self.all_model_classes:
																		lowerCAmelCase__        =  model_class(_UpperCamelCase				)
																		lowerCAmelCase__        =  inspect.signature(model.forward				)
																		# signature.parameters is an OrderedDict => so arg_names order is deterministic
																		lowerCAmelCase__        =  [*signature.parameters.keys()]

																		lowerCAmelCase__        =  ['pixel_values']
																		self.assertListEqual(arg_names[:1]       ,  _UpperCamelCase				)






						def  UpperCamelCase__ (		self				):






												"""simple docstring"""
												lowerCAmelCase__        =  self.model_tester.prepare_config_and_inputs()
												self.model_tester.create_and_check_model(*_UpperCamelCase				)






						def  UpperCamelCase__ (		self				):






												"""simple docstring"""
												lowerCAmelCase__        =  self.model_tester.prepare_config_and_inputs()
												self.model_tester.create_and_check_for_image_classification(*_UpperCamelCase				)






						@slow
						def  UpperCamelCase__ (		self				):






												"""simple docstring"""
												for model_name in SWIFTFORMER_PRETRAINED_MODEL_ARCHIVE_LIST[:1]:
																		lowerCAmelCase__        =  SwiftFormerModel.from_pretrained(_UpperCamelCase				)
																		self.assertIsNotNone(_UpperCamelCase				)






						@unittest.skip(reason='SwiftFormer does not output attentions'				)
						def  UpperCamelCase__ (		self				):






												"""simple docstring"""
												pass






						def  UpperCamelCase__ (		self				):






												"""simple docstring"""
												def check_hidden_states_output(_UpperCamelCase       ,  _UpperCamelCase       ,  _UpperCamelCase				):
																		lowerCAmelCase__        =  model_class(_UpperCamelCase				)
																		model.to(_UpperCamelCase				)
																		model.eval()

																		with torch.no_grad():
																								lowerCAmelCase__        =  model(**self._prepare_for_class(_UpperCamelCase       ,  _UpperCamelCase				)				)

																		lowerCAmelCase__        =  outputs.hidden_states

																		lowerCAmelCase__        =  8
																		self.assertEqual(len(_UpperCamelCase				)       ,  _UpperCamelCase				)  # TODO

																		# SwiftFormer's feature maps are of shape (batch_size, embed_dims, height, width)
																		# with the width and height being successively divided by 2, after every 2 blocks
																		for i in range(len(_UpperCamelCase				)				):
																								self.assertEqual(
																								    hidden_states[i].shape       ,  torch.Size(
																								        [
																								            self.model_tester.batch_size,
																								            self.model_tester.embed_dims[i // 2],
																								            (self.model_tester.image_size // 4) // 2 ** (i // 2),
																								            (self.model_tester.image_size // 4) // 2 ** (i // 2),
																								        ]				)       ,  )

												lowerCAmelCase__  ,    lowerCAmelCase__        =  self.model_tester.prepare_config_and_inputs_for_common()

												for model_class in self.all_model_classes:
																		lowerCAmelCase__        =  True
																		check_hidden_states_output(_UpperCamelCase       ,  _UpperCamelCase       ,  _UpperCamelCase				)

																		# check that output_hidden_states also work using config
																		del inputs_dict["output_hidden_states"]
																		lowerCAmelCase__        =  True

																		check_hidden_states_output(_UpperCamelCase       ,  _UpperCamelCase       ,  _UpperCamelCase				)






						def  UpperCamelCase__ (		self				):






												"""simple docstring"""
												def _config_zero_init(_UpperCamelCase				):
																		lowerCAmelCase__        =  copy.deepcopy(_UpperCamelCase				)
																		for key in configs_no_init.__dict__.keys():
																								if "_range" in key or "_std" in key or "initializer_factor" in key or "layer_scale" in key:
																														setattr(_UpperCamelCase       ,  _UpperCamelCase       ,  1E-10				)
																								if isinstance(getattr(_UpperCamelCase       ,  _UpperCamelCase       ,  _UpperCamelCase				)       ,  _UpperCamelCase				):
																														lowerCAmelCase__        =  _config_zero_init(getattr(_UpperCamelCase       ,  _UpperCamelCase				)				)
																														setattr(_UpperCamelCase       ,  _UpperCamelCase       ,  _UpperCamelCase				)
																		return configs_no_init

												lowerCAmelCase__  ,    lowerCAmelCase__        =  self.model_tester.prepare_config_and_inputs_for_common()

												lowerCAmelCase__        =  _config_zero_init(_UpperCamelCase				)
												for model_class in self.all_model_classes:
																		lowerCAmelCase__        =  model_class(config=_UpperCamelCase				)
																		for name, param in model.named_parameters():
																								if param.requires_grad:
																														self.assertIn(
																														    ((param.data.mean() * 1E9) / 1E9).round().item()       ,  [0.0, 1.0]       ,  msg=F"Parameter {name} of model {model_class} seems not properly initialized"       ,  )







						@unittest.skip('Will be fixed soon by reducing the size of the model used for common tests.'				)
						def  UpperCamelCase__ (		self				):






												"""simple docstring"""
												pass







def 		_UpperCamelCase				(      )					->				Optional[int]:

						"""simple docstring"""



						lowerCAmelCase__        =  Image.open('./tests/fixtures/tests_samples/COCO/000000039769.png'						)
						return image


@require_torch
@require_vision
class       __SCREAMING_SNAKE_CASE   (				unittest.TestCase):






						@cached_property
						def  UpperCamelCase__ (		self				):






												"""simple docstring"""
												return ViTImageProcessor.from_pretrained('MBZUAI/swiftformer-xs'				) if is_vision_available() else None







						@slow
						def  UpperCamelCase__ (		self				):






												"""simple docstring"""
												lowerCAmelCase__        =  SwiftFormerForImageClassification.from_pretrained('MBZUAI/swiftformer-xs'				).to(_UpperCamelCase				)

												lowerCAmelCase__        =  self.default_image_processor
												lowerCAmelCase__        =  prepare_img()
												lowerCAmelCase__        =  image_processor(images=_UpperCamelCase       ,  return_tensors='pt'				).to(_UpperCamelCase				)

												# forward pass
												with torch.no_grad():
																		lowerCAmelCase__        =  model(**_UpperCamelCase				)

												# verify the logits
												lowerCAmelCase__        =  torch.Size((1, 10_00)				)
												self.assertEqual(outputs.logits.shape       ,  _UpperCamelCase				)

												lowerCAmelCase__        =  torch.tensor([[-2.1703E00, 2.1107E00, -2.0811E00]]				).to(_UpperCamelCase				)
												self.assertTrue(torch.allclose(outputs.logits[0, :3]       ,  _UpperCamelCase       ,  atol=1E-4				)				)













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       __SCREAMING_SNAKE_CASE   (				__lowercase						,   unittest.TestCase):
						_SCREAMING_SNAKE_CASE		:    List[str]						=   RoCBertTokenizer
						_SCREAMING_SNAKE_CASE		:    str						=   None
						_SCREAMING_SNAKE_CASE		:    Tuple						=   False
						_SCREAMING_SNAKE_CASE		:    List[Any]						=   True
						_SCREAMING_SNAKE_CASE		:    Union[str, Any]						=   filter_non_english






						def  UpperCamelCase__ (		self				):






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

												lowerCAmelCase__        =  ['[UNK]', '[CLS]', '[SEP]', '[PAD]', '[MASK]', '你', '好', '是', '谁', 'a', 'b', 'c', 'd']
												lowerCAmelCase__        =  {}
												lowerCAmelCase__        =  {}
												for i, value in enumerate(_UpperCamelCase				):
																		lowerCAmelCase__        =  i
																		lowerCAmelCase__        =  i
												lowerCAmelCase__        =  os.path.join(self.tmpdirname       ,  VOCAB_FILES_NAMES['vocab_file']				)
												lowerCAmelCase__        =  os.path.join(self.tmpdirname       ,  VOCAB_FILES_NAMES['word_shape_file']				)
												lowerCAmelCase__        =  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(_UpperCamelCase       ,  _UpperCamelCase       ,  ensure_ascii=_UpperCamelCase				)
												with open(self.word_pronunciation_file       ,  'w'       ,  encoding='utf-8'				) as word_pronunciation_writer:
																		json.dump(_UpperCamelCase       ,  _UpperCamelCase       ,  ensure_ascii=_UpperCamelCase				)






						def  UpperCamelCase__ (		self				):






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

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






						def  UpperCamelCase__ (		self				):






												"""simple docstring"""
												lowerCAmelCase__        =  RoCBertBasicTokenizer()

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






						def  UpperCamelCase__ (		self				):






												"""simple docstring"""
												lowerCAmelCase__        =  RoCBertBasicTokenizer(do_lower_case=_UpperCamelCase				)

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






						def  UpperCamelCase__ (		self				):






												"""simple docstring"""
												lowerCAmelCase__        =  RoCBertBasicTokenizer(do_lower_case=_UpperCamelCase       ,  strip_accents=_UpperCamelCase				)

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






						def  UpperCamelCase__ (		self				):






												"""simple docstring"""
												lowerCAmelCase__        =  RoCBertBasicTokenizer(do_lower_case=_UpperCamelCase       ,  strip_accents=_UpperCamelCase				)

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






						def  UpperCamelCase__ (		self				):






												"""simple docstring"""
												lowerCAmelCase__        =  RoCBertBasicTokenizer(do_lower_case=_UpperCamelCase				)

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






						def  UpperCamelCase__ (		self				):






												"""simple docstring"""
												lowerCAmelCase__        =  RoCBertBasicTokenizer(do_lower_case=_UpperCamelCase				)

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






						def  UpperCamelCase__ (		self				):






												"""simple docstring"""
												lowerCAmelCase__        =  RoCBertBasicTokenizer(do_lower_case=_UpperCamelCase       ,  strip_accents=_UpperCamelCase				)

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






						def  UpperCamelCase__ (		self				):






												"""simple docstring"""
												lowerCAmelCase__        =  RoCBertBasicTokenizer(do_lower_case=_UpperCamelCase       ,  strip_accents=_UpperCamelCase				)

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






						def  UpperCamelCase__ (		self				):






												"""simple docstring"""
												lowerCAmelCase__        =  RoCBertBasicTokenizer(do_lower_case=_UpperCamelCase       ,  never_split=['[UNK]']				)

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






						def  UpperCamelCase__ (		self				):






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

												lowerCAmelCase__        =  {}
												for i, token in enumerate(_UpperCamelCase				):
																		lowerCAmelCase__        =  i
												lowerCAmelCase__        =  RoCBertWordpieceTokenizer(vocab=_UpperCamelCase       ,  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  UpperCamelCase__ (		self				):






												"""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  UpperCamelCase__ (		self				):






												"""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  UpperCamelCase__ (		self				):






												"""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  UpperCamelCase__ (		self				):






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

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

												if self.test_rust_tokenizer:
																		lowerCAmelCase__        =  self.get_rust_tokenizer()
																		self.assertListEqual(
																		    [rust_tokenizer.tokenize(_UpperCamelCase				) for t in ['Test', '\xad', 'test']]       ,  [['[UNK]'], [], ['[UNK]']]				)






						def  UpperCamelCase__ (		self				):






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

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

																								lowerCAmelCase__        =  tokenizer_r.do_lower_case if hasattr(_UpperCamelCase       ,  'do_lower_case'				) else False
																								lowerCAmelCase__        =  (
																								    [
																								        ((0, 0), tokenizer_r.cls_token),
																								        ((0, 1), 'A'),
																								        ((1, 2), ','),
																								        ((3, 5), 'na'),
																								        ((5, 6), '##ï'),
																								        ((6, 8), '##ve'),
																								        ((9, 15), tokenizer_r.mask_token),
																								        ((16, 21), 'Allen'),
																								        ((21, 23), '##NL'),
																								        ((23, 24), '##P'),
																								        ((25, 33), 'sentence'),
																								        ((33, 34), '.'),
																								        ((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, 15), tokenizer_r.mask_token),
																								        ((16, 21), 'allen'),
																								        ((21, 23), '##nl'),
																								        ((23, 24), '##p'),
																								        ((25, 33), 'sentence'),
																								        ((33, 34), '.'),
																								        ((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  UpperCamelCase__ (		self				):






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

																								lowerCAmelCase__        =  tokenizer_p.encode(_UpperCamelCase       ,  add_special_tokens=_UpperCamelCase				)
																								lowerCAmelCase__        =  tokenizer_r.encode(_UpperCamelCase       ,  add_special_tokens=_UpperCamelCase				)

																								lowerCAmelCase__        =  tokenizer_r.convert_ids_to_tokens(_UpperCamelCase				)
																								lowerCAmelCase__        =  tokenizer_p.convert_ids_to_tokens(_UpperCamelCase				)

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

																								lowerCAmelCase__        =  False
																								lowerCAmelCase__        =  self.rust_tokenizer_class.from_pretrained(_UpperCamelCase       ,  **_UpperCamelCase				)
																								lowerCAmelCase__        =  self.tokenizer_class.from_pretrained(_UpperCamelCase       ,  **_UpperCamelCase				)

																								lowerCAmelCase__        =  tokenizer_r.encode(_UpperCamelCase       ,  add_special_tokens=_UpperCamelCase				)
																								lowerCAmelCase__        =  tokenizer_p.encode(_UpperCamelCase       ,  add_special_tokens=_UpperCamelCase				)

																								lowerCAmelCase__        =  tokenizer_r.convert_ids_to_tokens(_UpperCamelCase				)
																								lowerCAmelCase__        =  tokenizer_p.convert_ids_to_tokens(_UpperCamelCase				)

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






						@slow
						def  UpperCamelCase__ (		self				):






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

												lowerCAmelCase__        =  tokenizer.encode('你好'       ,  add_special_tokens=_UpperCamelCase				)
												lowerCAmelCase__        =  tokenizer.encode('你是谁'       ,  add_special_tokens=_UpperCamelCase				)

												lowerCAmelCase__        =  tokenizer.build_inputs_with_special_tokens(_UpperCamelCase				)
												lowerCAmelCase__        =  tokenizer.build_inputs_with_special_tokens(_UpperCamelCase       ,  _UpperCamelCase				)

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







						def  UpperCamelCase__ (		self				):






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

																								lowerCAmelCase__        =  tokenizer.encode_plus(_UpperCamelCase       ,  add_special_tokens=_UpperCamelCase				)

																								self.assertEqual(_UpperCamelCase       ,  _UpperCamelCase				)





