



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):
     """simple docstring"""



     def 						_a      (self    ):






           '''simple docstring'''



           lowerCamelCase								=		{
               '''task_specific_params''': {
                   '''summarization''': {'''length_penalty''': 1.0, '''max_length''': 1_28, '''min_length''': 12, '''num_beams''': 4},
                   '''summarization_cnn''': {'''length_penalty''': 2.0, '''max_length''': 1_42, '''min_length''': 56, '''num_beams''': 4},
                   '''summarization_xsum''': {'''length_penalty''': 1.0, '''max_length''': 62, '''min_length''': 11, '''num_beams''': 6},
               }
           }
           lowerCamelCase								=		{
               '''task_specific_params.summarization.length_penalty''': 1.0,
               '''task_specific_params.summarization.max_length''': 1_28,
               '''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''': 1_42,
               '''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(__lowerCamelCase    )				,			__lowerCamelCase    )







     def 						_a      (self    ):






           '''simple docstring'''



           lowerCamelCase								=		np.random.randn(3				,			4    )
           self.assertTrue(np.allclose(transpose(__lowerCamelCase    )				,			x.transpose()    )    )

           lowerCamelCase								=		np.random.randn(3				,			4				,			5    )
           self.assertTrue(np.allclose(transpose(__lowerCamelCase				,			axes=(1, 2, 0)    )				,			x.transpose((1, 2, 0)    )    )    )







     @require_torch
     def 						_a      (self    ):






           '''simple docstring'''



           lowerCamelCase								=		np.random.randn(3				,			4    )
           lowerCamelCase								=		torch.tensor(__lowerCamelCase    )
           self.assertTrue(np.allclose(transpose(__lowerCamelCase    )				,			transpose(__lowerCamelCase    ).numpy()    )    )

           lowerCamelCase								=		np.random.randn(3				,			4				,			5    )
           lowerCamelCase								=		torch.tensor(__lowerCamelCase    )
           self.assertTrue(np.allclose(transpose(__lowerCamelCase				,			axes=(1, 2, 0)    )				,			transpose(__lowerCamelCase				,			axes=(1, 2, 0)    ).numpy()    )    )







     @require_tf
     def 						_a      (self    ):






           '''simple docstring'''



           lowerCamelCase								=		np.random.randn(3				,			4    )
           lowerCamelCase								=		tf.constant(__lowerCamelCase    )
           self.assertTrue(np.allclose(transpose(__lowerCamelCase    )				,			transpose(__lowerCamelCase    ).numpy()    )    )

           lowerCamelCase								=		np.random.randn(3				,			4				,			5    )
           lowerCamelCase								=		tf.constant(__lowerCamelCase    )
           self.assertTrue(np.allclose(transpose(__lowerCamelCase				,			axes=(1, 2, 0)    )				,			transpose(__lowerCamelCase				,			axes=(1, 2, 0)    ).numpy()    )    )







     @require_flax
     def 						_a      (self    ):






           '''simple docstring'''



           lowerCamelCase								=		np.random.randn(3				,			4    )
           lowerCamelCase								=		jnp.array(__lowerCamelCase    )
           self.assertTrue(np.allclose(transpose(__lowerCamelCase    )				,			np.asarray(transpose(__lowerCamelCase    )    )    )    )

           lowerCamelCase								=		np.random.randn(3				,			4				,			5    )
           lowerCamelCase								=		jnp.array(__lowerCamelCase    )
           self.assertTrue(np.allclose(transpose(__lowerCamelCase				,			axes=(1, 2, 0)    )				,			np.asarray(transpose(__lowerCamelCase				,			axes=(1, 2, 0)    )    )    )    )







     def 						_a      (self    ):






           '''simple docstring'''



           lowerCamelCase								=		np.random.randn(3				,			4    )
           self.assertTrue(np.allclose(reshape(__lowerCamelCase				,			(4, 3)    )				,			np.reshape(__lowerCamelCase				,			(4, 3)    )    )    )

           lowerCamelCase								=		np.random.randn(3				,			4				,			5    )
           self.assertTrue(np.allclose(reshape(__lowerCamelCase				,			(12, 5)    )				,			np.reshape(__lowerCamelCase				,			(12, 5)    )    )    )







     @require_torch
     def 						_a      (self    ):






           '''simple docstring'''



           lowerCamelCase								=		np.random.randn(3				,			4    )
           lowerCamelCase								=		torch.tensor(__lowerCamelCase    )
           self.assertTrue(np.allclose(reshape(__lowerCamelCase				,			(4, 3)    )				,			reshape(__lowerCamelCase				,			(4, 3)    ).numpy()    )    )

           lowerCamelCase								=		np.random.randn(3				,			4				,			5    )
           lowerCamelCase								=		torch.tensor(__lowerCamelCase    )
           self.assertTrue(np.allclose(reshape(__lowerCamelCase				,			(12, 5)    )				,			reshape(__lowerCamelCase				,			(12, 5)    ).numpy()    )    )







     @require_tf
     def 						_a      (self    ):






           '''simple docstring'''



           lowerCamelCase								=		np.random.randn(3				,			4    )
           lowerCamelCase								=		tf.constant(__lowerCamelCase    )
           self.assertTrue(np.allclose(reshape(__lowerCamelCase				,			(4, 3)    )				,			reshape(__lowerCamelCase				,			(4, 3)    ).numpy()    )    )

           lowerCamelCase								=		np.random.randn(3				,			4				,			5    )
           lowerCamelCase								=		tf.constant(__lowerCamelCase    )
           self.assertTrue(np.allclose(reshape(__lowerCamelCase				,			(12, 5)    )				,			reshape(__lowerCamelCase				,			(12, 5)    ).numpy()    )    )







     @require_flax
     def 						_a      (self    ):






           '''simple docstring'''



           lowerCamelCase								=		np.random.randn(3				,			4    )
           lowerCamelCase								=		jnp.array(__lowerCamelCase    )
           self.assertTrue(np.allclose(reshape(__lowerCamelCase				,			(4, 3)    )				,			np.asarray(reshape(__lowerCamelCase				,			(4, 3)    )    )    )    )

           lowerCamelCase								=		np.random.randn(3				,			4				,			5    )
           lowerCamelCase								=		jnp.array(__lowerCamelCase    )
           self.assertTrue(np.allclose(reshape(__lowerCamelCase				,			(12, 5)    )				,			np.asarray(reshape(__lowerCamelCase				,			(12, 5)    )    )    )    )







     def 						_a      (self    ):






           '''simple docstring'''



           lowerCamelCase								=		np.random.randn(1				,			3				,			4    )
           self.assertTrue(np.allclose(squeeze(__lowerCamelCase    )				,			np.squeeze(__lowerCamelCase    )    )    )

           lowerCamelCase								=		np.random.randn(1				,			4				,			1				,			5    )
           self.assertTrue(np.allclose(squeeze(__lowerCamelCase				,			axis=2    )				,			np.squeeze(__lowerCamelCase				,			axis=2    )    )    )







     @require_torch
     def 						_a      (self    ):






           '''simple docstring'''



           lowerCamelCase								=		np.random.randn(1				,			3				,			4    )
           lowerCamelCase								=		torch.tensor(__lowerCamelCase    )
           self.assertTrue(np.allclose(squeeze(__lowerCamelCase    )				,			squeeze(__lowerCamelCase    ).numpy()    )    )

           lowerCamelCase								=		np.random.randn(1				,			4				,			1				,			5    )
           lowerCamelCase								=		torch.tensor(__lowerCamelCase    )
           self.assertTrue(np.allclose(squeeze(__lowerCamelCase				,			axis=2    )				,			squeeze(__lowerCamelCase				,			axis=2    ).numpy()    )    )







     @require_tf
     def 						_a      (self    ):






           '''simple docstring'''



           lowerCamelCase								=		np.random.randn(1				,			3				,			4    )
           lowerCamelCase								=		tf.constant(__lowerCamelCase    )
           self.assertTrue(np.allclose(squeeze(__lowerCamelCase    )				,			squeeze(__lowerCamelCase    ).numpy()    )    )

           lowerCamelCase								=		np.random.randn(1				,			4				,			1				,			5    )
           lowerCamelCase								=		tf.constant(__lowerCamelCase    )
           self.assertTrue(np.allclose(squeeze(__lowerCamelCase				,			axis=2    )				,			squeeze(__lowerCamelCase				,			axis=2    ).numpy()    )    )







     @require_flax
     def 						_a      (self    ):






           '''simple docstring'''



           lowerCamelCase								=		np.random.randn(1				,			3				,			4    )
           lowerCamelCase								=		jnp.array(__lowerCamelCase    )
           self.assertTrue(np.allclose(squeeze(__lowerCamelCase    )				,			np.asarray(squeeze(__lowerCamelCase    )    )    )    )

           lowerCamelCase								=		np.random.randn(1				,			4				,			1				,			5    )
           lowerCamelCase								=		jnp.array(__lowerCamelCase    )
           self.assertTrue(np.allclose(squeeze(__lowerCamelCase				,			axis=2    )				,			np.asarray(squeeze(__lowerCamelCase				,			axis=2    )    )    )    )







     def 						_a      (self    ):






           '''simple docstring'''



           lowerCamelCase								=		np.random.randn(3				,			4    )
           self.assertTrue(np.allclose(expand_dims(__lowerCamelCase				,			axis=1    )				,			np.expand_dims(__lowerCamelCase				,			axis=1    )    )    )







     @require_torch
     def 						_a      (self    ):






           '''simple docstring'''



           lowerCamelCase								=		np.random.randn(3				,			4    )
           lowerCamelCase								=		torch.tensor(__lowerCamelCase    )
           self.assertTrue(np.allclose(expand_dims(__lowerCamelCase				,			axis=1    )				,			expand_dims(__lowerCamelCase				,			axis=1    ).numpy()    )    )







     @require_tf
     def 						_a      (self    ):






           '''simple docstring'''



           lowerCamelCase								=		np.random.randn(3				,			4    )
           lowerCamelCase								=		tf.constant(__lowerCamelCase    )
           self.assertTrue(np.allclose(expand_dims(__lowerCamelCase				,			axis=1    )				,			expand_dims(__lowerCamelCase				,			axis=1    ).numpy()    )    )







     @require_flax
     def 						_a      (self    ):






           '''simple docstring'''



           lowerCamelCase								=		np.random.randn(3				,			4    )
           lowerCamelCase								=		jnp.array(__lowerCamelCase    )
           self.assertTrue(np.allclose(expand_dims(__lowerCamelCase				,			axis=1    )				,			np.asarray(expand_dims(__lowerCamelCase				,			axis=1    )    )    )    )




# Copyright 2023 The HuggingFace Team. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

from typing import TYPE_CHECKING

from ...utils import OptionalDependencyNotAvailable, _LazyModule, is_torch_available


a_						:     Tuple	     =		{
    'configuration_xmod': [
        'XMOD_PRETRAINED_CONFIG_ARCHIVE_MAP',
        'XmodConfig',
        'XmodOnnxConfig',
    ],
}

try:
     if not is_torch_available():
          raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
     pass
else:
     a_						:     List[Any]	     =		[
         'XMOD_PRETRAINED_MODEL_ARCHIVE_LIST',
         'XmodForCausalLM',
         'XmodForMaskedLM',
         'XmodForMultipleChoice',
         'XmodForQuestionAnswering',
         'XmodForSequenceClassification',
         'XmodForTokenClassification',
         'XmodModel',
         'XmodPreTrainedModel',
     ]

if TYPE_CHECKING:
     from .configuration_xmod import XMOD_PRETRAINED_CONFIG_ARCHIVE_MAP, XmodConfig, XmodOnnxConfig

     try:
          if not is_torch_available():
               raise OptionalDependencyNotAvailable()
     except OptionalDependencyNotAvailable:
          pass
     else:
          from .modeling_xmod import (
              XMOD_PRETRAINED_MODEL_ARCHIVE_LIST,
              XmodForCausalLM,
              XmodForMaskedLM,
              XmodForMultipleChoice,
              XmodForQuestionAnswering,
              XmodForSequenceClassification,
              XmodForTokenClassification,
              XmodModel,
              XmodPreTrainedModel,
          )

else:
     import sys

     a_						:     str	     =		_LazyModule(__name__, globals()['__file__'], _import_structure, module_spec=__spec__)