
class        _SCREAMING_SNAKE_CASE	:



	def __init__(       self		,    lowercase		,    lowercase=None		,    lowercase=None					)							->			List[Any]:
					lowerCamelCase_         =     data
					lowerCamelCase_         =     previous
					lowerCamelCase_         =     next_node



	def __str__(       self					)							->			str:
					return f'{self.data}'



	def        SCREAMING_SNAKE_CASE_(       self					)							->			int:
					return self.data



	def        SCREAMING_SNAKE_CASE_(       self					)							->			Union[str, Any]:
					return self.next



	def        SCREAMING_SNAKE_CASE_(       self					)							->			int:
					return self.previous




class        _SCREAMING_SNAKE_CASE	:



	def __init__(       self		,    lowercase					)							->			Optional[int]:
					lowerCamelCase_         =     head



	def __iter__(       self					)							->			int:
					return self



	def        SCREAMING_SNAKE_CASE_(       self					)							->			Optional[Any]:
					if not self.current:
									raise StopIteration
					else:
									lowerCamelCase_         =     self.current.get_data()
									lowerCamelCase_         =     self.current.get_next()
									return value




class        _SCREAMING_SNAKE_CASE	:



	def __init__(       self					)							->			Union[str, Any]:
					lowerCamelCase_         =     None  # First node in list
					lowerCamelCase_         =     None  # Last node in list



	def __str__(       self					)							->			Optional[Any]:
					lowerCamelCase_         =     self.head
					lowerCamelCase_         =     []
					while current is not None:
									nodes.append(current.get_data()					)
									lowerCamelCase_         =     current.get_next()
					return " ".join(str(lowercase					) for node in nodes					)



	def __contains__(       self		,    lowercase					)							->			Optional[int]:
					lowerCamelCase_         =     self.head
					while current:
									if current.get_data() == value:
													return True
									lowerCamelCase_         =     current.get_next()
					return False



	def __iter__(       self					)							->			List[str]:
					return LinkedListIterator(self.head					)



	def        SCREAMING_SNAKE_CASE_(       self					)							->			List[str]:
					if self.head:
									return self.head.get_data()
					return None



	def        SCREAMING_SNAKE_CASE_(       self					)							->			Any:
					if self.tail:
									return self.tail.get_data()
					return None



	def        SCREAMING_SNAKE_CASE_(       self		,    lowercase					)							->			None:
					if self.head is None:
									lowerCamelCase_         =     node
									lowerCamelCase_         =     node
					else:
									self.insert_before_node(self.head		,    lowercase					)



	def        SCREAMING_SNAKE_CASE_(       self		,    lowercase					)							->			None:
					if self.head is None:
									self.set_head(lowercase					)
					else:
									self.insert_after_node(self.tail		,    lowercase					)



	def        SCREAMING_SNAKE_CASE_(       self		,    lowercase					)							->			None:
					lowerCamelCase_         =     Node(lowercase					)
					if self.head is None:
									self.set_head(lowercase					)
					else:
									self.set_tail(lowercase					)



	def        SCREAMING_SNAKE_CASE_(       self		,    lowercase		,    lowercase					)							->			None:
					lowerCamelCase_         =     node
					lowerCamelCase_         =     node.previous

					if node.get_previous() is None:
									lowerCamelCase_         =     node_to_insert
					else:
									lowerCamelCase_         =     node_to_insert

					lowerCamelCase_         =     node_to_insert



	def        SCREAMING_SNAKE_CASE_(       self		,    lowercase		,    lowercase					)							->			None:
					lowerCamelCase_         =     node
					lowerCamelCase_         =     node.next

					if node.get_next() is None:
									lowerCamelCase_         =     node_to_insert
					else:
									lowerCamelCase_         =     node_to_insert

					lowerCamelCase_         =     node_to_insert



	def        SCREAMING_SNAKE_CASE_(       self		,    lowercase		,    lowercase					)							->			None:
					lowerCamelCase_         =     1
					lowerCamelCase_         =     Node(lowercase					)
					lowerCamelCase_         =     self.head
					while node:
									if current_position == position:
													self.insert_before_node(lowercase		,    lowercase					)
													return
									current_position += 1
									lowerCamelCase_         =     node.next
					self.insert_after_node(self.tail		,    lowercase					)



	def        SCREAMING_SNAKE_CASE_(       self		,    lowercase					)							->			Node:
					lowerCamelCase_         =     self.head
					while node:
									if node.get_data() == item:
													return node
									lowerCamelCase_         =     node.get_next()
					raise Exception("Node not found"					)



	def        SCREAMING_SNAKE_CASE_(       self		,    lowercase					)							->			Union[str, Any]:
					if (node := self.get_node(lowercase					)) is not None:
									if node == self.head:
													lowerCamelCase_         =     self.head.get_next()

									if node == self.tail:
													lowerCamelCase_         =     self.tail.get_previous()

									self.remove_node_pointers(lowercase					)



	@staticmethod
	def        SCREAMING_SNAKE_CASE_(       lowercase					)							->			None:
					if node.get_next():
									lowerCamelCase_         =     node.previous

					if node.get_previous():
									lowerCamelCase_         =     node.next

					lowerCamelCase_         =     None
					lowerCamelCase_         =     None



	def        SCREAMING_SNAKE_CASE_(       self					)							->			int:
					return self.head is None





