

from __future__ import annotations

import unittest

from transformers import DebertaVaConfig, is_tf_available
from transformers.testing_utils import require_tf, slow

from ...test_configuration_common import ConfigTester
from ...test_modeling_tf_common import TFModelTesterMixin, ids_tensor, random_attention_mask
from ...test_pipeline_mixin import PipelineTesterMixin


if is_tf_available():
						import tensorflow as tf

						from transformers import (
						    TFDebertaVaForMaskedLM,
						    TFDebertaVaForQuestionAnswering,
						    TFDebertaVaForSequenceClassification,
						    TFDebertaVaForTokenClassification,
						    TFDebertaVaModel,
						)



class   __lowercase    :




			"""simple docstring"""







			def __init__(			self  :					Optional[int]       ,						lowerCAmelCase__  :					List[str]       ,						lowerCAmelCase__  :					List[Any]=13       ,						lowerCAmelCase__  :					List[Any]=7       ,						lowerCAmelCase__  :					int=True       ,						lowerCAmelCase__  :					Tuple=True       ,						lowerCAmelCase__  :					Optional[int]=True       ,						lowerCAmelCase__  :					Optional[Any]=True       ,						lowerCAmelCase__  :					Any=99       ,						lowerCAmelCase__  :					Dict=32       ,						lowerCAmelCase__  :					Any=2       ,						lowerCAmelCase__  :					str=4       ,						lowerCAmelCase__  :					Optional[Any]=37       ,						lowerCAmelCase__  :					Any="gelu"       ,						lowerCAmelCase__  :					str=0.1       ,						lowerCAmelCase__  :					Any=0.1       ,						lowerCAmelCase__  :					Union[str, Any]=512       ,						lowerCAmelCase__  :					List[str]=16       ,						lowerCAmelCase__  :					Optional[Any]=2       ,						lowerCAmelCase__  :					Tuple=0.02       ,						lowerCAmelCase__  :					Tuple=False       ,						lowerCAmelCase__  :					Union[str, Any]=True       ,						lowerCAmelCase__  :					Optional[int]="None"       ,						lowerCAmelCase__  :					str=3       ,						lowerCAmelCase__  :					Optional[int]=4       ,						lowerCAmelCase__  :					Optional[int]=None       ,						):
									SCREAMING_SNAKE_CASE_:			Optional[int]  		=	parent
									SCREAMING_SNAKE_CASE_:			List[Any]  		=	batch_size
									SCREAMING_SNAKE_CASE_:			List[Any]  		=	seq_length
									SCREAMING_SNAKE_CASE_:			List[Any]  		=	is_training
									SCREAMING_SNAKE_CASE_:			List[str]  		=	use_input_mask
									SCREAMING_SNAKE_CASE_:			int  		=	use_token_type_ids
									SCREAMING_SNAKE_CASE_:			List[Any]  		=	use_labels
									SCREAMING_SNAKE_CASE_:			int  		=	vocab_size
									SCREAMING_SNAKE_CASE_:			Any  		=	hidden_size
									SCREAMING_SNAKE_CASE_:			List[Any]  		=	num_hidden_layers
									SCREAMING_SNAKE_CASE_:			Dict  		=	num_attention_heads
									SCREAMING_SNAKE_CASE_:			Dict  		=	intermediate_size
									SCREAMING_SNAKE_CASE_:			str  		=	hidden_act
									SCREAMING_SNAKE_CASE_:			Union[str, Any]  		=	hidden_dropout_prob
									SCREAMING_SNAKE_CASE_:			Tuple  		=	attention_probs_dropout_prob
									SCREAMING_SNAKE_CASE_:			int  		=	max_position_embeddings
									SCREAMING_SNAKE_CASE_:			Tuple  		=	type_vocab_size
									SCREAMING_SNAKE_CASE_:			Tuple  		=	type_sequence_label_size
									SCREAMING_SNAKE_CASE_:			Dict  		=	initializer_range
									SCREAMING_SNAKE_CASE_:			List[Any]  		=	num_labels
									SCREAMING_SNAKE_CASE_:			str  		=	num_choices
									SCREAMING_SNAKE_CASE_:			str  		=	relative_attention
									SCREAMING_SNAKE_CASE_:			int  		=	position_biased_input
									SCREAMING_SNAKE_CASE_:			Optional[int]  		=	pos_att_type
									SCREAMING_SNAKE_CASE_:			List[Any]  		=	scope



			def 	_SCREAMING_SNAKE_CASE      (			self  :					str):
									SCREAMING_SNAKE_CASE_:			Tuple  		=	ids_tensor([self.batch_size, self.seq_length]       ,						self.vocab_size)

									SCREAMING_SNAKE_CASE_:			Any  		=	None
									if self.use_input_mask:
															SCREAMING_SNAKE_CASE_:			Union[str, Any]  		=	random_attention_mask([self.batch_size, self.seq_length])

									SCREAMING_SNAKE_CASE_:			Optional[int]  		=	None
									if self.use_token_type_ids:
															SCREAMING_SNAKE_CASE_:			List[Any]  		=	ids_tensor([self.batch_size, self.seq_length]       ,						self.type_vocab_size)

									SCREAMING_SNAKE_CASE_:			Optional[Any]  		=	None
									SCREAMING_SNAKE_CASE_:			str  		=	None
									SCREAMING_SNAKE_CASE_:			Any  		=	None
									if self.use_labels:
															SCREAMING_SNAKE_CASE_:			Dict  		=	ids_tensor([self.batch_size]       ,						self.type_sequence_label_size)
															SCREAMING_SNAKE_CASE_:			Union[str, Any]  		=	ids_tensor([self.batch_size, self.seq_length]       ,						self.num_labels)

									SCREAMING_SNAKE_CASE_:			str  		=	DebertaVaConfig(
									    vocab_size=self.vocab_size       ,						hidden_size=self.hidden_size       ,						num_hidden_layers=self.num_hidden_layers       ,						num_attention_heads=self.num_attention_heads       ,						intermediate_size=self.intermediate_size       ,						hidden_act=self.hidden_act       ,						hidden_dropout_prob=self.hidden_dropout_prob       ,						attention_probs_dropout_prob=self.attention_probs_dropout_prob       ,						max_position_embeddings=self.max_position_embeddings       ,						type_vocab_size=self.type_vocab_size       ,						relative_attention=self.relative_attention       ,						position_biased_input=self.position_biased_input       ,						initializer_range=self.initializer_range       ,						return_dict=lowerCAmelCase__       ,						)

									return config, input_ids, token_type_ids, input_mask, sequence_labels, token_labels, choice_labels



			def 	_SCREAMING_SNAKE_CASE      (			self  :					List[str]       ,						lowerCAmelCase__  :					Any       ,						lowerCAmelCase__  :					List[Any]       ,						lowerCAmelCase__  :					List[str]       ,						lowerCAmelCase__  :					Optional[Any]       ,						lowerCAmelCase__  :					Any       ,						lowerCAmelCase__  :					Any       ,						lowerCAmelCase__  :					List[Any]):
									SCREAMING_SNAKE_CASE_:			List[str]  		=	TFDebertaVaModel(config=lowerCAmelCase__)
									SCREAMING_SNAKE_CASE_:			List[str]  		=	{"input_ids": input_ids, "attention_mask": input_mask, "token_type_ids": token_type_ids}

									SCREAMING_SNAKE_CASE_:			Union[str, Any]  		=	[input_ids, input_mask]
									SCREAMING_SNAKE_CASE_:			List[str]  		=	model(lowerCAmelCase__)

									SCREAMING_SNAKE_CASE_:			Tuple  		=	model(lowerCAmelCase__)

									self.parent.assertEqual(result.last_hidden_state.shape       ,						(self.batch_size, self.seq_length, self.hidden_size))



			def 	_SCREAMING_SNAKE_CASE      (			self  :					Union[str, Any]       ,						lowerCAmelCase__  :					Union[str, Any]       ,						lowerCAmelCase__  :					str       ,						lowerCAmelCase__  :					int       ,						lowerCAmelCase__  :					Union[str, Any]       ,						lowerCAmelCase__  :					Union[str, Any]       ,						lowerCAmelCase__  :					Any       ,						lowerCAmelCase__  :					List[Any]):
									SCREAMING_SNAKE_CASE_:			Optional[Any]  		=	TFDebertaVaForMaskedLM(config=lowerCAmelCase__)
									SCREAMING_SNAKE_CASE_:			Tuple  		=	{
									    "input_ids": input_ids,
									    "attention_mask": input_mask,
									    "token_type_ids": token_type_ids,
									}
									SCREAMING_SNAKE_CASE_:			List[str]  		=	model(lowerCAmelCase__)
									self.parent.assertEqual(result.logits.shape       ,						(self.batch_size, self.seq_length, self.vocab_size))



			def 	_SCREAMING_SNAKE_CASE      (			self  :					List[Any]       ,						lowerCAmelCase__  :					Tuple       ,						lowerCAmelCase__  :					List[str]       ,						lowerCAmelCase__  :					List[str]       ,						lowerCAmelCase__  :					List[Any]       ,						lowerCAmelCase__  :					int       ,						lowerCAmelCase__  :					Dict       ,						lowerCAmelCase__  :					Optional[Any]):
									SCREAMING_SNAKE_CASE_:			Optional[int]  		=	self.num_labels
									SCREAMING_SNAKE_CASE_:			List[Any]  		=	TFDebertaVaForSequenceClassification(config=lowerCAmelCase__)
									SCREAMING_SNAKE_CASE_:			Dict  		=	{
									    "input_ids": input_ids,
									    "attention_mask": input_mask,
									    "token_type_ids": token_type_ids,
									}

									SCREAMING_SNAKE_CASE_:			Tuple  		=	model(lowerCAmelCase__)
									self.parent.assertEqual(result.logits.shape       ,						(self.batch_size, self.num_labels))



			def 	_SCREAMING_SNAKE_CASE      (			self  :					Dict       ,						lowerCAmelCase__  :					Any       ,						lowerCAmelCase__  :					List[Any]       ,						lowerCAmelCase__  :					Dict       ,						lowerCAmelCase__  :					Tuple       ,						lowerCAmelCase__  :					Optional[Any]       ,						lowerCAmelCase__  :					Optional[int]       ,						lowerCAmelCase__  :					Tuple):
									SCREAMING_SNAKE_CASE_:			str  		=	self.num_labels
									SCREAMING_SNAKE_CASE_:			str  		=	TFDebertaVaForTokenClassification(config=lowerCAmelCase__)
									SCREAMING_SNAKE_CASE_:			Any  		=	{
									    "input_ids": input_ids,
									    "attention_mask": input_mask,
									    "token_type_ids": token_type_ids,
									}
									SCREAMING_SNAKE_CASE_:			List[str]  		=	model(lowerCAmelCase__)
									self.parent.assertEqual(result.logits.shape       ,						(self.batch_size, self.seq_length, self.num_labels))



			def 	_SCREAMING_SNAKE_CASE      (			self  :					str       ,						lowerCAmelCase__  :					Any       ,						lowerCAmelCase__  :					int       ,						lowerCAmelCase__  :					Dict       ,						lowerCAmelCase__  :					Union[str, Any]       ,						lowerCAmelCase__  :					List[Any]       ,						lowerCAmelCase__  :					str       ,						lowerCAmelCase__  :					Optional[Any]):
									SCREAMING_SNAKE_CASE_:			List[str]  		=	TFDebertaVaForQuestionAnswering(config=lowerCAmelCase__)
									SCREAMING_SNAKE_CASE_:			str  		=	{
									    "input_ids": input_ids,
									    "attention_mask": input_mask,
									    "token_type_ids": token_type_ids,
									}

									SCREAMING_SNAKE_CASE_:			str  		=	model(lowerCAmelCase__)
									self.parent.assertEqual(result.start_logits.shape       ,						(self.batch_size, self.seq_length))
									self.parent.assertEqual(result.end_logits.shape       ,						(self.batch_size, self.seq_length))




			def 	_SCREAMING_SNAKE_CASE      (			self  :					List[str]):
									SCREAMING_SNAKE_CASE_:			Union[str, Any]  		=	self.prepare_config_and_inputs()
									(
									    (
									    SCREAMING_SNAKE_CASE_
									)		,   (
									    SCREAMING_SNAKE_CASE_
									)		,   (
									    SCREAMING_SNAKE_CASE_
									)		,   (
									    SCREAMING_SNAKE_CASE_
									)		,   (
									    SCREAMING_SNAKE_CASE_
									)		,   (
									    SCREAMING_SNAKE_CASE_
									)		,   (
									    SCREAMING_SNAKE_CASE_
									)		,   
									):			List[Any]  		=	config_and_inputs
									SCREAMING_SNAKE_CASE_:			Union[str, Any]  		=	{"input_ids": input_ids, "token_type_ids": token_type_ids, "attention_mask": input_mask}
									return config, inputs_dict







