





import unittest

import numpy as np

from transformers.testing_utils import require_flax, require_tf, require_torch
from transformers.utils import (
    expand_dims,
    flatten_dict,
    is_flax_available,
    is_tf_available,
    is_torch_available,
    reshape,
    squeeze,
    transpose,
)


if is_flax_available():
  import jax.numpy as jnp

if is_tf_available():
  import tensorflow as tf

if is_torch_available():
  import torch







class   __lowerCAmelCase			(					unittest.TestCase  ):





   def 	_snake_case ( self      )				->  Dict:
      """simple docstring"""





      a__	:						Optional[int]      		=  {
          "task_specific_params": {
              "summarization": {"length_penalty": 1.0, "max_length": 128, "min_length": 12, "num_beams": 4},
              "summarization_cnn": {"length_penalty": 2.0, "max_length": 142, "min_length": 56, "num_beams": 4},
              "summarization_xsum": {"length_penalty": 1.0, "max_length": 62, "min_length": 11, "num_beams": 6},
          }
      }
      a__	:						List[str]      		=  {
          "task_specific_params.summarization.length_penalty": 1.0,
          "task_specific_params.summarization.max_length": 128,
          "task_specific_params.summarization.min_length": 12,
          "task_specific_params.summarization.num_beams": 4,
          "task_specific_params.summarization_cnn.length_penalty": 2.0,
          "task_specific_params.summarization_cnn.max_length": 142,
          "task_specific_params.summarization_cnn.min_length": 56,
          "task_specific_params.summarization_cnn.num_beams": 4,
          "task_specific_params.summarization_xsum.length_penalty": 1.0,
          "task_specific_params.summarization_xsum.max_length": 62,
          "task_specific_params.summarization_xsum.min_length": 11,
          "task_specific_params.summarization_xsum.num_beams": 6,
      }

      self.assertEqual(flatten_dict(snake_case      )					,			snake_case      )





   def 	_snake_case ( self      )				->  Optional[int]:
      """simple docstring"""





      a__	:						Optional[Any]      		=  np.random.randn(3					,			4      )
      self.assertTrue(np.allclose(transpose(snake_case      )					,			x.transpose()      )      )

      a__	:						Union[str, Any]      		=  np.random.randn(3					,			4					,			5      )
      self.assertTrue(np.allclose(transpose(snake_case					,			axes=(1, 2, 0)      )					,			x.transpose((1, 2, 0)      )      )      )





   @require_torch
   def 	_snake_case ( self      )				->  Union[str, Any]:
      """simple docstring"""





      a__	:						List[Any]      		=  np.random.randn(3					,			4      )
      a__	:						Optional[Any]      		=  torch.tensor(snake_case      )
      self.assertTrue(np.allclose(transpose(snake_case      )					,			transpose(snake_case      ).numpy()      )      )

      a__	:						Optional[int]      		=  np.random.randn(3					,			4					,			5      )
      a__	:						int      		=  torch.tensor(snake_case      )
      self.assertTrue(np.allclose(transpose(snake_case					,			axes=(1, 2, 0)      )					,			transpose(snake_case					,			axes=(1, 2, 0)      ).numpy()      )      )





   @require_tf
   def 	_snake_case ( self      )				->  Optional[Any]:
      """simple docstring"""





      a__	:						Any      		=  np.random.randn(3					,			4      )
      a__	:						int      		=  tf.constant(snake_case      )
      self.assertTrue(np.allclose(transpose(snake_case      )					,			transpose(snake_case      ).numpy()      )      )

      a__	:						Union[str, Any]      		=  np.random.randn(3					,			4					,			5      )
      a__	:						Union[str, Any]      		=  tf.constant(snake_case      )
      self.assertTrue(np.allclose(transpose(snake_case					,			axes=(1, 2, 0)      )					,			transpose(snake_case					,			axes=(1, 2, 0)      ).numpy()      )      )





   @require_flax
   def 	_snake_case ( self      )				->  int:
      """simple docstring"""





      a__	:						Optional[int]      		=  np.random.randn(3					,			4      )
      a__	:						Optional[Any]      		=  jnp.array(snake_case      )
      self.assertTrue(np.allclose(transpose(snake_case      )					,			np.asarray(transpose(snake_case      )      )      )      )

      a__	:						Tuple      		=  np.random.randn(3					,			4					,			5      )
      a__	:						Optional[int]      		=  jnp.array(snake_case      )
      self.assertTrue(np.allclose(transpose(snake_case					,			axes=(1, 2, 0)      )					,			np.asarray(transpose(snake_case					,			axes=(1, 2, 0)      )      )      )      )





   def 	_snake_case ( self      )				->  Tuple:
      """simple docstring"""





      a__	:						Optional[Any]      		=  np.random.randn(3					,			4      )
      self.assertTrue(np.allclose(reshape(snake_case					,			(4, 3)      )					,			np.reshape(snake_case					,			(4, 3)      )      )      )

      a__	:						Tuple      		=  np.random.randn(3					,			4					,			5      )
      self.assertTrue(np.allclose(reshape(snake_case					,			(12, 5)      )					,			np.reshape(snake_case					,			(12, 5)      )      )      )





   @require_torch
   def 	_snake_case ( self      )				->  List[Any]:
      """simple docstring"""





      a__	:						List[Any]      		=  np.random.randn(3					,			4      )
      a__	:						Tuple      		=  torch.tensor(snake_case      )
      self.assertTrue(np.allclose(reshape(snake_case					,			(4, 3)      )					,			reshape(snake_case					,			(4, 3)      ).numpy()      )      )

      a__	:						Dict      		=  np.random.randn(3					,			4					,			5      )
      a__	:						Optional[int]      		=  torch.tensor(snake_case      )
      self.assertTrue(np.allclose(reshape(snake_case					,			(12, 5)      )					,			reshape(snake_case					,			(12, 5)      ).numpy()      )      )





   @require_tf
   def 	_snake_case ( self      )				->  Tuple:
      """simple docstring"""





      a__	:						Optional[Any]      		=  np.random.randn(3					,			4      )
      a__	:						Union[str, Any]      		=  tf.constant(snake_case      )
      self.assertTrue(np.allclose(reshape(snake_case					,			(4, 3)      )					,			reshape(snake_case					,			(4, 3)      ).numpy()      )      )

      a__	:						str      		=  np.random.randn(3					,			4					,			5      )
      a__	:						Optional[Any]      		=  tf.constant(snake_case      )
      self.assertTrue(np.allclose(reshape(snake_case					,			(12, 5)      )					,			reshape(snake_case					,			(12, 5)      ).numpy()      )      )





   @require_flax
   def 	_snake_case ( self      )				->  str:
      """simple docstring"""





      a__	:						Any      		=  np.random.randn(3					,			4      )
      a__	:						Tuple      		=  jnp.array(snake_case      )
      self.assertTrue(np.allclose(reshape(snake_case					,			(4, 3)      )					,			np.asarray(reshape(snake_case					,			(4, 3)      )      )      )      )

      a__	:						Optional[int]      		=  np.random.randn(3					,			4					,			5      )
      a__	:						Tuple      		=  jnp.array(snake_case      )
      self.assertTrue(np.allclose(reshape(snake_case					,			(12, 5)      )					,			np.asarray(reshape(snake_case					,			(12, 5)      )      )      )      )





   def 	_snake_case ( self      )				->  Any:
      """simple docstring"""





      a__	:						Optional[Any]      		=  np.random.randn(1					,			3					,			4      )
      self.assertTrue(np.allclose(squeeze(snake_case      )					,			np.squeeze(snake_case      )      )      )

      a__	:						Optional[Any]      		=  np.random.randn(1					,			4					,			1					,			5      )
      self.assertTrue(np.allclose(squeeze(snake_case					,			axis=2      )					,			np.squeeze(snake_case					,			axis=2      )      )      )





   @require_torch
   def 	_snake_case ( self      )				->  int:
      """simple docstring"""





      a__	:						List[str]      		=  np.random.randn(1					,			3					,			4      )
      a__	:						Optional[int]      		=  torch.tensor(snake_case      )
      self.assertTrue(np.allclose(squeeze(snake_case      )					,			squeeze(snake_case      ).numpy()      )      )

      a__	:						str      		=  np.random.randn(1					,			4					,			1					,			5      )
      a__	:						Union[str, Any]      		=  torch.tensor(snake_case      )
      self.assertTrue(np.allclose(squeeze(snake_case					,			axis=2      )					,			squeeze(snake_case					,			axis=2      ).numpy()      )      )





   @require_tf
   def 	_snake_case ( self      )				->  Optional[int]:
      """simple docstring"""





      a__	:						int      		=  np.random.randn(1					,			3					,			4      )
      a__	:						str      		=  tf.constant(snake_case      )
      self.assertTrue(np.allclose(squeeze(snake_case      )					,			squeeze(snake_case      ).numpy()      )      )

      a__	:						Tuple      		=  np.random.randn(1					,			4					,			1					,			5      )
      a__	:						Union[str, Any]      		=  tf.constant(snake_case      )
      self.assertTrue(np.allclose(squeeze(snake_case					,			axis=2      )					,			squeeze(snake_case					,			axis=2      ).numpy()      )      )





   @require_flax
   def 	_snake_case ( self      )				->  str:
      """simple docstring"""





      a__	:						Tuple      		=  np.random.randn(1					,			3					,			4      )
      a__	:						List[str]      		=  jnp.array(snake_case      )
      self.assertTrue(np.allclose(squeeze(snake_case      )					,			np.asarray(squeeze(snake_case      )      )      )      )

      a__	:						Any      		=  np.random.randn(1					,			4					,			1					,			5      )
      a__	:						List[str]      		=  jnp.array(snake_case      )
      self.assertTrue(np.allclose(squeeze(snake_case					,			axis=2      )					,			np.asarray(squeeze(snake_case					,			axis=2      )      )      )      )





   def 	_snake_case ( self      )				->  int:
      """simple docstring"""





      a__	:						Tuple      		=  np.random.randn(3					,			4      )
      self.assertTrue(np.allclose(expand_dims(snake_case					,			axis=1      )					,			np.expand_dims(snake_case					,			axis=1      )      )      )





   @require_torch
   def 	_snake_case ( self      )				->  Dict:
      """simple docstring"""





      a__	:						Optional[Any]      		=  np.random.randn(3					,			4      )
      a__	:						List[Any]      		=  torch.tensor(snake_case      )
      self.assertTrue(np.allclose(expand_dims(snake_case					,			axis=1      )					,			expand_dims(snake_case					,			axis=1      ).numpy()      )      )





   @require_tf
   def 	_snake_case ( self      )				->  Dict:
      """simple docstring"""





      a__	:						Optional[Any]      		=  np.random.randn(3					,			4      )
      a__	:						int      		=  tf.constant(snake_case      )
      self.assertTrue(np.allclose(expand_dims(snake_case					,			axis=1      )					,			expand_dims(snake_case					,			axis=1      ).numpy()      )      )





   @require_flax
   def 	_snake_case ( self      )				->  Optional[Any]:
      """simple docstring"""





      a__	:						Union[str, Any]      		=  np.random.randn(3					,			4      )
      a__	:						Optional[Any]      		=  jnp.array(snake_case      )
      self.assertTrue(np.allclose(expand_dims(snake_case					,			axis=1      )					,			np.asarray(expand_dims(snake_case					,			axis=1      )      )      )      )








