





"""simple docstring"""





import unittest

from transformers.utils.backbone_utils import (
    BackboneMixin,
    get_aligned_output_features_output_indices,
    verify_out_features_out_indices,
)





class      snake_case						(  unittest.TestCase  ):

      def 		SCREAMING_SNAKE_CASE_     (     self  :str		):
       __SCREAMING_SNAKE_CASE					:     List[str]   				=			['''a''', '''b''', '''c''']

       # Defaults to last layer if both are None
       __SCREAMING_SNAKE_CASE				, __SCREAMING_SNAKE_CASE					:     Optional[int]   				=			get_aligned_output_features_output_indices(SCREAMING_SNAKE_CASE__		,				SCREAMING_SNAKE_CASE__		,				SCREAMING_SNAKE_CASE__		)
       self.assertEqual(SCREAMING_SNAKE_CASE__		,				['''c''']		)
       self.assertEqual(SCREAMING_SNAKE_CASE__		,				[2]		)

       # Out indices set to match out features
       __SCREAMING_SNAKE_CASE				, __SCREAMING_SNAKE_CASE					:     List[Any]   				=			get_aligned_output_features_output_indices(['''a''', '''c''']		,				SCREAMING_SNAKE_CASE__		,				SCREAMING_SNAKE_CASE__		)
       self.assertEqual(SCREAMING_SNAKE_CASE__		,				['''a''', '''c''']		)
       self.assertEqual(SCREAMING_SNAKE_CASE__		,				[0, 2]		)

       # Out features set to match out indices
       __SCREAMING_SNAKE_CASE				, __SCREAMING_SNAKE_CASE					:     List[Any]   				=			get_aligned_output_features_output_indices(SCREAMING_SNAKE_CASE__		,				[0, 2]		,				SCREAMING_SNAKE_CASE__		)
       self.assertEqual(SCREAMING_SNAKE_CASE__		,				['''a''', '''c''']		)
       self.assertEqual(SCREAMING_SNAKE_CASE__		,				[0, 2]		)

       # Out features selected from negative indices
       __SCREAMING_SNAKE_CASE				, __SCREAMING_SNAKE_CASE					:     Union[str, Any]   				=			get_aligned_output_features_output_indices(SCREAMING_SNAKE_CASE__		,				[-3, -1]		,				SCREAMING_SNAKE_CASE__		)
       self.assertEqual(SCREAMING_SNAKE_CASE__		,				['''a''', '''c''']		)
       self.assertEqual(SCREAMING_SNAKE_CASE__		,				[-3, -1]		)

      def 		SCREAMING_SNAKE_CASE_     (     self  :Tuple		):



       with self.assertRaises(SCREAMING_SNAKE_CASE__		):
        verify_out_features_out_indices(['''a''', '''b''']		,				(0, 1)		,				SCREAMING_SNAKE_CASE__		)

       # Out features must be a list
       with self.assertRaises(SCREAMING_SNAKE_CASE__		):
        verify_out_features_out_indices(('''a''', '''b''')		,				(0, 1)		,				['''a''', '''b''']		)

       # Out features must be a subset of stage names
       with self.assertRaises(SCREAMING_SNAKE_CASE__		):
        verify_out_features_out_indices(['''a''', '''b''']		,				(0, 1)		,				['''a''']		)

       # Out indices must be a list or tuple
       with self.assertRaises(SCREAMING_SNAKE_CASE__		):
        verify_out_features_out_indices(SCREAMING_SNAKE_CASE__		,				0		,				['''a''', '''b''']		)

       # Out indices must be a subset of stage names
       with self.assertRaises(SCREAMING_SNAKE_CASE__		):
        verify_out_features_out_indices(SCREAMING_SNAKE_CASE__		,				(0, 1)		,				['''a''']		)

       # Out features and out indices must be the same length
       with self.assertRaises(SCREAMING_SNAKE_CASE__		):
        verify_out_features_out_indices(['''a''', '''b''']		,				(0,)		,				['''a''', '''b''', '''c''']		)

       # Out features should match out indices
       with self.assertRaises(SCREAMING_SNAKE_CASE__		):
        verify_out_features_out_indices(['''a''', '''b''']		,				(0, 2)		,				['''a''', '''b''', '''c''']		)

       # Out features and out indices should be in order
       with self.assertRaises(SCREAMING_SNAKE_CASE__		):
        verify_out_features_out_indices(['''b''', '''a''']		,				(0, 1)		,				['''a''', '''b''']		)

       # Check passes with valid inputs
       verify_out_features_out_indices(['''a''', '''b''', '''d''']		,				(0, 1, -1)		,				['''a''', '''b''', '''c''', '''d''']		)



      def 		SCREAMING_SNAKE_CASE_     (     self  :Dict		):
       __SCREAMING_SNAKE_CASE					:     Tuple   				=			BackboneMixin()

       __SCREAMING_SNAKE_CASE					:     List[Any]   				=			['''a''', '''b''', '''c''']
       __SCREAMING_SNAKE_CASE					:     Dict   				=			['''a''', '''c''']
       __SCREAMING_SNAKE_CASE					:     Dict   				=			[0, 2]

       # Check that the output features and indices are set correctly
       self.assertEqual(backbone.out_features		,				['''a''', '''c''']		)
       self.assertEqual(backbone.out_indices		,				[0, 2]		)

       # Check out features and indices are updated correctly
       __SCREAMING_SNAKE_CASE					:     Any   				=			['''a''', '''b''']
       self.assertEqual(backbone.out_features		,				['''a''', '''b''']		)
       self.assertEqual(backbone.out_indices		,				[0, 1]		)

       __SCREAMING_SNAKE_CASE					:     int   				=			[-3, -1]
       self.assertEqual(backbone.out_features		,				['''a''', '''c''']		)
       self.assertEqual(backbone.out_indices		,				[-3, -1]		)



