






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


A_		:		Tuple		     =			DUMMY_UNKNOWN_IDENTIFIER
# An actual model hosted on huggingface.co

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

A_		:		List[str]		     =			'd9e9f15bc825e4b2c9249e9578f884bbcb5e3684'
# Sha-1 of config.json on the top of `main`, for checking purposes
A_		:		str		     =			'4b243c475af8d0a7754e87d7d096c92e5199ec2fe168a2ee7998e3b8e9bcb1d3'

@contextlib.contextmanager
def   snake_case ()	->    Any:
  print('Welcome!'  )
  yield
  print('Bye!'  )

@contextlib.contextmanager
def   snake_case ()	->    List[Any]:
  print('Bonjour!'  )
  yield
  print('Au revoir!'  )




class     _lowerCAmelCase(	unittest.TestCase ):





       """simple docstring"""







       def       _a   ( self							):
         # 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     _lowerCAmelCase(	unittest.TestCase ):





       """simple docstring"""







       @unittest.mock.patch('sys.stdout'  ,      new_callable=io.StringIO							)
       def       _a   ( self  ,      _lowerCamelCase							):
         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       _a   ( self  ,      _lowerCamelCase							):
         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       _a   ( self  ,      _lowerCamelCase							):
         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       _a   ( self							):
         self.assertEqual(find_labels(_lowerCamelCase							)  ,      ['labels']							)
         self.assertEqual(find_labels(_lowerCamelCase							)  ,      ['labels', 'next_sentence_label']							)
         self.assertEqual(find_labels(_lowerCamelCase							)  ,      ['start_positions', 'end_positions']							)




         class     _lowerCAmelCase(	UpperCAmelCase_ ):





                """simple docstring"""







                pass







         self.assertEqual(find_labels(_lowerCamelCase							)  ,      ['labels']							)





       @require_tf
       def       _a   ( self							):
         self.assertEqual(find_labels(_lowerCamelCase							)  ,      ['labels']							)
         self.assertEqual(find_labels(_lowerCamelCase							)  ,      ['labels', 'next_sentence_label']							)
         self.assertEqual(find_labels(_lowerCamelCase							)  ,      ['start_positions', 'end_positions']							)




         class     _lowerCAmelCase(	UpperCAmelCase_ ):





                """simple docstring"""







                pass







         self.assertEqual(find_labels(_lowerCamelCase							)  ,      ['labels']							)





       @require_flax
       def       _a   ( self							):
         # Flax models don't have labels
         self.assertEqual(find_labels(_lowerCamelCase							)  ,      []							)
         self.assertEqual(find_labels(_lowerCamelCase							)  ,      []							)
         self.assertEqual(find_labels(_lowerCamelCase							)  ,      []							)




         class     _lowerCAmelCase(	UpperCAmelCase_ ):





                """simple docstring"""







                pass







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







import os


# All paths are set with the intent you should run this script from the root of the repo with the command
# python utils/check_doctest_list.py
A_		:		List[str]		     =			'.'


if __name__ == "__main__":
   A_		:		Dict		     =			os.path.join(REPO_PATH, 'utils/documentation_tests.txt')
   A_		:		Dict		     =			[]
   A_		:		Optional[Any]		     =			[]
   with open(doctest_file_path) as fp:
      for line in fp:
         A_		:		Tuple		     =			line.strip()
         A_		:		Any		     =			os.path.join(REPO_PATH, line)
         if not (os.path.isfile(path) or os.path.isdir(path)):
            non_existent_paths.append(line)
         all_paths.append(path)
   if len(non_existent_paths) > 0:
      A_		:		str		     =			'\n'.join(non_existent_paths)
      raise ValueError(F'''`utils/documentation_tests.txt` contains non-existent paths:\n{non_existent_paths}''')
   if all_paths != sorted(all_paths):
      raise ValueError('Files in `utils/documentation_tests.txt` are not in alphabetical order.')