






from __future__ import annotations

import unittest

import numpy as np

from transformers import BlipTextConfig
from transformers.testing_utils import require_tf, slow
from transformers.utils import is_tf_available

from ...test_configuration_common import ConfigTester
from ...test_modeling_tf_common import TFModelTesterMixin, ids_tensor, random_attention_mask


if is_tf_available():
							import tensorflow as tf

							from transformers import TFBlipTextModel
							from transformers.models.blip.modeling_tf_blip import TF_BLIP_PRETRAINED_MODEL_ARCHIVE_LIST
class  _UpperCAmelCase   :

				"""simple docstring"""




				def __init__(	self		:       Dict,    lowerCamelCase		:       Dict,    lowerCamelCase		:       int=12,    lowerCamelCase		:       Optional[int]=7,    lowerCamelCase		:       Optional[int]=True,    lowerCamelCase		:       Any=True,    lowerCamelCase		:       str=True,    lowerCamelCase		:       Optional[Any]=99,    lowerCamelCase		:       Optional[Any]=32,    lowerCamelCase		:       Any=32,    lowerCamelCase		:       Any=2,    lowerCamelCase		:       Optional[int]=4,    lowerCamelCase		:       Dict=37,    lowerCamelCase		:       Any=0.1,    lowerCamelCase		:       List[str]=0.1,    lowerCamelCase		:       List[str]=512,    lowerCamelCase		:       Optional[Any]=0.02,    lowerCamelCase		:       Union[str, Any]=0,    lowerCamelCase		:       str=None,    ):

								'''simple docstring'''
								lowercase__  					=     parent
								lowercase__  					=     batch_size
								lowercase__  					=     seq_length
								lowercase__  					=     is_training
								lowercase__  					=     use_input_mask
								lowercase__  					=     use_labels
								lowercase__  					=     vocab_size
								lowercase__  					=     hidden_size
								lowercase__  					=     projection_dim
								lowercase__  					=     num_hidden_layers
								lowercase__  					=     num_attention_heads
								lowercase__  					=     intermediate_size
								lowercase__  					=     dropout
								lowercase__  					=     attention_dropout
								lowercase__  					=     max_position_embeddings
								lowercase__  					=     initializer_range
								lowercase__  					=     scope
								lowercase__  					=     bos_token_id




				def 							lowercase__  (	self		:       Tuple    ):

								'''simple docstring'''
								lowercase__  					=     ids_tensor([self.batch_size, self.seq_length],    self.vocab_size    )

								lowercase__  					=     None
								if self.use_input_mask:
												lowercase__  					=     random_attention_mask([self.batch_size, self.seq_length]    )

								if input_mask is not None:
												lowercase__  					=     input_mask.numpy()
												lowercase__					,		lowercase__  					=     input_mask.shape
												lowercase__  					=     np.random.randint(1,    seq_length - 1,    size=(batch_size,)    )
												for batch_idx, start_index in enumerate(lowerCamelCase    ):
																lowercase__  					=     1
																lowercase__  					=     0

								lowercase__  					=     self.get_config()

								return config, input_ids, tf.convert_to_tensor(lowerCamelCase    )




				def 							lowercase__  (	self		:       Tuple    ):

								'''simple docstring'''
								return BlipTextConfig(
								    vocab_size=self.vocab_size,    hidden_size=self.hidden_size,    projection_dim=self.projection_dim,    num_hidden_layers=self.num_hidden_layers,    num_attention_heads=self.num_attention_heads,    intermediate_size=self.intermediate_size,    dropout=self.dropout,    attention_dropout=self.attention_dropout,    max_position_embeddings=self.max_position_embeddings,    initializer_range=self.initializer_range,    bos_token_id=self.bos_token_id,    )




				def 							lowercase__  (	self		:       Dict,    lowerCamelCase		:       Optional[int],    lowerCamelCase		:       str,    lowerCamelCase		:       Any    ):

								'''simple docstring'''
								lowercase__  					=     TFBlipTextModel(config=lowerCamelCase    )
								lowercase__  					=     model(lowerCamelCase,    attention_mask=lowerCamelCase,    training=lowerCamelCase    )
								lowercase__  					=     model(lowerCamelCase,    training=lowerCamelCase    )
								self.parent.assertEqual(result.last_hidden_state.shape,    (self.batch_size, self.seq_length, self.hidden_size)    )
								self.parent.assertEqual(result.pooler_output.shape,    (self.batch_size, self.hidden_size)    )




				def 							lowercase__  (	self		:       List[Any]    ):

								'''simple docstring'''
								lowercase__  					=     self.prepare_config_and_inputs()
								lowercase__					,		lowercase__					,		lowercase__  					=     config_and_inputs
								lowercase__  					=     {'''input_ids''': input_ids, '''attention_mask''': input_mask}
								return config, inputs_dict



