





from typing import TYPE_CHECKING

from ...utils import OptionalDependencyNotAvailable, _LazyModule, is_tf_available, is_torch_available


_snake_case  :   Any						   =  {
    'configuration_data2vec_audio': ['DATA2VEC_AUDIO_PRETRAINED_CONFIG_ARCHIVE_MAP', 'Data2VecAudioConfig'],
    'configuration_data2vec_text': [
        'DATA2VEC_TEXT_PRETRAINED_CONFIG_ARCHIVE_MAP',
        'Data2VecTextConfig',
        'Data2VecTextOnnxConfig',
    ],
    'configuration_data2vec_vision': [
        'DATA2VEC_VISION_PRETRAINED_CONFIG_ARCHIVE_MAP',
        'Data2VecVisionConfig',
        'Data2VecVisionOnnxConfig',
    ],
}

try:
     if not is_torch_available():
          raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
     pass
else:
     _snake_case  :   Optional[Any]						   =  [
         'DATA2VEC_AUDIO_PRETRAINED_MODEL_ARCHIVE_LIST',
         'Data2VecAudioForAudioFrameClassification',
         'Data2VecAudioForCTC',
         'Data2VecAudioForSequenceClassification',
         'Data2VecAudioForXVector',
         'Data2VecAudioModel',
         'Data2VecAudioPreTrainedModel',
     ]
     _snake_case  :   Optional[int]						   =  [
         'DATA2VEC_TEXT_PRETRAINED_MODEL_ARCHIVE_LIST',
         'Data2VecTextForCausalLM',
         'Data2VecTextForMaskedLM',
         'Data2VecTextForMultipleChoice',
         'Data2VecTextForQuestionAnswering',
         'Data2VecTextForSequenceClassification',
         'Data2VecTextForTokenClassification',
         'Data2VecTextModel',
         'Data2VecTextPreTrainedModel',
     ]
     _snake_case  :   Any						   =  [
         'DATA2VEC_VISION_PRETRAINED_MODEL_ARCHIVE_LIST',
         'Data2VecVisionForImageClassification',
         'Data2VecVisionForMaskedImageModeling',
         'Data2VecVisionForSemanticSegmentation',
         'Data2VecVisionModel',
         'Data2VecVisionPreTrainedModel',
     ]

if is_tf_available():
     _snake_case  :   str						   =  [
         'TFData2VecVisionForImageClassification',
         'TFData2VecVisionForSemanticSegmentation',
         'TFData2VecVisionModel',
         'TFData2VecVisionPreTrainedModel',
     ]

if TYPE_CHECKING:
     from .configuration_dataavec_audio import DATA2VEC_AUDIO_PRETRAINED_CONFIG_ARCHIVE_MAP, DataaVecAudioConfig
     from .configuration_dataavec_text import (
         DATA2VEC_TEXT_PRETRAINED_CONFIG_ARCHIVE_MAP,
         DataaVecTextConfig,
         DataaVecTextOnnxConfig,
     )
     from .configuration_dataavec_vision import (
         DATA2VEC_VISION_PRETRAINED_CONFIG_ARCHIVE_MAP,
         DataaVecVisionConfig,
         DataaVecVisionOnnxConfig,
     )

     try:
          if not is_torch_available():
               raise OptionalDependencyNotAvailable()
     except OptionalDependencyNotAvailable:
          pass
     else:
          from .modeling_dataavec_audio import (
              DATA2VEC_AUDIO_PRETRAINED_MODEL_ARCHIVE_LIST,
              DataaVecAudioForAudioFrameClassification,
              DataaVecAudioForCTC,
              DataaVecAudioForSequenceClassification,
              DataaVecAudioForXVector,
              DataaVecAudioModel,
              DataaVecAudioPreTrainedModel,
          )
          from .modeling_dataavec_text import (
              DATA2VEC_TEXT_PRETRAINED_MODEL_ARCHIVE_LIST,
              DataaVecTextForCausalLM,
              DataaVecTextForMaskedLM,
              DataaVecTextForMultipleChoice,
              DataaVecTextForQuestionAnswering,
              DataaVecTextForSequenceClassification,
              DataaVecTextForTokenClassification,
              DataaVecTextModel,
              DataaVecTextPreTrainedModel,
          )
          from .modeling_dataavec_vision import (
              DATA2VEC_VISION_PRETRAINED_MODEL_ARCHIVE_LIST,
              DataaVecVisionForImageClassification,
              DataaVecVisionForMaskedImageModeling,
              DataaVecVisionForSemanticSegmentation,
              DataaVecVisionModel,
              DataaVecVisionPreTrainedModel,
          )
     if is_tf_available():
          from .modeling_tf_dataavec_vision import (
              TFDataaVecVisionForImageClassification,
              TFDataaVecVisionForSemanticSegmentation,
              TFDataaVecVisionModel,
              TFDataaVecVisionPreTrainedModel,
          )

else:
     import sys

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








import unittest

import numpy as np
import torch

from .utils_summarization import build_mask, compute_token_type_ids, process_story, truncate_or_pad



