code: 
  
  
  
  
  """simple docstring"""
  
  
  
  
  import shutil
  import tempfile
  import unittest
  
  import pytest
  
  from transformers import WhisperTokenizer, is_speech_available
  from transformers.testing_utils import require_sentencepiece, require_torch, require_torchaudio
  
  from .test_feature_extraction_whisper import floats_list
  
  
  if is_speech_available():
    from transformers import WhisperFeatureExtractor, WhisperProcessor
  
  
  __A :		int      							=    50358
  __A :		Optional[Any]      							=    50362
  @require_torch
  @require_torchaudio
  @require_sentencepiece
  class 							lowerCamelCase		( unittest.TestCase				):
  
  
  
  
  
  
  
     def       a_							(							self ):
         UpperCamelCase				:   Optional[int]          =							"""openai/whisper-small.en"""
         UpperCamelCase				:   Tuple          =							tempfile.mkdtemp()
  
  
  
  
  
  
  
     def       a_							(							self    ,      **SCREAMING_SNAKE_CASE_ ):
         return WhisperTokenizer.from_pretrained(self.checkpoint    ,      **SCREAMING_SNAKE_CASE_ )
  
  
  
  
  
  
  
     def       a_							(							self    ,      **SCREAMING_SNAKE_CASE_ ):
         return WhisperFeatureExtractor.from_pretrained(self.checkpoint    ,      **SCREAMING_SNAKE_CASE_ )
  
  
  
  
  
  
  
     def       a_							(							self ):
         shutil.rmtree(self.tmpdirname )
  
  
  
  
  
  
  
     def       a_							(							self ):
         UpperCamelCase				:   List[Any]          =							self.get_tokenizer()
         UpperCamelCase				:   List[str]          =							self.get_feature_extractor()
  
         UpperCamelCase				:   Union[str, Any]          =							WhisperProcessor(tokenizer=SCREAMING_SNAKE_CASE_    ,      feature_extractor=SCREAMING_SNAKE_CASE_ )
  
         processor.save_pretrained(self.tmpdirname )
         UpperCamelCase				:   Tuple          =							WhisperProcessor.from_pretrained(self.tmpdirname )
  
         self.assertEqual(processor.tokenizer.get_vocab()    ,      tokenizer.get_vocab() )
         self.assertIsInstance(processor.tokenizer    ,      SCREAMING_SNAKE_CASE_ )
  
         self.assertEqual(processor.feature_extractor.to_json_string()    ,      feature_extractor.to_json_string() )
         self.assertIsInstance(processor.feature_extractor    ,      SCREAMING_SNAKE_CASE_ )
  
  
  
  
  
  
  
     def       a_							(							self ):
         UpperCamelCase				:   List[str]          =							WhisperProcessor(tokenizer=self.get_tokenizer()    ,      feature_extractor=self.get_feature_extractor() )
         processor.save_pretrained(self.tmpdirname )
  
         UpperCamelCase				:   List[str]          =							self.get_tokenizer(bos_token="""(BOS)"""    ,      eos_token="""(EOS)""" )
         UpperCamelCase				:   Dict          =							self.get_feature_extractor(do_normalize=SCREAMING_SNAKE_CASE_    ,      padding_value=1.0 )
  
         UpperCamelCase				:   Union[str, Any]          =							WhisperProcessor.from_pretrained(
             self.tmpdirname    ,      bos_token="""(BOS)"""    ,      eos_token="""(EOS)"""    ,      do_normalize=SCREAMING_SNAKE_CASE_    ,      padding_value=1.0 )
  
         self.assertEqual(processor.tokenizer.get_vocab()    ,      tokenizer_add_kwargs.get_vocab() )
         self.assertIsInstance(processor.tokenizer    ,      SCREAMING_SNAKE_CASE_ )
  
         self.assertEqual(processor.feature_extractor.to_json_string()    ,      feature_extractor_add_kwargs.to_json_string() )
         self.assertIsInstance(processor.feature_extractor    ,      SCREAMING_SNAKE_CASE_ )
  
  
  
  
  
  
  
     def       a_							(							self ):
         UpperCamelCase				:   Optional[Any]          =							self.get_feature_extractor()
         UpperCamelCase				:   Any          =							self.get_tokenizer()
  
         UpperCamelCase				:   Union[str, Any]          =							WhisperProcessor(tokenizer=SCREAMING_SNAKE_CASE_    ,      feature_extractor=SCREAMING_SNAKE_CASE_ )
  
         UpperCamelCase				:   Dict          =							floats_list((3, 1000) )
  
         UpperCamelCase				:   Tuple          =							feature_extractor(SCREAMING_SNAKE_CASE_    ,      return_tensors="""np""" )
         UpperCamelCase				:   Optional[Any]          =							processor(SCREAMING_SNAKE_CASE_    ,      return_tensors="""np""" )
  
         for key in input_feat_extract.keys():
             self.assertAlmostEqual(input_feat_extract[key].sum()    ,      input_processor[key].sum()    ,      delta=1e-2 )
  
  
  
  
  
  
  
     def       a_							(							self ):
         UpperCamelCase				:   Optional[Any]          =							self.get_feature_extractor()
         UpperCamelCase				:   List[str]          =							self.get_tokenizer()
  
         UpperCamelCase				:   Dict          =							WhisperProcessor(tokenizer=SCREAMING_SNAKE_CASE_    ,      feature_extractor=SCREAMING_SNAKE_CASE_ )
  
         UpperCamelCase				:   Optional[Any]          =							"""This is a test string"""
  
         UpperCamelCase				:   Optional[Any]          =							processor(text=SCREAMING_SNAKE_CASE_ )
  
         UpperCamelCase				:   Optional[int]          =							tokenizer(SCREAMING_SNAKE_CASE_ )
  
         for key in encoded_tok.keys():
             self.assertListEqual(encoded_tok[key]    ,      encoded_processor[key] )
  
  
  
  
  
  
  
     def       a_							(							self ):
         UpperCamelCase				:   Optional[Any]          =							self.get_feature_extractor()
         UpperCamelCase				:   int          =							self.get_tokenizer()
  
         UpperCamelCase				:   Tuple          =							WhisperProcessor(tokenizer=SCREAMING_SNAKE_CASE_    ,      feature_extractor=SCREAMING_SNAKE_CASE_ )
  
         UpperCamelCase				:   List[Any]          =							[[1, 4, 5, 8, 1, 0, 8], [3, 4, 3, 1, 1, 8, 9]]
  
         UpperCamelCase				:   Optional[int]          =							processor.batch_decode(SCREAMING_SNAKE_CASE_ )
         UpperCamelCase				:   List[Any]          =							tokenizer.batch_decode(SCREAMING_SNAKE_CASE_ )
  
         self.assertListEqual(SCREAMING_SNAKE_CASE_    ,      SCREAMING_SNAKE_CASE_ )
  
  
  
  
  
  
  
     def       a_							(							self ):
         UpperCamelCase				:   Dict          =							self.get_feature_extractor()
         UpperCamelCase				:   str          =							self.get_tokenizer()
  
         UpperCamelCase				:   Optional[int]          =							WhisperProcessor(tokenizer=SCREAMING_SNAKE_CASE_    ,      feature_extractor=SCREAMING_SNAKE_CASE_ )
  
         self.assertListEqual(
             processor.model_input_names    ,      feature_extractor.model_input_names    ,      msg="""`processor` and `feature_extractor` model input names do not match"""    ,      )
  
  
  
  
  
  
  
     def       a_							(							self ):
         UpperCamelCase				:   Optional[int]          =							self.get_feature_extractor()
         UpperCamelCase				:   Tuple          =							self.get_tokenizer()
  
         UpperCamelCase				:   Dict          =							WhisperProcessor(tokenizer=SCREAMING_SNAKE_CASE_    ,      feature_extractor=SCREAMING_SNAKE_CASE_ )
         UpperCamelCase				:   Tuple          =							processor.get_decoder_prompt_ids(task="""transcribe"""    ,      no_timestamps=SCREAMING_SNAKE_CASE_ )
  
         self.assertIsInstance(SCREAMING_SNAKE_CASE_    ,      SCREAMING_SNAKE_CASE_ )
         for ids in forced_decoder_ids:
             self.assertIsInstance(SCREAMING_SNAKE_CASE_    ,      (list, tuple) )
  
         UpperCamelCase				:   List[Any]          =							[TRANSCRIBE, NOTIMESTAMPS]
         self.assertListEqual([ids[-1] for ids in forced_decoder_ids]    ,      SCREAMING_SNAKE_CASE_ )
  
  
  
  
  
  
  
     def       a_							(							self ):
         UpperCamelCase				:   int          =							WhisperProcessor(tokenizer=self.get_tokenizer()    ,      feature_extractor=self.get_feature_extractor() )
         UpperCamelCase				:   List[Any]          =							processor.get_prompt_ids("""Mr. Quilter""" )
         UpperCamelCase				:   List[Any]          =							processor.tokenizer.decode(SCREAMING_SNAKE_CASE_ )
  
         self.assertListEqual(prompt_ids.tolist()    ,      [5_0360, 1770, 13, 2264, 346, 353] )
         self.assertEqual(SCREAMING_SNAKE_CASE_    ,      """<|startofprev|> Mr. Quilter""" )
  
  
  
  
  
  
  
     def       a_							(							self ):
         UpperCamelCase				:   Dict          =							WhisperProcessor(tokenizer=self.get_tokenizer()    ,      feature_extractor=self.get_feature_extractor() )
         UpperCamelCase				:   Any          =							processor.get_prompt_ids("""""" )
         UpperCamelCase				:   Optional[Any]          =							processor.tokenizer.decode(SCREAMING_SNAKE_CASE_ )
  
         self.assertListEqual(prompt_ids.tolist()    ,      [5_0360, 220] )
         self.assertEqual(SCREAMING_SNAKE_CASE_    ,      """<|startofprev|> """ )
  
  
  
  
  
  
  
     def       a_							(							self ):
         UpperCamelCase				:   str          =							WhisperProcessor(tokenizer=self.get_tokenizer()    ,      feature_extractor=self.get_feature_extractor() )
  
         def _test_prompt_error_raised_helper(SCREAMING_SNAKE_CASE_    ,      SCREAMING_SNAKE_CASE_ ):
             with pytest.raises(SCREAMING_SNAKE_CASE_ ) as excinfo:
                 processor.get_prompt_ids(SCREAMING_SNAKE_CASE_ )
             UpperCamelCase				:   Any          =							f'Encountered text in the prompt corresponding to disallowed special token: {special_token}.'
             self.assertEqual(SCREAMING_SNAKE_CASE_    ,      str(excinfo.value ) )
  
         _test_prompt_error_raised_helper("""<|startofprev|> test"""    ,      """<|startofprev|>""" )
         _test_prompt_error_raised_helper("""test <|notimestamps|>"""    ,      """<|notimestamps|>""" )
         _test_prompt_error_raised_helper("""test <|zh|> test <|transcribe|>"""    ,      """<|zh|>""" )
  
  
  
  
  