@require_tf
class  _UpperCAmelCase   (			A__						,unittest.TestCase      ):

				"""simple docstring"""




				lowercase__											=			(TFBlipTextModel,) if is_tf_available() else ()
				lowercase__											=			False
				lowercase__											=			False
				lowercase__											=			False




				def 							lowercase__  (	self		:       Any    ):

								'''simple docstring'''
								lowercase__  					=     BlipTextModelTester(self    )
								lowercase__  					=     ConfigTester(self,    config_class=lowerCamelCase,    hidden_size=37    )




				def 							lowercase__  (	self		:       List[str]    ):

								'''simple docstring'''
								self.config_tester.run_common_tests()




				def 							lowercase__  (	self		:       Optional[int]    ):

								'''simple docstring'''
								lowercase__  					=     self.model_tester.prepare_config_and_inputs()
								self.model_tester.create_and_check_model(*lowerCamelCase    )




				def 							lowercase__  (	self		:       List[str]    ):

								'''simple docstring'''
								pass




				def 							lowercase__  (	self		:       Optional[Any]    ):

								'''simple docstring'''
								pass




				@unittest.skip(reason='''Blip does not use inputs_embeds'''    )
				def 							lowercase__  (	self		:       List[str]    ):

								'''simple docstring'''
								pass




				@unittest.skip(reason='''BlipTextModel has no base class and is not available in MODEL_MAPPING'''    )
				def 							lowercase__  (	self		:       Tuple    ):

								'''simple docstring'''
								pass




				@unittest.skip(reason='''BlipTextModel has no base class and is not available in MODEL_MAPPING'''    )
				def 							lowercase__  (	self		:       Dict    ):

								'''simple docstring'''
								pass




				@slow
				def 							lowercase__  (	self		:       Tuple    ):

								'''simple docstring'''
								for model_name in TF_BLIP_PRETRAINED_MODEL_ARCHIVE_LIST[:1]:
												lowercase__  					=     TFBlipTextModel.from_pretrained(lowerCamelCase    )
												self.assertIsNotNone(lowerCamelCase    )




				def 							lowercase__  (	self		:       Tuple,    lowerCamelCase		:       Any=True    ):

								'''simple docstring'''
								super().test_pt_tf_model_equivalence(allow_missing_keys=lowerCamelCase    )












import sys
import turtle






def     a     (		lowerCamelCase_						,  lowerCamelCase_							):






				'''simple docstring'''
				return (pa[0] + pa[0]) / 2, (pa[1] + pa[1]) / 2






def     a     (		lowerCamelCase_						,  lowerCamelCase_						,  lowerCamelCase_						,  lowerCamelCase_						,  ):






				'''simple docstring'''
				my_pen.up()
				my_pen.goto(vertexa[0]						,  vertexa[1]							)
				my_pen.down()
				my_pen.goto(vertexa[0]						,  vertexa[1]							)
				my_pen.goto(vertexa[0]						,  vertexa[1]							)
				my_pen.goto(vertexa[0]						,  vertexa[1]							)

				if depth == 0:
								return

				triangle(lowerCamelCase_						,  get_mid(lowerCamelCase_						,  lowerCamelCase_							)						,  get_mid(lowerCamelCase_						,  lowerCamelCase_							)						,  depth - 1							)
				triangle(lowerCamelCase_						,  get_mid(lowerCamelCase_						,  lowerCamelCase_							)						,  get_mid(lowerCamelCase_						,  lowerCamelCase_							)						,  depth - 1							)
				triangle(lowerCamelCase_						,  get_mid(lowerCamelCase_						,  lowerCamelCase_							)						,  get_mid(lowerCamelCase_						,  lowerCamelCase_							)						,  depth - 1							)


if __name__ == "__main__":
							if len(sys.argv) != 2:
														raise ValueError(
														    'Correct format for using this script: '
														    'python fractals.py <int:depth_for_fractal>'
														)
							A__      :     Dict       =					turtle.Turtle()
							my_pen.ht()
							my_pen.speed(5)
							my_pen.pencolor('red')

							A__      :     Union[str, Any]       =					[(-1_75, -1_25), (0, 1_75), (1_75, -1_25)]  # vertices of triangle
							triangle(vertices[0], vertices[1], vertices[2], int(sys.argv[1]))




