


"""simple docstring"""


import unittest

import numpy as np

from transformers import DistilBertConfig, is_flax_available
from transformers.testing_utils import require_flax, slow

from ...test_modeling_flax_common import FlaxModelTesterMixin, ids_tensor, random_attention_mask


if is_flax_available():
	import jax.numpy as jnp

	from transformers.models.distilbert.modeling_flax_distilbert import (
	    FlaxDistilBertForMaskedLM,
	    FlaxDistilBertForMultipleChoice,
	    FlaxDistilBertForQuestionAnswering,
	    FlaxDistilBertForSequenceClassification,
	    FlaxDistilBertForTokenClassification,
	    FlaxDistilBertModel,
	)
class   _UpperCamelCase  (   unittest.TestCase		):
							'''simple docstring'''







							def __init__(     self    ,   __a    ,   __a=13    ,   __a=7    ,   __a=True    ,   __a=True    ,   __a=True    ,   __a=True    ,   __a=99    ,   __a=32    ,   __a=5    ,   __a=4    ,   __a=37    ,   __a="gelu"    ,   __a=0.1    ,   __a=0.1    ,   __a=5_12    ,   __a=16    ,   __a=2    ,   __a=0.0_2    ,   __a=4    ,   ):
										__lowerCAmelCase				    =			parent
										__lowerCAmelCase				    =			batch_size
										__lowerCAmelCase				    =			seq_length
										__lowerCAmelCase				    =			is_training
										__lowerCAmelCase				    =			use_attention_mask
										__lowerCAmelCase				    =			use_token_type_ids
										__lowerCAmelCase				    =			use_labels
										__lowerCAmelCase				    =			vocab_size
										__lowerCAmelCase				    =			hidden_size
										__lowerCAmelCase				    =			num_hidden_layers
										__lowerCAmelCase				    =			num_attention_heads
										__lowerCAmelCase				    =			intermediate_size
										__lowerCAmelCase				    =			hidden_act
										__lowerCAmelCase				    =			hidden_dropout_prob
										__lowerCAmelCase				    =			attention_probs_dropout_prob
										__lowerCAmelCase				    =			max_position_embeddings
										__lowerCAmelCase				    =			type_vocab_size
										__lowerCAmelCase				    =			type_sequence_label_size
										__lowerCAmelCase				    =			initializer_range
										__lowerCAmelCase				    =			num_choices

							def 			snake_case				(     self	):
										__lowerCAmelCase				    =			ids_tensor([self.batch_size, self.seq_length]    ,   self.vocab_size	)

										__lowerCAmelCase				    =			None
										if self.use_attention_mask:
													__lowerCAmelCase				    =			random_attention_mask([self.batch_size, self.seq_length]	)

										__lowerCAmelCase				    =			DistilBertConfig(
										    vocab_size=self.vocab_size    ,   dim=self.hidden_size    ,   n_layers=self.num_hidden_layers    ,   n_heads=self.num_attention_heads    ,   hidden_dim=self.intermediate_size    ,   hidden_act=self.hidden_act    ,   dropout=self.hidden_dropout_prob    ,   attention_dropout=self.attention_probs_dropout_prob    ,   max_position_embeddings=self.max_position_embeddings    ,   initializer_range=self.initializer_range    ,   tie_weights_=__a    ,   )

										return config, input_ids, attention_mask



							def 			snake_case				(     self	):
										__lowerCAmelCase				    =			self.prepare_config_and_inputs()
										__lowerCAmelCase    ,	__lowerCAmelCase    ,	__lowerCAmelCase				    =			config_and_inputs
										__lowerCAmelCase				    =			{"input_ids": input_ids, "attention_mask": attention_mask}
										return config, inputs_dict
@require_flax
class   _UpperCamelCase  (   lowerCAmelCase__       ,unittest.TestCase		):
							'''simple docstring'''







							__UpperCAmelCase						:    Optional[int]				      =(
							    (
							        FlaxDistilBertModel,
							        FlaxDistilBertForMaskedLM,
							        FlaxDistilBertForMultipleChoice,
							        FlaxDistilBertForQuestionAnswering,
							        FlaxDistilBertForSequenceClassification,
							        FlaxDistilBertForTokenClassification,
							        FlaxDistilBertForQuestionAnswering,
							    )
							    if is_flax_available()
							    else ()
							)

							def 			snake_case				(     self	):
										__lowerCAmelCase				    =			FlaxDistilBertModelTester(self	)



							@slow
							def 			snake_case				(     self	):
										for model_class_name in self.all_model_classes:
													__lowerCAmelCase				    =			model_class_name.from_pretrained("distilbert-base-uncased"	)
													__lowerCAmelCase				    =			model(np.ones((1, 1)	)	)
													self.assertIsNotNone(__a	)
