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


lowercase_	       =			DUMMY_UNKNOWN_IDENTIFIER
# An actual model hosted on huggingface.co

lowercase_	       =			'''main'''
# Default branch name
lowercase_	       =			'''f2c752cfc5c0ab6f4bdec59acea69eefbee381c2'''
# One particular commit (not the top of `main`)
lowercase_	       =			'''aaaaaaa'''
# This commit does not exist, so we should 404.

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






@contextlib.contextmanager
def 					__lowerCAmelCase		(  )  ->						str:
					print("""Welcome!"""	)
					yield
					print("""Bye!"""	)






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






class 						__a (     unittest.TestCase				):



	def 		UpperCamelCase							(						self							:    List[str])->							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 		UpperCamelCase							(						self							:    Union[str, Any]				,	snake_case_							:    Optional[int])->							Optional[Any]:
						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 		UpperCamelCase							(						self							:    int				,	snake_case_							:    Optional[Any])->							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 		UpperCamelCase							(						self							:    Union[str, Any]				,	snake_case_							:    List[Any])->							Optional[int]:
						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 		UpperCamelCase							(						self							:    Dict)->							Dict:
						self.assertEqual(find_labels(snake_case_)				,	["""labels"""])
						self.assertEqual(find_labels(snake_case_)				,	["""labels""", """next_sentence_label"""])
						self.assertEqual(find_labels(snake_case_)				,	["""start_positions""", """end_positions"""])






						class 						__a (     SCREAMING_SNAKE_CASE				):
							pass


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



	@require_tf
	def 		UpperCamelCase							(						self							:    Optional[int])->							Optional[Any]:
						self.assertEqual(find_labels(snake_case_)				,	["""labels"""])
						self.assertEqual(find_labels(snake_case_)				,	["""labels""", """next_sentence_label"""])
						self.assertEqual(find_labels(snake_case_)				,	["""start_positions""", """end_positions"""])






						class 						__a (     SCREAMING_SNAKE_CASE				):
							pass


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



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






						class 						__a (     SCREAMING_SNAKE_CASE				):
							pass


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









import PIL.Image
import PIL.ImageOps
from packaging import version
from PIL import Image


if version.parse(version.parse(PIL.__version__).base_version) >= version.parse('''9.1.0'''):
				lowercase_	       =			{
				    '''linear''': PIL.Image.Resampling.BILINEAR,
				    '''bilinear''': PIL.Image.Resampling.BILINEAR,
				    '''bicubic''': PIL.Image.Resampling.BICUBIC,
				    '''lanczos''': PIL.Image.Resampling.LANCZOS,
				    '''nearest''': PIL.Image.Resampling.NEAREST,
				}
else:
				lowercase_	       =			{
				    '''linear''': PIL.Image.LINEAR,
				    '''bilinear''': PIL.Image.BILINEAR,
				    '''bicubic''': PIL.Image.BICUBIC,
				    '''lanczos''': PIL.Image.LANCZOS,
				    '''nearest''': PIL.Image.NEAREST,
				}






def 					__lowerCAmelCase		(  __lowerCamelCase	:    List[str]	)  ->						int:
					__lowerCAmelCase	   =(images / 2 + 0.5).clamp(0				,   1	)
					__lowerCAmelCase	   =images.cpu().permute(0				,   2				,   3				,   1	).float().numpy()
					__lowerCAmelCase	   =numpy_to_pil(__lowerCamelCase	)
					return images






def 					__lowerCAmelCase		(  __lowerCamelCase	:    str	)  ->						str:
					if images.ndim == 3:
										__lowerCAmelCase	   =images[None, ...]
					__lowerCAmelCase	   =(images * 255).round().astype("""uint8"""	)
					if images.shape[-1] == 1:
										# special case for grayscale (single channel) images
										__lowerCAmelCase	   =[Image.fromarray(image.squeeze()				,   mode="""L"""	) for image in images]
					else:
										__lowerCAmelCase	   =[Image.fromarray(__lowerCamelCase	) for image in images]

					return pil_images