@require_tf
class   __lowercase    (			UpperCAmelCase_		,	UpperCAmelCase_		,	unittest.TestCase     ):




			"""simple docstring"""







			_UpperCAmelCase       :							Optional[int]      							=					(
			    (
			        TFDebertaVaModel,
			        TFDebertaVaForMaskedLM,
			        TFDebertaVaForQuestionAnswering,
			        TFDebertaVaForSequenceClassification,
			        TFDebertaVaForTokenClassification,
			    )
			    if is_tf_available()
			    else ()
			)
			_UpperCAmelCase       :							Any      							=					(
			    {
			        '''feature-extraction''': TFDebertaVaModel,
			        '''fill-mask''': TFDebertaVaForMaskedLM,
			        '''question-answering''': TFDebertaVaForQuestionAnswering,
			        '''text-classification''': TFDebertaVaForSequenceClassification,
			        '''token-classification''': TFDebertaVaForTokenClassification,
			        '''zero-shot''': TFDebertaVaForSequenceClassification,
			    }
			    if is_tf_available()
			    else {}
			)

			_UpperCAmelCase       :							str      							=					False
			_UpperCAmelCase       :							List[Any]      							=					False



			def 	_SCREAMING_SNAKE_CASE      (			self  :					Optional[int]):
									SCREAMING_SNAKE_CASE_:			Tuple  		=	TFDebertaVaModelTester(self)
									SCREAMING_SNAKE_CASE_:			Union[str, Any]  		=	ConfigTester(self       ,						config_class=lowerCAmelCase__       ,						hidden_size=37)



			def 	_SCREAMING_SNAKE_CASE      (			self  :					Any):
									self.config_tester.run_common_tests()



			def 	_SCREAMING_SNAKE_CASE      (			self  :					Dict):
									SCREAMING_SNAKE_CASE_:			Optional[Any]  		=	self.model_tester.prepare_config_and_inputs()
									self.model_tester.create_and_check_model(*lowerCAmelCase__)



			def 	_SCREAMING_SNAKE_CASE      (			self  :					Tuple):
									SCREAMING_SNAKE_CASE_:			List[Any]  		=	self.model_tester.prepare_config_and_inputs()
									self.model_tester.create_and_check_for_masked_lm(*lowerCAmelCase__)



			def 	_SCREAMING_SNAKE_CASE      (			self  :					Dict):
									SCREAMING_SNAKE_CASE_:			int  		=	self.model_tester.prepare_config_and_inputs()
									self.model_tester.create_and_check_for_question_answering(*lowerCAmelCase__)



			def 	_SCREAMING_SNAKE_CASE      (			self  :					List[str]):
									SCREAMING_SNAKE_CASE_:			List[str]  		=	self.model_tester.prepare_config_and_inputs()
									self.model_tester.create_and_check_for_sequence_classification(*lowerCAmelCase__)



			def 	_SCREAMING_SNAKE_CASE      (			self  :					Tuple):
									SCREAMING_SNAKE_CASE_:			Optional[Any]  		=	self.model_tester.prepare_config_and_inputs()
									self.model_tester.create_and_check_for_token_classification(*lowerCAmelCase__)




			@slow
			def 	_SCREAMING_SNAKE_CASE      (			self  :					Dict):
									SCREAMING_SNAKE_CASE_:			str  		=	TFDebertaVaModel.from_pretrained("kamalkraj/deberta-v2-xlarge")
									self.assertIsNotNone(lowerCAmelCase__)