@require_flax
class   _UpperCamelCase  (   unittest.TestCase		):
							'''simple docstring'''







							@slow
							def 			snake_case				(     self	):
										__lowerCAmelCase				    =			FlaxDistilBertModel.from_pretrained("distilbert-base-uncased"	)
										__lowerCAmelCase				    =			np.array([[0, 3_45, 2_32, 3_28, 7_40, 1_40, 16_95, 69, 60_78, 15_88, 2]]	)
										__lowerCAmelCase				    =			np.array([[0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]	)
										__lowerCAmelCase				    =			model(__a    ,   attention_mask=__a	)[0]
										__lowerCAmelCase				    =			(1, 11, 7_68)
										self.assertEqual(output.shape    ,   __a	)
										__lowerCAmelCase				    =			np.array([[[-0.1_6_3_9, 0.3_2_9_9, 0.1_6_4_8], [-0.1_7_4_6, 0.3_2_8_9, 0.1_7_1_0], [-0.1_8_8_4, 0.3_3_5_7, 0.1_8_1_0]]]	)

										self.assertTrue(jnp.allclose(output[:, 1:4, 1:4]    ,   __a    ,   atol=1e-4	)	)








"""simple docstring"""


from typing import TYPE_CHECKING

from ...utils import (
    OptionalDependencyNotAvailable,
    _LazyModule,
    is_flax_available,
    is_tf_available,
    is_tokenizers_available,
    is_torch_available,
)


A     :   Tuple			    =			{
    "configuration_blenderbot": [
        "BLENDERBOT_PRETRAINED_CONFIG_ARCHIVE_MAP",
        "BlenderbotConfig",
        "BlenderbotOnnxConfig",
    ],
    "tokenization_blenderbot": ["BlenderbotTokenizer"],
}

try:
	if not is_tokenizers_available():
		raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
	pass
else:
	A     :   Dict			    =			["BlenderbotTokenizerFast"]

try:
	if not is_torch_available():
		raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
	pass
else:
	A     :   str			    =			[
	    "BLENDERBOT_PRETRAINED_MODEL_ARCHIVE_LIST",
	    "BlenderbotForCausalLM",
	    "BlenderbotForConditionalGeneration",
	    "BlenderbotModel",
	    "BlenderbotPreTrainedModel",
	]


try:
	if not is_tf_available():
		raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
	pass
else:
	A     :   List[str]			    =			[
	    "TFBlenderbotForConditionalGeneration",
	    "TFBlenderbotModel",
	    "TFBlenderbotPreTrainedModel",
	]


try:
	if not is_flax_available():
		raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
	pass
else:
	A     :   List[str]			    =			[
	    "FlaxBlenderbotForConditionalGeneration",
	    "FlaxBlenderbotModel",
	    "FlaxBlenderbotPreTrainedModel",
	]


if TYPE_CHECKING:
	from .configuration_blenderbot import (
	    BLENDERBOT_PRETRAINED_CONFIG_ARCHIVE_MAP,
	    BlenderbotConfig,
	    BlenderbotOnnxConfig,
	)
	from .tokenization_blenderbot import BlenderbotTokenizer

	try:
		if not is_tokenizers_available():
			raise OptionalDependencyNotAvailable()
	except OptionalDependencyNotAvailable:
		pass
	else:
		from .tokenization_blenderbot_fast import BlenderbotTokenizerFast

	try:
		if not is_torch_available():
			raise OptionalDependencyNotAvailable()
	except OptionalDependencyNotAvailable:
		pass
	else:
		from .modeling_blenderbot import (
		    BLENDERBOT_PRETRAINED_MODEL_ARCHIVE_LIST,
		    BlenderbotForCausalLM,
		    BlenderbotForConditionalGeneration,
		    BlenderbotModel,
		    BlenderbotPreTrainedModel,
		)

	try:
		if not is_tf_available():
			raise OptionalDependencyNotAvailable()
	except OptionalDependencyNotAvailable:
		pass
	else:
		from .modeling_tf_blenderbot import (
		    TFBlenderbotForConditionalGeneration,
		    TFBlenderbotModel,
		    TFBlenderbotPreTrainedModel,
		)

	try:
		if not is_flax_available():
			raise OptionalDependencyNotAvailable()
	except OptionalDependencyNotAvailable:
		pass
	else:
		from .modeling_flax_blenderbot import (
		    FlaxBlenderbotForConditionalGeneration,
		    FlaxBlenderbotModel,
		    FlaxBlenderbotPreTrainedModel,
		)

else:
	import sys

	A     :   Optional[Any]			    =			_LazyModule(__name__, globals()["__file__"], _import_structure, module_spec=__spec__)