style_context: 
  
  
  
  
  """simple docstring"""
  
  
  
  
  import math
  import sys
  class 							lowerCamelCase		:
  
  
  
  
  
  
  
     def __init__(							self ):
         UpperCamelCase				:   Tuple          =							0
         UpperCamelCase				:   Optional[int]          =							[]
         UpperCamelCase				:   Optional[int]          =							{}  # To store the pos of node in array
  
  
  
  
  
  
  
     def       a_							(							self ):
         return self.cur_size == 0
  
  
  
  
  
  
  
     def       a_							(							self    ,      SCREAMING_SNAKE_CASE_ ):
         UpperCamelCase				:   List[str]          =							self.left(SCREAMING_SNAKE_CASE_ )
         UpperCamelCase				:   Optional[int]          =							self.right(SCREAMING_SNAKE_CASE_ )
         if lc < self.cur_size and self.array(SCREAMING_SNAKE_CASE_ )[0] < self.array(SCREAMING_SNAKE_CASE_ )[0]:
             UpperCamelCase				:   str          =							lc
         else:
             UpperCamelCase				:   Union[str, Any]          =							idx
         if rc < self.cur_size and self.array(SCREAMING_SNAKE_CASE_ )[0] < self.array(SCREAMING_SNAKE_CASE_ )[0]:
             UpperCamelCase				:   Optional[Any]          =							rc
         if smallest != idx:
             self.swap(SCREAMING_SNAKE_CASE_    ,      SCREAMING_SNAKE_CASE_ )
             self.min_heapify(SCREAMING_SNAKE_CASE_ )
  
  
  
  
  
  
  
     def       a_							(							self    ,      SCREAMING_SNAKE_CASE_ ):
         # Inserts a node into the Priority Queue
         UpperCamelCase				:   List[Any]          =							self.cur_size
         self.cur_size += 1
         self.array.append((sys.maxsize, tup[1]) )
         self.decrease_key((sys.maxsize, tup[1])    ,      tup[0] )
  
  
  
  
  
  
  
     def       a_							(							self ):
         # Removes and returns the min element at top of priority queue
         UpperCamelCase				:   str          =							self.array[0][1]
         UpperCamelCase				:   Optional[int]          =							self.array[self.cur_size - 1]
         self.cur_size -= 1
         self.min_heapify(1 )
         del self.pos[min_node]
         return min_node
  
  
  
  
  
  
  
     def       a_							(							self    ,      SCREAMING_SNAKE_CASE_ ):
         # returns the index of left child
         return 2 * i + 1
  
  
  
  
  
  
  
     def       a_							(							self    ,      SCREAMING_SNAKE_CASE_ ):
         # returns the index of right child
         return 2 * i + 2
  
  
  
  
  
  
  
     def       a_							(							self    ,      SCREAMING_SNAKE_CASE_ ):
         # returns the index of parent
         return math.floor(i / 2 )
  
  
  
  
  
  
  
     def       a_							(							self    ,      SCREAMING_SNAKE_CASE_    ,      SCREAMING_SNAKE_CASE_ ):
         # swaps array elements at indices i and j
         # update the pos{}
         UpperCamelCase				:   Dict          =							j
         UpperCamelCase				:   List[str]          =							i
         UpperCamelCase				:   Optional[int]          =							self.array[i]
         UpperCamelCase				:   Union[str, Any]          =							self.array[j]
         UpperCamelCase				:   Optional[int]          =							temp
  
  
  
  
  
  
  
     def       a_							(							self    ,      SCREAMING_SNAKE_CASE_    ,      SCREAMING_SNAKE_CASE_ ):
         UpperCamelCase				:   Tuple          =							self.pos[tup[1]]
         # assuming the new_d is atmost old_d
         UpperCamelCase				:   Union[str, Any]          =							(new_d, tup[1])
         while idx > 0 and self.array[self.par(SCREAMING_SNAKE_CASE_ )][0] > self.array[idx][0]:
             self.swap(SCREAMING_SNAKE_CASE_    ,      self.par(SCREAMING_SNAKE_CASE_ ) )
             UpperCamelCase				:   Union[str, Any]          =							self.par(SCREAMING_SNAKE_CASE_ )
  
  
  
  
  
  
  
  class 							lowerCamelCase		:
  
  
  
  
  
  
  
     def __init__(							self    ,      SCREAMING_SNAKE_CASE_ ):
         UpperCamelCase				:   Any          =							{}  # To store graph: u -> (v,w)
         UpperCamelCase				:   int          =							num  # Number of nodes in graph
         # To store the distance from source vertex
         UpperCamelCase				:   Any          =							[0] * self.num_nodes
         UpperCamelCase				:   Union[str, Any]          =							[-1] * self.num_nodes  # To store the path
  
  
  
  
  
  
  
     def       a_							(							self    ,      SCREAMING_SNAKE_CASE_    ,      SCREAMING_SNAKE_CASE_    ,      SCREAMING_SNAKE_CASE_ ):
         #  Edge going from node u to v and v to u with weight w
         # u (w)-> v, v (w) -> u
         # Check if u already in graph
         if u in self.adjList:
             self.adjList[u].append((v, w) )
         else:
             UpperCamelCase				:   Optional[int]          =							[(v, w)]
  
         # Assuming undirected graph
         if v in self.adjList:
             self.adjList[v].append((u, w) )
         else:
             UpperCamelCase				:   List[Any]          =							[(u, w)]
  
  
  
  
  
  
  
     def       a_							(							self ):
         # u -> v(w)
         for u in self.adjList:
             print(SCREAMING_SNAKE_CASE_    ,      """->"""    ,      """ -> """.join(str(f'{v}({w})' ) for v, w in self.adjList[u] ) )
  
  
  
  
  
  
  
     def       a_							(							self    ,      SCREAMING_SNAKE_CASE_ ):
         # Flush old junk values in par[]
         UpperCamelCase				:   Tuple          =							[-1] * self.num_nodes
         # src is the source node
         UpperCamelCase				:   Dict          =							0
         UpperCamelCase				:   int          =							PriorityQueue()
         q.insert((0, src) )  # (dist from src, node)
         for u in self.adjList:
             if u != src:
                 UpperCamelCase				:   Any          =							sys.maxsize  # Infinity
                 UpperCamelCase				:   int          =							-1
  
         while not q.is_empty():
             UpperCamelCase				:   int          =							q.extract_min()  # Returns node with the min dist from source
             # Update the distance of all the neighbours of u and
             # if their prev dist was INFINITY then push them in Q
             for v, w in self.adjList[u]:
                 UpperCamelCase				:   List[Any]          =							self.dist[u] + w
                 if self.dist[v] > new_dist:
                     if self.dist[v] == sys.maxsize:
                         q.insert((new_dist, v) )
                     else:
                         q.decrease_key((self.dist[v], v)    ,      SCREAMING_SNAKE_CASE_ )
                     UpperCamelCase				:   Any          =							new_dist
                     UpperCamelCase				:   Tuple          =							u
  
          # Show the shortest distances from src
         self.show_distances(SCREAMING_SNAKE_CASE_ )
  
  
  
  
  
  
  
     def       a_							(							self    ,      SCREAMING_SNAKE_CASE_ ):
         print(f'Distance from node: {src}' )
         for u in range(self.num_nodes ):
             print(f'Node {u} has distance: {self.dist[u]}' )
  
  
  
  
  
  
  
     def       a_							(							self    ,      SCREAMING_SNAKE_CASE_    ,      SCREAMING_SNAKE_CASE_ ):
         # To show the shortest path from src to dest
         # WARNING: Use it *after* calling dijkstra
         UpperCamelCase				:   Tuple          =							[]
         UpperCamelCase				:   Optional[Any]          =							0
         UpperCamelCase				:   int          =							dest
         # Backtracking from dest to src
         while self.par[temp] != -1:
             path.append(SCREAMING_SNAKE_CASE_ )
             if temp != src:
                 for v, w in self.adjList[temp]:
                     if v == self.par[temp]:
                         cost += w
                         break
             UpperCamelCase				:   int          =							self.par[temp]
         path.append(SCREAMING_SNAKE_CASE_ )
         path.reverse()
  
         print(f'----Path to reach {dest} from {src}----' )
         for u in path:
             print(f'{u}'    ,      end=""" """ )
             if u != dest:
                 print("""-> """    ,      end="""""" )
  
         print("""\nTotal cost of path: """    ,      SCREAMING_SNAKE_CASE_ )
  
  
  if __name__ == "__main__":
    __A :		int      							=    Graph(9)
    graph.add_edge(0, 1, 4)
    graph.add_edge(0, 7, 8)
    graph.add_edge(1, 2, 8)
    graph.add_edge(1, 7, 11)
    graph.add_edge(2, 3, 7)
    graph.add_edge(2, 8, 2)
    graph.add_edge(2, 5, 4)
    graph.add_edge(3, 4, 9)
    graph.add_edge(3, 5, 14)
    graph.add_edge(4, 5, 10)
    graph.add_edge(5, 6, 2)
    graph.add_edge(6, 7, 1)
    graph.add_edge(6, 8, 6)
    graph.add_edge(7, 8, 7)
    graph.show_graph()
    graph.dijkstra(0)
    graph.show_path(0, 4)
  
  # OUTPUT
  # 0 -> 1(4) -> 7(8)
  # 1 -> 0(4) -> 2(8) -> 7(11)
  # 7 -> 0(8) -> 1(11) -> 6(1) -> 8(7)
  # 2 -> 1(8) -> 3(7) -> 8(2) -> 5(4)
  # 3 -> 2(7) -> 4(9) -> 5(14)
  # 8 -> 2(2) -> 6(6) -> 7(7)
  # 5 -> 2(4) -> 3(14) -> 4(10) -> 6(2)
  # 4 -> 3(9) -> 5(10)
  # 6 -> 5(2) -> 7(1) -> 8(6)
  # Distance from node: 0
  # Node 0 has distance: 0
  # Node 1 has distance: 4
  # Node 2 has distance: 12
  # Node 3 has distance: 19
  # Node 4 has distance: 21
  # Node 5 has distance: 11
  # Node 6 has distance: 9
  # Node 7 has distance: 8
  # Node 8 has distance: 14
  # ----Path to reach 4 from 0----
  # 0 -> 7 -> 6 -> 5 -> 4
  # Total cost of path:  21
  
  
  
  
  