@require_tf
class   __lowercase    (			unittest.TestCase     ):




			"""simple docstring"""







			@unittest.skip(reason="Model not available yet")
			def 	_SCREAMING_SNAKE_CASE      (			self  :					List[Any]):
									pass




			@slow
			def 	_SCREAMING_SNAKE_CASE      (			self  :					Union[str, Any]):
									SCREAMING_SNAKE_CASE_:			int  		=	TFDebertaVaModel.from_pretrained("kamalkraj/deberta-v2-xlarge")
									SCREAMING_SNAKE_CASE_:			Dict  		=	tf.constant([[0, 3_1414, 232, 328, 740, 1140, 1_2695, 69, 4_6078, 1588, 2]])
									SCREAMING_SNAKE_CASE_:			List[Any]  		=	tf.constant([[0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]])
									SCREAMING_SNAKE_CASE_:			List[Any]  		=	model(lowerCAmelCase__       ,						attention_mask=lowerCAmelCase__)[0]

									SCREAMING_SNAKE_CASE_:			Optional[Any]  		=	tf.constant(
									    [[[0.2356, 0.1948, 0.0369], [-0.1063, 0.3586, -0.5152], [-0.6399, -0.0259, -0.2525]]])
									tf.debugging.assert_near(output[:, 1:4, 1:4]       ,						lowerCAmelCase__       ,						atol=1E-4)