class     _UpperCAmelCase   (   unittest.TestCase   ):

  """simple docstring"""


  def     lowercase		(    self			:		Any					)							->						Optional[int]:
     __lowerCAmelCase							     =     1_0






  def     lowercase		(    self			:		int					)							->						Union[str, Any]:
     __lowerCAmelCase							     =     [1, 2, 3, 4]
     __lowerCAmelCase							     =     [1, 2, 3, 4, 0, 0, 0, 0, 0, 0]
     self.assertEqual(truncate_or_pad(lowerCAmelCase_ ,  self.block_size ,  0					) ,  lowerCAmelCase_					)






  def     lowercase		(    self			:		Optional[Any]					)							->						List[str]:
     __lowerCAmelCase							     =     [1, 2, 3, 4, 5, 6, 7, 8, 9, 1_0]
     __lowerCAmelCase							     =     [1, 2, 3, 4, 5, 6, 7, 8, 9, 1_0]
     self.assertEqual(truncate_or_pad(lowerCAmelCase_ ,  self.block_size ,  0					) ,  lowerCAmelCase_					)






  def     lowercase		(    self			:		Any					)							->						Optional[Any]:
     __lowerCAmelCase							     =     [1, 2, 3, 4, 5, 6, 7, 8, 9, 1_0, 1_1, 1_2, 1_3]
     __lowerCAmelCase							     =     [1, 2, 3, 4, 5, 6, 7, 8, 9, 1_0]
     self.assertEqual(truncate_or_pad(lowerCAmelCase_ ,  self.block_size ,  0					) ,  lowerCAmelCase_					)






  def     lowercase		(    self			:		List[str]					)							->						Any:
     __lowerCAmelCase							     =     'It was the year of Our Lord one thousand seven hundred and\n        seventy-five.\n\nSpiritual revelations were conceded to England at that\n        favoured period, as at this.'
     __lowerCAmelCase     ,     __lowerCAmelCase							     =     process_story(lowerCAmelCase_					)
     self.assertEqual(lowerCAmelCase_ ,  []					)






  def     lowercase		(    self			:		Any					)							->						str:
     __lowerCAmelCase							     =     ''
     __lowerCAmelCase     ,     __lowerCAmelCase							     =     process_story(lowerCAmelCase_					)
     self.assertEqual(lowerCAmelCase_ ,  []					)
     self.assertEqual(lowerCAmelCase_ ,  []					)






  def     lowercase		(    self			:		int					)							->						int:
     __lowerCAmelCase							     =     (
         'It was the year of Our Lord one thousand seven hundred and '
         'seventy-five\n\nSpiritual revelations were conceded to England '
         'at that favoured period, as at this.\n@highlight\n\nIt was the best of times'
     )
     __lowerCAmelCase     ,     __lowerCAmelCase							     =     process_story(lowerCAmelCase_					)

     __lowerCAmelCase							     =     [
         'It was the year of Our Lord one thousand seven hundred and seventy-five.',
         'Spiritual revelations were conceded to England at that favoured period, as at this.',
     ]
     self.assertEqual(lowerCAmelCase_ ,  lowerCAmelCase_					)

     __lowerCAmelCase							     =     ['It was the best of times.']
     self.assertEqual(lowerCAmelCase_ ,  lowerCAmelCase_					)






  def     lowercase		(    self			:		Dict					)							->						Any:
     __lowerCAmelCase							     =     torch.tensor([1, 2, 3, 4]					)
     __lowerCAmelCase							     =     torch.tensor([1, 1, 1, 1]					)
     np.testing.assert_array_equal(build_mask(lowerCAmelCase_ ,  0					).numpy() ,  expected.numpy()					)






  def     lowercase		(    self			:		List[Any]					)							->						Optional[int]:
     __lowerCAmelCase							     =     torch.tensor([1, 2, 3, 4, 2_3, 2_3, 2_3]					)
     __lowerCAmelCase							     =     torch.tensor([1, 1, 1, 1, 0, 0, 0]					)
     np.testing.assert_array_equal(build_mask(lowerCAmelCase_ ,  2_3					).numpy() ,  expected.numpy()					)






  def     lowercase		(    self			:		str					)							->						List[Any]:
     __lowerCAmelCase							     =     torch.tensor([8, 2, 3, 4, 1, 1, 1]					)
     __lowerCAmelCase							     =     torch.tensor([1, 1, 1, 1, 0, 0, 0]					)
     np.testing.assert_array_equal(build_mask(lowerCAmelCase_ ,  1					).numpy() ,  expected.numpy()					)






  def     lowercase		(    self			:		Optional[Any]					)							->						Optional[int]:
     __lowerCAmelCase							     =     1_0_1
     __lowerCAmelCase							     =     torch.tensor([[1, 2, 3, 4, 5, 6], [1, 2, 3, 1_0_1, 5, 6], [1, 1_0_1, 3, 4, 1_0_1, 6]]					)
     __lowerCAmelCase							     =     torch.tensor([[1, 1, 1, 1, 1, 1], [1, 1, 1, 0, 0, 0], [1, 0, 0, 0, 1, 1]]					)

     __lowerCAmelCase							     =     compute_token_type_ids(lowerCAmelCase_ ,  lowerCAmelCase_					)
     np.testing.assert_array_equal(lowerCAmelCase_ ,  lowerCAmelCase_					)