from typing import TYPE_CHECKING

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


SCREAMING_SNAKE_CASE__       :			str			      =						{
    """configuration_distilbert""": [
        """DISTILBERT_PRETRAINED_CONFIG_ARCHIVE_MAP""",
        """DistilBertConfig""",
        """DistilBertOnnxConfig""",
    ],
    """tokenization_distilbert""": ["""DistilBertTokenizer"""],
}

try:
  if not is_tokenizers_available():
    raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
  pass
else:
  SCREAMING_SNAKE_CASE__       :			Optional[int]			      =						["""DistilBertTokenizerFast"""]

try:
  if not is_torch_available():
    raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
  pass
else:
  SCREAMING_SNAKE_CASE__       :			Tuple			      =						[
      """DISTILBERT_PRETRAINED_MODEL_ARCHIVE_LIST""",
      """DistilBertForMaskedLM""",
      """DistilBertForMultipleChoice""",
      """DistilBertForQuestionAnswering""",
      """DistilBertForSequenceClassification""",
      """DistilBertForTokenClassification""",
      """DistilBertModel""",
      """DistilBertPreTrainedModel""",
  ]

try:
  if not is_tf_available():
    raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
  pass
else:
  SCREAMING_SNAKE_CASE__       :			List[Any]			      =						[
      """TF_DISTILBERT_PRETRAINED_MODEL_ARCHIVE_LIST""",
      """TFDistilBertForMaskedLM""",
      """TFDistilBertForMultipleChoice""",
      """TFDistilBertForQuestionAnswering""",
      """TFDistilBertForSequenceClassification""",
      """TFDistilBertForTokenClassification""",
      """TFDistilBertMainLayer""",
      """TFDistilBertModel""",
      """TFDistilBertPreTrainedModel""",
  ]

