

"""simple docstring"""




import contextlib
import importlib
import io
import unittest

import transformers

# Try to import everything from transformers to ensure every object can be loaded.
from transformers import *  # noqa F406
from transformers.testing_utils import DUMMY_UNKNOWN_IDENTIFIER, require_flax, require_tf, require_torch
from transformers.utils import ContextManagers, find_labels, is_flax_available, is_tf_available, is_torch_available


if is_torch_available():
     from transformers import BertForPreTraining, BertForQuestionAnswering, BertForSequenceClassification

if is_tf_available():
     from transformers import TFBertForPreTraining, TFBertForQuestionAnswering, TFBertForSequenceClassification

if is_flax_available():
     from transformers import FlaxBertForPreTraining, FlaxBertForQuestionAnswering, FlaxBertForSequenceClassification


SCREAMING_SNAKE_CASE_     :			Optional[int]	  =			DUMMY_UNKNOWN_IDENTIFIER
# An actual model hosted on huggingface.co

SCREAMING_SNAKE_CASE_     :			str	  =			'''main'''
# Default branch name
SCREAMING_SNAKE_CASE_     :			str	  =			'''f2c752cfc5c0ab6f4bdec59acea69eefbee381c2'''
# One particular commit (not the top of `main`)
SCREAMING_SNAKE_CASE_     :			Optional[int]	  =			'''aaaaaaa'''
# This commit does not exist, so we should 404.

SCREAMING_SNAKE_CASE_     :			Tuple	  =			'''d9e9f15bc825e4b2c9249e9578f884bbcb5e3684'''
# Sha-1 of config.json on the top of `main`, for checking purposes
SCREAMING_SNAKE_CASE_     :			Dict	  =			'''4b243c475af8d0a7754e87d7d096c92e5199ec2fe168a2ee7998e3b8e9bcb1d3'''



@contextlib.contextmanager
def 	UpperCAmelCase__   (				)      ->      int:




   """simple docstring"""
   print("Welcome!"   )
   yield
   print("Bye!"   )



@contextlib.contextmanager
def 	UpperCAmelCase__   (				)      ->      str:




   """simple docstring"""
   print("Bonjour!"   )
   yield
   print("Au revoir!"   )


class 		_A       (			unittest.TestCase					):





      def 					_lowerCamelCase  (  self		)   ->					int:
         # If the spec is missing, importlib would not be able to import the module dynamically.
         assert transformers.__spec__ is not None
         assert importlib.util.find_spec("transformers"		) is not None






class 		_A       (			unittest.TestCase					):





      @unittest.mock.patch("sys.stdout"    ,						new_callable=io.StringIO		)
      def 					_lowerCamelCase  (  self    ,						SCREAMING_SNAKE_CASE__		)   ->					List[str]:
         with ContextManagers([]		):
            print("Transformers are awesome!"		)
         # The print statement adds a new line at the end of the output
         self.assertEqual(mock_stdout.getvalue()    ,						"Transformers are awesome!\n"		)





      @unittest.mock.patch("sys.stdout"    ,						new_callable=io.StringIO		)
      def 					_lowerCamelCase  (  self    ,						SCREAMING_SNAKE_CASE__		)   ->					Union[str, Any]:
         with ContextManagers([context_en()]		):
            print("Transformers are awesome!"		)
         # The output should be wrapped with an English welcome and goodbye
         self.assertEqual(mock_stdout.getvalue()    ,						"Welcome!\nTransformers are awesome!\nBye!\n"		)





      @unittest.mock.patch("sys.stdout"    ,						new_callable=io.StringIO		)
      def 					_lowerCamelCase  (  self    ,						SCREAMING_SNAKE_CASE__		)   ->					Tuple:
         with ContextManagers([context_fr(), context_en()]		):
            print("Transformers are awesome!"		)
         # The output should be wrapped with an English and French welcome and goodbye
         self.assertEqual(mock_stdout.getvalue()    ,						"Bonjour!\nWelcome!\nTransformers are awesome!\nBye!\nAu revoir!\n"		)





      @require_torch
      def 					_lowerCamelCase  (  self		)   ->					Any:
         self.assertEqual(find_labels(SCREAMING_SNAKE_CASE__		)    ,						["labels"]		)
         self.assertEqual(find_labels(SCREAMING_SNAKE_CASE__		)    ,						["labels", "next_sentence_label"]		)
         self.assertEqual(find_labels(SCREAMING_SNAKE_CASE__		)    ,						["start_positions", "end_positions"]		)


         class 		_A       (			__a					):
               pass






         self.assertEqual(find_labels(SCREAMING_SNAKE_CASE__		)    ,						["labels"]		)





      @require_tf
      def 					_lowerCamelCase  (  self		)   ->					Tuple:
         self.assertEqual(find_labels(SCREAMING_SNAKE_CASE__		)    ,						["labels"]		)
         self.assertEqual(find_labels(SCREAMING_SNAKE_CASE__		)    ,						["labels", "next_sentence_label"]		)
         self.assertEqual(find_labels(SCREAMING_SNAKE_CASE__		)    ,						["start_positions", "end_positions"]		)


         class 		_A       (			__a					):
               pass






         self.assertEqual(find_labels(SCREAMING_SNAKE_CASE__		)    ,						["labels"]		)





      @require_flax
      def 					_lowerCamelCase  (  self		)   ->					Union[str, Any]:
         # Flax models don't have labels
         self.assertEqual(find_labels(SCREAMING_SNAKE_CASE__		)    ,						[]		)
         self.assertEqual(find_labels(SCREAMING_SNAKE_CASE__		)    ,						[]		)
         self.assertEqual(find_labels(SCREAMING_SNAKE_CASE__		)    ,						[]		)


         class 		_A       (			__a					):
               pass






         self.assertEqual(find_labels(SCREAMING_SNAKE_CASE__		)    ,						[]		)







"""simple docstring"""




from typing import TYPE_CHECKING

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


SCREAMING_SNAKE_CASE_     :			List[Any]	  =			{
    '''configuration_rag''': ['''RagConfig'''],
    '''retrieval_rag''': ['''RagRetriever'''],
    '''tokenization_rag''': ['''RagTokenizer'''],
}

try:
     if not is_torch_available():
          raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
     pass
else:
     SCREAMING_SNAKE_CASE_     :			Union[str, Any]	  =			[
         '''RagModel''',
         '''RagPreTrainedModel''',
         '''RagSequenceForGeneration''',
         '''RagTokenForGeneration''',
     ]

try:
     if not is_tf_available():
          raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
     pass
else:
     SCREAMING_SNAKE_CASE_     :			str	  =			[
         '''TFRagModel''',
         '''TFRagPreTrainedModel''',
         '''TFRagSequenceForGeneration''',
         '''TFRagTokenForGeneration''',
     ]


if TYPE_CHECKING:
     from .configuration_rag import RagConfig
     from .retrieval_rag import RagRetriever
     from .tokenization_rag import RagTokenizer

     try:
          if not is_torch_available():
               raise OptionalDependencyNotAvailable()
     except OptionalDependencyNotAvailable:
          pass
     else:
          from .modeling_rag import RagModel, RagPreTrainedModel, RagSequenceForGeneration, RagTokenForGeneration

     try:
          if not is_tf_available():
               raise OptionalDependencyNotAvailable()
     except OptionalDependencyNotAvailable:
          pass
     else:
          from .modeling_tf_rag import (
              TFRagModel,
              TFRagPreTrainedModel,
              TFRagSequenceForGeneration,
              TFRagTokenForGeneration,
          )

else:
     import sys

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