# Copyright 2023 The HuggingFace Inc. 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 ..models.whisper import WhisperForConditionalGeneration, WhisperProcessor
from .base import PipelineTool
class       _lowerCAmelCase  (		__magic_name__							):

 """simple docstring"""
 SCREAMING_SNAKE_CASE_				:					Tuple       						="openai/whisper-base"
 SCREAMING_SNAKE_CASE_				:					List[str]       						=(
     "This is a tool that transcribes an audio into text. It takes an input named `audio` and returns the "
     "transcribed text."
 )
 SCREAMING_SNAKE_CASE_				:					int       						="transcriber"
 SCREAMING_SNAKE_CASE_				:					Tuple       						=WhisperProcessor
 SCREAMING_SNAKE_CASE_				:					List[Any]       						=WhisperForConditionalGeneration

 SCREAMING_SNAKE_CASE_				:					Union[str, Any]       						=["audio"]
 SCREAMING_SNAKE_CASE_				:					Any       						=["text"]

 def      __lowerCAmelCase  (						self			:			List[Any]					, SCREAMING_SNAKE_CASE__			:			List[Any]   ):






      """simple docstring"""



      return self.pre_processor(SCREAMING_SNAKE_CASE__					, return_tensors='pt'   ).input_features

 def      __lowerCAmelCase  (						self			:			Tuple					, SCREAMING_SNAKE_CASE__			:			Union[str, Any]   ):






      """simple docstring"""



      return self.model.generate(inputs=SCREAMING_SNAKE_CASE__   )






 def      __lowerCAmelCase  (						self			:			List[str]					, SCREAMING_SNAKE_CASE__			:			List[str]   ):






      """simple docstring"""



      return self.pre_processor.batch_decode(SCREAMING_SNAKE_CASE__					, skip_special_tokens=SCREAMING_SNAKE_CASE__   )[0]


