





from typing import TYPE_CHECKING

from ...utils import OptionalDependencyNotAvailable, _LazyModule, is_tokenizers_available, is_torch_available


snake_case__					:							Union[str, Any]													=     {
    'configuration_squeezebert': [
        'SQUEEZEBERT_PRETRAINED_CONFIG_ARCHIVE_MAP',
        'SqueezeBertConfig',
        'SqueezeBertOnnxConfig',
    ],
    'tokenization_squeezebert': ['SqueezeBertTokenizer'],
}

try:
       if not is_tokenizers_available():
              raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
       pass
else:
       snake_case__					:							Any													=     ['SqueezeBertTokenizerFast']

try:
       if not is_torch_available():
              raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
       pass
else:
       snake_case__					:							List[Any]													=     [
           'SQUEEZEBERT_PRETRAINED_MODEL_ARCHIVE_LIST',
           'SqueezeBertForMaskedLM',
           'SqueezeBertForMultipleChoice',
           'SqueezeBertForQuestionAnswering',
           'SqueezeBertForSequenceClassification',
           'SqueezeBertForTokenClassification',
           'SqueezeBertModel',
           'SqueezeBertModule',
           'SqueezeBertPreTrainedModel',
       ]


if TYPE_CHECKING:
       from .configuration_squeezebert import (
           SQUEEZEBERT_PRETRAINED_CONFIG_ARCHIVE_MAP,
           SqueezeBertConfig,
           SqueezeBertOnnxConfig,
       )
       from .tokenization_squeezebert import SqueezeBertTokenizer

       try:
              if not is_tokenizers_available():
                     raise OptionalDependencyNotAvailable()
       except OptionalDependencyNotAvailable:
              pass
       else:
              from .tokenization_squeezebert_fast import SqueezeBertTokenizerFast

       try:
              if not is_torch_available():
                     raise OptionalDependencyNotAvailable()
       except OptionalDependencyNotAvailable:
              pass
       else:
              from .modeling_squeezebert import (
                  SQUEEZEBERT_PRETRAINED_MODEL_ARCHIVE_LIST,
                  SqueezeBertForMaskedLM,
                  SqueezeBertForMultipleChoice,
                  SqueezeBertForQuestionAnswering,
                  SqueezeBertForSequenceClassification,
                  SqueezeBertForTokenClassification,
                  SqueezeBertModel,
                  SqueezeBertModule,
                  SqueezeBertPreTrainedModel,
              )

else:
       import sys

       snake_case__					:							str													=     _LazyModule(__name__, globals()['__file__'], _import_structure, module_spec=__spec__)












def _a				(	lowerCamelCase:   dict )	->						bool:







      '''simple docstring'''






      __A          =				set()
      # To detect a back edge, keep track of vertices currently in the recursion stack
      __A          =				set()
      return any(
          node not in visited and depth_first_search(lowerCamelCase					,				lowerCamelCase					,				lowerCamelCase					,				lowerCamelCase )
          for node in graph )



def _a				(	lowerCamelCase:   dict					,				lowerCamelCase:   int					,				lowerCamelCase:   set					,				lowerCamelCase:   set )	->						bool:







      '''simple docstring'''






      visited.add(lowerCamelCase )
      rec_stk.add(lowerCamelCase )

      for node in graph[vertex]:
            if node not in visited:
                  if depth_first_search(lowerCamelCase					,				lowerCamelCase					,				lowerCamelCase					,				lowerCamelCase ):
                        return True
            elif node in rec_stk:
                  return True

    # The node needs to be removed from recursion stack before function ends
      rec_stk.remove(lowerCamelCase )
      return False


if __name__ == "__main__":
       from doctest import testmod

       testmod()





