





'''simple docstring'''






from __future__ import annotations

from pprint import pformat
from typing import Generic, TypeVar

__lowerCamelCase						: int		=   TypeVar('T')







class 		UpperCAmelCase   (				Generic[T]):


  """simple docstring"""







  def __init__(				self    :					List[str]							,	UpperCamelCase__    :					bool = True  )     ->						None:
    _UpperCamelCase       			={}  # dictionary of lists
    _UpperCamelCase       			=directed


  def   UpperCamelCase__      (				self    :					List[str]							,	UpperCamelCase__    :					T							,	UpperCamelCase__    :					T  )     ->						GraphAdjacencyList[T]:

    if not self.directed:  # For undirected graphs
      # if both source vertex and destination vertex are both present in the
      # adjacency list, add destination vertex to source vertex list of adjacent
      # vertices and add source vertex to destination vertex list of adjacent
      # vertices.
      if source_vertex in self.adj_list and destination_vertex in self.adj_list:
        self.adj_list[source_vertex].append(UpperCamelCase__  )
        self.adj_list[destination_vertex].append(UpperCamelCase__  )
      # if only source vertex is present in adjacency list, add destination vertex
      # to source vertex list of adjacent vertices, then create a new vertex with
      # destination vertex as key and assign a list containing the source vertex
      # as it's first adjacent vertex.
      elif source_vertex in self.adj_list:
        self.adj_list[source_vertex].append(UpperCamelCase__  )
        _UpperCamelCase       			=[source_vertex]
      # if only destination vertex is present in adjacency list, add source vertex
      # to destination vertex list of adjacent vertices, then create a new vertex
      # with source vertex as key and assign a list containing the source vertex
      # as it's first adjacent vertex.
      elif destination_vertex in self.adj_list:
        self.adj_list[destination_vertex].append(UpperCamelCase__  )
        _UpperCamelCase       			=[destination_vertex]
      # if both source vertex and destination vertex are not present in adjacency
      # list, create a new vertex with source vertex as key and assign a list
      # containing the destination vertex as it's first adjacent vertex also
      # create a new vertex with destination vertex as key and assign a list
      # containing the source vertex as it's first adjacent vertex.
      else:
        _UpperCamelCase       			=[destination_vertex]
        _UpperCamelCase       			=[source_vertex]
    else:  # For directed graphs
      # if both source vertex and destination vertex are present in adjacency
      # list, add destination vertex to source vertex list of adjacent vertices.
      if source_vertex in self.adj_list and destination_vertex in self.adj_list:
        self.adj_list[source_vertex].append(UpperCamelCase__  )
      # if only source vertex is present in adjacency list, add destination
      # vertex to source vertex list of adjacent vertices and create a new vertex
      # with destination vertex as key, which has no adjacent vertex
      elif source_vertex in self.adj_list:
        self.adj_list[source_vertex].append(UpperCamelCase__  )
        _UpperCamelCase       			=[]
      # if only destination vertex is present in adjacency list, create a new
      # vertex with source vertex as key and assign a list containing destination
      # vertex as first adjacent vertex
      elif destination_vertex in self.adj_list:
        _UpperCamelCase       			=[destination_vertex]
      # if both source vertex and destination vertex are not present in adjacency
      # list, create a new vertex with source vertex as key and a list containing
      # destination vertex as it's first adjacent vertex. Then create a new vertex
      # with destination vertex as key, which has no adjacent vertex
      else:
        _UpperCamelCase       			=[destination_vertex]
        _UpperCamelCase       			=[]

    return self




  def __repr__(				self    :					str  )     ->						str:
    return pformat(self.adj_list  )













'''simple docstring'''






from typing import TYPE_CHECKING

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


__lowerCamelCase						: str		=   {
    '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:
      __lowerCamelCase						: List[str]		=   ['Speech2TextTokenizer']

try:
      if not is_speech_available():
            raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
      pass
else:
      __lowerCamelCase						: str		=   ['Speech2TextFeatureExtractor']

try:
      if not is_tf_available():
            raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
      pass
else:
      __lowerCamelCase						: Optional[Any]		=   [
          'TF_SPEECH_TO_TEXT_PRETRAINED_MODEL_ARCHIVE_LIST',
          'TFSpeech2TextForConditionalGeneration',
          'TFSpeech2TextModel',
          'TFSpeech2TextPreTrainedModel',
      ]

try:
      if not is_torch_available():
            raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
      pass
else:
      __lowerCamelCase						: Union[str, Any]		=   [
          '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

      __lowerCamelCase						: Optional[int]		=   _LazyModule(__name__, globals()['__file__'], _import_structure, module_spec=__spec__)