from typing import Dict, List, Optional

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


lowerCAmelCase							:  List[str]            =						logging.get_logger(__name__)


lowerCAmelCase							:  Tuple            =						{
    """nielsr/canine-s""": 2048,
}

# Unicode defines 1,114,112 total “codepoints”
lowerCAmelCase							:  Any            =						1114112

# Below: Constants defining canonical codepoints for special, pseudo-characters.
# Copied from https://github.com/google-research/language/blob/master/language/canine/special_codepoints.py
lowerCAmelCase							:  Dict            =						0

lowerCAmelCase							:  Dict            =						0xe000
lowerCAmelCase							:  str            =						0xe001
lowerCAmelCase							:  str            =						0xe002
lowerCAmelCase							:  Optional[int]            =						0xe003
lowerCAmelCase							:  List[Any]            =						0xe004

# Maps special codepoints to human-readable names.
lowerCAmelCase							:  Dict[int, str]            =						{
    # Special symbols are represented using codepoints values that are valid,
    # but designated as "Private Use", meaning that they will never be assigned
    # characters by the Unicode Consortium, and are thus safe for use here.
    #
    # NOTE: Do *NOT* add any sort of [UNK_CHAR] here. They are explicitly
    # excluded and should fail with a hard error.
    CLS: "[CLS]",
    SEP: "[SEP]",
    BOS: "[BOS]",
    MASK: "[MASK]",
    PAD: "[PAD]",
    RESERVED: "[RESERVED]",
}

