





"""simple docstring"""




from timeit import timeit

a						: Optional[int]     	=			{
    '''MALAYALAM''': True,
    '''String''': False,
    '''rotor''': True,
    '''level''': True,
    '''A''': True,
    '''BB''': True,
    '''ABC''': False,
    '''amanaplanacanalpanama''': True,  # "a man a plan a canal panama"
}
# Ensure our test data is valid
assert all((key == key[::-1]) is value for key, value in test_data.items())






def       _SCREAMING_SNAKE_CASE		(	_lowercase						:    str					) ->bool:






	'''simple docstring'''






	a      :		Tuple	=				0
	a      :		Union[str, Any]	=				len(_lowercase					) - 1
	while start_i < end_i:
		if s[start_i] == s[end_i]:
			start_i += 1
			end_i -= 1
		else:
			return False
	return True






def       _SCREAMING_SNAKE_CASE		(	_lowercase						:    str					) ->bool:






	'''simple docstring'''






	a      :		Tuple	=				len(_lowercase					) // 2
	a      :		str	=				len(_lowercase					)

	# We need to traverse till half of the length of string
	# as we can get access of the i'th last element from
	# i'th index.
	# eg: [0,1,2,3,4,5] => 4th index can be accessed
	# with the help of 1st index (i==n-i-1)
	# where n is length of string
	return all(s[i] == s[n - i - 1] for i in range(_lowercase					)					)






def       _SCREAMING_SNAKE_CASE		(	_lowercase						:    str					) ->bool:






	'''simple docstring'''






	if len(_lowercase					) <= 2:
		return True
	if s[0] == s[len(_lowercase					) - 1]:
		return is_palindrome_recursive(s[1:-1]					)
	else:
		return False






def       _SCREAMING_SNAKE_CASE		(	_lowercase						:    str					) ->bool:






	'''simple docstring'''






	return s == s[::-1]






def       _SCREAMING_SNAKE_CASE		(	_lowercase						:    str					) ->None:






	'''simple docstring'''






	a      :		Tuple	=				F"""all({name}(key) is value for key, value in test_data.items())"""
	a      :		int	=				F"""from __main__ import test_data, {name}"""
	a      :		Dict	=				50_0000
	a      :		Dict	=				timeit(stmt=_lowercase    ,       setup=_lowercase    ,       number=_lowercase					)
	print(F"""{name:<35} finished {number:,} runs in {result:.5f} seconds"""					)


if __name__ == "__main__":
		for key, value in test_data.items():
				assert is_palindrome(key) is is_palindrome_recursive(key)
				assert is_palindrome(key) is is_palindrome_slice(key)
				print(F'''{key:21} {value}''')
		print('''a man a plan a canal panama''')

		# finished 500,000 runs in 0.46793 seconds
		benchmark_function('''is_palindrome_slice''')
		# finished 500,000 runs in 0.85234 seconds
		benchmark_function('''is_palindrome''')
		# finished 500,000 runs in 1.32028 seconds
		benchmark_function('''is_palindrome_recursive''')
		# finished 500,000 runs in 2.08679 seconds
		benchmark_function('''is_palindrome_traversal''')




from typing import TYPE_CHECKING

from ...utils import (
    OptionalDependencyNotAvailable,
    _LazyModule,
    is_sentencepiece_available,
    is_speech_available,
    is_tf_available,
    is_torch_available,
)


_A   =     {
    "configuration_speech_to_text": ["SPEECH_TO_TEXT_PRETRAINED_CONFIG_ARCHIVE_MAP", "Speech2TextConfig"],
    "processing_speech_to_text": ["Speech2TextProcessor"],
}

try:
			if not is_sentencepiece_available():
						raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
			pass
else:
			_A   =     ["Speech2TextTokenizer"]

try:
			if not is_speech_available():
						raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
			pass
else:
			_A   =     ["Speech2TextFeatureExtractor"]

try:
			if not is_tf_available():
						raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
			pass
else:
			_A   =     [
			    "TF_SPEECH_TO_TEXT_PRETRAINED_MODEL_ARCHIVE_LIST",
			    "TFSpeech2TextForConditionalGeneration",
			    "TFSpeech2TextModel",
			    "TFSpeech2TextPreTrainedModel",
			]

try:
			if not is_torch_available():
						raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
			pass
else:
			_A   =     [
			    "SPEECH_TO_TEXT_PRETRAINED_MODEL_ARCHIVE_LIST",
			    "Speech2TextForConditionalGeneration",
			    "Speech2TextModel",
			    "Speech2TextPreTrainedModel",
			]


if TYPE_CHECKING:
			from .configuration_speech_to_text import SPEECH_TO_TEXT_PRETRAINED_CONFIG_ARCHIVE_MAP, SpeechaTextConfig
			from .processing_speech_to_text import SpeechaTextProcessor

			try:
						if not is_sentencepiece_available():
									raise OptionalDependencyNotAvailable()
			except OptionalDependencyNotAvailable:
						pass
			else:
						from .tokenization_speech_to_text import SpeechaTextTokenizer

			try:
						if not is_speech_available():
									raise OptionalDependencyNotAvailable()
			except OptionalDependencyNotAvailable:
						pass
			else:
						from .feature_extraction_speech_to_text import SpeechaTextFeatureExtractor

			try:
						if not is_tf_available():
									raise OptionalDependencyNotAvailable()
			except OptionalDependencyNotAvailable:
						pass
			else:
						from .modeling_tf_speech_to_text import (
						    TF_SPEECH_TO_TEXT_PRETRAINED_MODEL_ARCHIVE_LIST,
						    TFSpeechaTextForConditionalGeneration,
						    TFSpeechaTextModel,
						    TFSpeechaTextPreTrainedModel,
						)

			try:
						if not is_torch_available():
									raise OptionalDependencyNotAvailable()
			except OptionalDependencyNotAvailable:
						pass
			else:
						from .modeling_speech_to_text import (
						    SPEECH_TO_TEXT_PRETRAINED_MODEL_ARCHIVE_LIST,
						    SpeechaTextForConditionalGeneration,
						    SpeechaTextModel,
						    SpeechaTextPreTrainedModel,
						)

else:
			import sys

			_A   =     _LazyModule(__name__, globals()["__file__"], _import_structure, module_spec=__spec__)