def      lowerCamelCase_					(							):
				pass


if __name__ == "__main__":
			import doctest

			doctest.testmod()




import warnings
from contextlib import contextmanager

from ....processing_utils import ProcessorMixin




class        _SCREAMING_SNAKE_CASE	( snake_case_		):
	lowerCAmelCase__   =					'MCTCTFeatureExtractor'
	lowerCAmelCase__   =					'AutoTokenizer'



	def __init__(       self		,    lowercase		,    lowercase					)							->			str:
					super().__init__(lowercase		,    lowercase					)
					lowerCamelCase_         =     self.feature_extractor
					lowerCamelCase_         =     False



	def __call__(       self		,    *lowercase		,    **lowercase					)							->			List[str]:
					# For backward compatibility
					if self._in_target_context_manager:
									return self.current_processor(*lowercase		,    **lowercase					)

					if "raw_speech" in kwargs:
									warnings.warn("Using `raw_speech` as a keyword argument is deprecated. Use `audio` instead."					)
									lowerCamelCase_         =     kwargs.pop("raw_speech"					)
					else:
									lowerCamelCase_         =     kwargs.pop("audio"		,    lowercase					)
					lowerCamelCase_         =     kwargs.pop("sampling_rate"		,    lowercase					)
					lowerCamelCase_         =     kwargs.pop("text"		,    lowercase					)
					if len(lowercase					) > 0:
									lowerCamelCase_         =     args[0]
									lowerCamelCase_         =     args[1:]

					if audio is None and text is None:
									raise ValueError("You need to specify either an `audio` or `text` input to process."					)

					if audio is not None:
									lowerCamelCase_         =     self.feature_extractor(lowercase		,    *lowercase		,    sampling_rate=lowercase		,    **lowercase					)
					if text is not None:
									lowerCamelCase_         =     self.tokenizer(lowercase		,    **lowercase					)

					if text is None:
									return inputs
					elif audio is None:
									return encodings
					else:
									lowerCamelCase_         =     encodings["input_ids"]
									return inputs



	def        SCREAMING_SNAKE_CASE_(       self		,    *lowercase		,    **lowercase					)							->			Optional[Any]:
					return self.tokenizer.batch_decode(*lowercase		,    **lowercase					)



	def        SCREAMING_SNAKE_CASE_(       self		,    *lowercase		,    **lowercase					)							->			Optional[Any]:
					# For backward compatibility
					if self._in_target_context_manager:
									return self.current_processor.pad(*lowercase		,    **lowercase					)

					lowerCamelCase_         =     kwargs.pop("input_features"		,    lowercase					)
					lowerCamelCase_         =     kwargs.pop("labels"		,    lowercase					)
					if len(lowercase					) > 0:
									lowerCamelCase_         =     args[0]
									lowerCamelCase_         =     args[1:]

					if input_features is not None:
									lowerCamelCase_         =     self.feature_extractor.pad(lowercase		,    *lowercase		,    **lowercase					)
					if labels is not None:
									lowerCamelCase_         =     self.tokenizer.pad(lowercase		,    **lowercase					)

					if labels is None:
									return input_features
					elif input_features is None:
									return labels
					else:
									lowerCamelCase_         =     labels["input_ids"]
									return input_features



	def        SCREAMING_SNAKE_CASE_(       self		,    *lowercase		,    **lowercase					)							->			List[str]:
					return self.tokenizer.decode(*lowercase		,    **lowercase					)



	@contextmanager
	def        SCREAMING_SNAKE_CASE_(       self					)							->			Optional[int]:
					warnings.warn(
					    "`as_target_processor` is deprecated and will be removed in v5 of Transformers. You can process your "
					    "labels by using the argument `text` of the regular `__call__` method (either in the same call as "
					    "your audio inputs, or in a separate call."					)
					lowerCamelCase_         =     True
					lowerCamelCase_         =     self.tokenizer
					yield
					lowerCamelCase_         =     self.feature_extractor
					lowerCamelCase_         =     False