# Maps special codepoint human-readable names to their codepoint values.
lowerCAmelCase							:  Dict[str, int]            =						{name: codepoint for codepoint, name in SPECIAL_CODEPOINTS.items()}



class   __lowercase    (			UpperCAmelCase_     ):




			"""simple docstring"""







			_UpperCAmelCase       :							List[str]      							=					PRETRAINED_POSITIONAL_EMBEDDINGS_SIZES



			def __init__(			self  :					Optional[Any]       ,						lowerCAmelCase__  :					Tuple=chr(lowerCAmelCase__)       ,						lowerCAmelCase__  :					Tuple=chr(lowerCAmelCase__)       ,						lowerCAmelCase__  :					str=chr(lowerCAmelCase__)       ,						lowerCAmelCase__  :					List[Any]=chr(lowerCAmelCase__)       ,						lowerCAmelCase__  :					Optional[int]=chr(lowerCAmelCase__)       ,						lowerCAmelCase__  :					Union[str, Any]=chr(lowerCAmelCase__)       ,						lowerCAmelCase__  :					Union[str, Any]=False       ,						lowerCAmelCase__  :					int=2048       ,						**lowerCAmelCase__  :					Tuple       ,						):
									SCREAMING_SNAKE_CASE_:			Union[str, Any]  		=	AddedToken(lowerCAmelCase__       ,						lstrip=lowerCAmelCase__       ,						rstrip=lowerCAmelCase__) if isinstance(lowerCAmelCase__       ,						lowerCAmelCase__) else bos_token
									SCREAMING_SNAKE_CASE_:			List[Any]  		=	AddedToken(lowerCAmelCase__       ,						lstrip=lowerCAmelCase__       ,						rstrip=lowerCAmelCase__) if isinstance(lowerCAmelCase__       ,						lowerCAmelCase__) else eos_token
									SCREAMING_SNAKE_CASE_:			List[Any]  		=	AddedToken(lowerCAmelCase__       ,						lstrip=lowerCAmelCase__       ,						rstrip=lowerCAmelCase__) if isinstance(lowerCAmelCase__       ,						lowerCAmelCase__) else sep_token
									SCREAMING_SNAKE_CASE_:			Any  		=	AddedToken(lowerCAmelCase__       ,						lstrip=lowerCAmelCase__       ,						rstrip=lowerCAmelCase__) if isinstance(lowerCAmelCase__       ,						lowerCAmelCase__) else cls_token
									SCREAMING_SNAKE_CASE_:			str  		=	AddedToken(lowerCAmelCase__       ,						lstrip=lowerCAmelCase__       ,						rstrip=lowerCAmelCase__) if isinstance(lowerCAmelCase__       ,						lowerCAmelCase__) else pad_token

									# Mask token behave like a normal word, i.e. include the space before it
									SCREAMING_SNAKE_CASE_:			Dict  		=	AddedToken(lowerCAmelCase__       ,						lstrip=lowerCAmelCase__       ,						rstrip=lowerCAmelCase__) if isinstance(lowerCAmelCase__       ,						lowerCAmelCase__) else mask_token

									super().__init__(
									    bos_token=lowerCAmelCase__       ,						eos_token=lowerCAmelCase__       ,						sep_token=lowerCAmelCase__       ,						cls_token=lowerCAmelCase__       ,						pad_token=lowerCAmelCase__       ,						mask_token=lowerCAmelCase__       ,						add_prefix_space=lowerCAmelCase__       ,						model_max_length=lowerCAmelCase__       ,						**lowerCAmelCase__       ,						)

									# Creates a mapping for looking up the IDs of special symbols.
									SCREAMING_SNAKE_CASE_:			Dict[str, int]  		=	{}
									for codepoint, name in SPECIAL_CODEPOINTS.items():
															SCREAMING_SNAKE_CASE_:			List[Any]  		=	codepoint

									# Creates a mapping for looking up the string forms of special symbol IDs.
									SCREAMING_SNAKE_CASE_:			Dict[int, str]  		=	{
									    codepoint: name for name, codepoint in self._special_codepoints.items()
									}

									SCREAMING_SNAKE_CASE_:			List[str]  		=	UNICODE_VOCAB_SIZE
									SCREAMING_SNAKE_CASE_:			Tuple  		=	len(self._special_codepoints)



			@property
			def 	_SCREAMING_SNAKE_CASE      (			self  :					Optional[int]):
									return self._unicode_vocab_size



			def 	_SCREAMING_SNAKE_CASE      (			self  :					Dict       ,						lowerCAmelCase__  :					str):
									return list(lowerCAmelCase__)



			def 	_SCREAMING_SNAKE_CASE      (			self  :					List[str]       ,						lowerCAmelCase__  :					str):
									try:
															return ord(lowerCAmelCase__)
									except TypeError:
															raise ValueError(F"invalid token: '{token}'")



			def 	_SCREAMING_SNAKE_CASE      (			self  :					Optional[int]       ,						lowerCAmelCase__  :					int):
									try:
															if index in SPECIAL_CODEPOINTS:
																					return SPECIAL_CODEPOINTS[index]
															return chr(lowerCAmelCase__)
									except TypeError:
															raise ValueError(F"invalid id: {index}")



			def 	_SCREAMING_SNAKE_CASE      (			self  :					List[str]       ,						lowerCAmelCase__  :					Dict):
									return "".join(lowerCAmelCase__)



			def 	_SCREAMING_SNAKE_CASE      (			self  :					Optional[int]       ,						lowerCAmelCase__  :					List[int]       ,						lowerCAmelCase__  :					Optional[List[int]] = None):
									SCREAMING_SNAKE_CASE_:			List[str]  		=	[self.sep_token_id]
									SCREAMING_SNAKE_CASE_:			Tuple  		=	[self.cls_token_id]

									SCREAMING_SNAKE_CASE_:			int  		=	cls + token_ids_a + sep
									if token_ids_a is not None:
															result += token_ids_a + sep
									return result



			def 	_SCREAMING_SNAKE_CASE      (			self  :					Union[str, Any]       ,						lowerCAmelCase__  :					List[int]       ,						lowerCAmelCase__  :					Optional[List[int]] = None       ,						lowerCAmelCase__  :					bool = False):
									if already_has_special_tokens:
															return super().get_special_tokens_mask(
															    token_ids_a=lowerCAmelCase__       ,						token_ids_a=lowerCAmelCase__       ,						already_has_special_tokens=lowerCAmelCase__)

									SCREAMING_SNAKE_CASE_:			Any  		=	[1] + ([0] * len(lowerCAmelCase__)) + [1]
									if token_ids_a is not None:
															result += ([0] * len(lowerCAmelCase__)) + [1]
									return result



			def 	_SCREAMING_SNAKE_CASE      (			self  :					Dict       ,						lowerCAmelCase__  :					List[int]       ,						lowerCAmelCase__  :					Optional[List[int]] = None):
									SCREAMING_SNAKE_CASE_:			Dict  		=	[self.sep_token_id]
									SCREAMING_SNAKE_CASE_:			int  		=	[self.cls_token_id]

									SCREAMING_SNAKE_CASE_:			List[str]  		=	len(cls + token_ids_a + sep) * [0]
									if token_ids_a is not None:
															result += len(token_ids_a + sep) * [1]
									return result




			def 	_SCREAMING_SNAKE_CASE      (			self  :					str       ,						lowerCAmelCase__  :					str       ,						lowerCAmelCase__  :					Optional[str] = None):
									return ()