try:
  if not is_flax_available():
    raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
  pass
else:
  SCREAMING_SNAKE_CASE__       :			Any			      =						[
      """FlaxDistilBertForMaskedLM""",
      """FlaxDistilBertForMultipleChoice""",
      """FlaxDistilBertForQuestionAnswering""",
      """FlaxDistilBertForSequenceClassification""",
      """FlaxDistilBertForTokenClassification""",
      """FlaxDistilBertModel""",
      """FlaxDistilBertPreTrainedModel""",
  ]


if TYPE_CHECKING:
  from .configuration_distilbert import (
      DISTILBERT_PRETRAINED_CONFIG_ARCHIVE_MAP,
      DistilBertConfig,
      DistilBertOnnxConfig,
  )
  from .tokenization_distilbert import DistilBertTokenizer

  try:
    if not is_tokenizers_available():
      raise OptionalDependencyNotAvailable()
  except OptionalDependencyNotAvailable:
    pass
  else:
    from .tokenization_distilbert_fast import DistilBertTokenizerFast

  try:
    if not is_torch_available():
      raise OptionalDependencyNotAvailable()
  except OptionalDependencyNotAvailable:
    pass
  else:
    from .modeling_distilbert import (
        DISTILBERT_PRETRAINED_MODEL_ARCHIVE_LIST,
        DistilBertForMaskedLM,
        DistilBertForMultipleChoice,
        DistilBertForQuestionAnswering,
        DistilBertForSequenceClassification,
        DistilBertForTokenClassification,
        DistilBertModel,
        DistilBertPreTrainedModel,
    )

  try:
    if not is_tf_available():
      raise OptionalDependencyNotAvailable()
  except OptionalDependencyNotAvailable:
    pass
  else:
    from .modeling_tf_distilbert import (
        TF_DISTILBERT_PRETRAINED_MODEL_ARCHIVE_LIST,
        TFDistilBertForMaskedLM,
        TFDistilBertForMultipleChoice,
        TFDistilBertForQuestionAnswering,
        TFDistilBertForSequenceClassification,
        TFDistilBertForTokenClassification,
        TFDistilBertMainLayer,
        TFDistilBertModel,
        TFDistilBertPreTrainedModel,
    )

  try:
    if not is_flax_available():
      raise OptionalDependencyNotAvailable()
  except OptionalDependencyNotAvailable:
    pass
  else:
    from .modeling_flax_distilbert import (
        FlaxDistilBertForMaskedLM,
        FlaxDistilBertForMultipleChoice,
        FlaxDistilBertForQuestionAnswering,
        FlaxDistilBertForSequenceClassification,
        FlaxDistilBertForTokenClassification,
        FlaxDistilBertModel,
        FlaxDistilBertPreTrainedModel,
    )

else:
  import sys

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

