


# 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      UpperCamelCase(	_a ):
					snake_case_		:					Tuple    					=						"""openai/whisper-base"""
					snake_case_		:					Optional[Any]    					=						(
					    """This is a tool that transcribes an audio into text. It takes an input named `audio` and returns the """
					    """transcribed text."""
					)
					snake_case_		:					Dict    					=						"""transcriber"""
					snake_case_		:					List[Any]    					=						WhisperProcessor
					snake_case_		:					int    					=						WhisperForConditionalGeneration

					snake_case_		:					int    					=						["""audio"""]
					snake_case_		:					Union[str, Any]    					=						["""text"""]


					def 				SCREAMING_SNAKE_CASE_	(    self						:		Dict  ,     SCREAMING_SNAKE_CASE						:		Any    )      ->						Optional[int]:




											'''simple docstring'''

											return self.pre_processor(SCREAMING_SNAKE_CASE  ,     return_tensors="pt"    ).input_features


					def 				SCREAMING_SNAKE_CASE_	(    self						:		Optional[int]  ,     SCREAMING_SNAKE_CASE						:		Tuple    )      ->						List[str]:




											'''simple docstring'''

											return self.model.generate(inputs=SCREAMING_SNAKE_CASE    )






					def 				SCREAMING_SNAKE_CASE_	(    self						:		Any  ,     SCREAMING_SNAKE_CASE						:		Tuple    )      ->						Optional[Any]:




											'''simple docstring'''

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









from __future__ import annotations






class      UpperCamelCase:


					def __init__(    self						:		Optional[int]  ,     SCREAMING_SNAKE_CASE						:		str  ,     SCREAMING_SNAKE_CASE						:		str    )      ->						str:




											'''simple docstring'''

											__snake_case		,       __snake_case				=		text, pattern
											__snake_case		,       __snake_case				=		len(SCREAMING_SNAKE_CASE    ), len(SCREAMING_SNAKE_CASE    )


					def 				SCREAMING_SNAKE_CASE_	(    self						:		Optional[Any]  ,     SCREAMING_SNAKE_CASE						:		str    )      ->						int:




											'''simple docstring'''

											for i in range(self.patLen - 1  ,     -1  ,     -1    ):
																	if char == self.pattern[i]:
																							return i
											return -1


					def 				SCREAMING_SNAKE_CASE_	(    self						:		int  ,     SCREAMING_SNAKE_CASE						:		int    )      ->						int:




											'''simple docstring'''

											for i in range(self.patLen - 1  ,     -1  ,     -1    ):
																	if self.pattern[i] != self.text[current_pos + i]:
																							return current_pos + i
											return -1






					def 				SCREAMING_SNAKE_CASE_	(    self						:		List[Any]    )      ->						list[int]:




											'''simple docstring'''

											__snake_case				=		[]
											for i in range(self.textLen - self.patLen + 1    ):
																	__snake_case				=		self.mismatch_in_text(SCREAMING_SNAKE_CASE    )
																	if mismatch_index == -1:
																							positions.append(SCREAMING_SNAKE_CASE    )
																	else:
																							__snake_case				=		self.match_in_pattern(self.text[mismatch_index]    )
																							__snake_case				=		(
																							    mismatch_index - match_index
																							)  # shifting index lgtm [py/multiple-definition]
											return positions




A				:       str      =  'ABAABA'
A				:       Optional[Any]      =  'AB'
A				:       Any      =  BoyerMooreSearch(text, pattern)
A				:       Tuple      =  bms.bad_character_heuristic()

if len(positions) == 0:
	print('No match found')
else:
	print('Pattern found in following positions: ')
	print(positions)





