



import unittest

from diffusers.models.unet_ad_blocks import *  # noqa F403
from diffusers.utils import torch_device

from .test_unet_blocks_common import UNetBlockTesterMixin






class     __a			(  SCREAMING_SNAKE_CASE						,     unittest.TestCase					):
	SCREAMING_SNAKE_CASE  	=							DownBlockaD  # noqa F405
	SCREAMING_SNAKE_CASE  	=							"down"



	def 		UpperCamelCase				(    self				:     int)->				Union[str, Any]:
						__lowerCAmelCase						 =[-0.0_2_3_2, -0.9_8_6_9, 0.8_0_5_4, -0.0_6_3_7, -0.1_6_8_8, -1.4_2_6_4, 0.4_4_7_0, -1.3_3_9_4, 0.0_9_0_4]
						super().test_output(snake_case_)






class     __a			(  SCREAMING_SNAKE_CASE						,     unittest.TestCase					):
	SCREAMING_SNAKE_CASE  	=							ResnetDownsampleBlockaD  # noqa F405
	SCREAMING_SNAKE_CASE  	=							"down"



	def 		UpperCamelCase				(    self				:     Any)->				Union[str, Any]:
						__lowerCAmelCase						 =[0.0_7_1_0, 0.2_4_1_0, -0.7_3_2_0, -1.0_7_5_7, -1.1_3_4_3, 0.3_5_4_0, -0.0_1_3_3, -0.2_5_7_6, 0.0_9_4_8]
						super().test_output(snake_case_)






class     __a			(  SCREAMING_SNAKE_CASE						,     unittest.TestCase					):
	SCREAMING_SNAKE_CASE  	=							AttnDownBlockaD  # noqa F405
	SCREAMING_SNAKE_CASE  	=							"down"



	def 		UpperCamelCase				(    self				:     Union[str, Any])->				Optional[int]:
						__lowerCAmelCase						 =[0.0_6_3_6, 0.8_9_6_4, -0.6_2_3_4, -1.0_1_3_1, 0.0_8_4_4, 0.4_9_3_5, 0.3_4_3_7, 0.0_9_1_1, -0.2_9_5_7]
						super().test_output(snake_case_)






class     __a			(  SCREAMING_SNAKE_CASE						,     unittest.TestCase					):
	SCREAMING_SNAKE_CASE  	=							CrossAttnDownBlockaD  # noqa F405
	SCREAMING_SNAKE_CASE  	=							"down"



	def 		UpperCamelCase				(    self				:     Optional[Any])->				Tuple:
						__lowerCAmelCase ,						__lowerCAmelCase						 =super().prepare_init_args_and_inputs_for_common()
						__lowerCAmelCase						 =32
						return init_dict, inputs_dict



	def 		UpperCamelCase				(    self				:     List[str])->				Tuple:
						__lowerCAmelCase						 =[0.2_2_3_8, -0.7_3_9_6, -0.2_2_5_5, -0.3_8_2_9, 0.1_9_2_5, 1.1_6_6_5, 0.0_6_0_3, -0.7_2_9_5, 0.1_9_8_3]
						super().test_output(snake_case_)






class     __a			(  SCREAMING_SNAKE_CASE						,     unittest.TestCase					):
	SCREAMING_SNAKE_CASE  	=							SimpleCrossAttnDownBlockaD  # noqa F405
	SCREAMING_SNAKE_CASE  	=							"down"



	@property
	def 		UpperCamelCase				(    self				:     List[str])->				List[Any]:
						return super().get_dummy_input(include_encoder_hidden_states=snake_case_)



	def 		UpperCamelCase				(    self				:     Union[str, Any])->				Dict:
						__lowerCAmelCase ,						__lowerCAmelCase						 =super().prepare_init_args_and_inputs_for_common()
						__lowerCAmelCase						 =32
						return init_dict, inputs_dict



	@unittest.skipIf(torch_device == """mps"""					,						"""MPS result is not consistent""")
	def 		UpperCamelCase				(    self				:     Tuple)->				Dict:
						__lowerCAmelCase						 =[0.7_9_2_1, -0.0_9_9_2, -0.1_9_6_2, -0.7_6_9_5, -0.4_2_4_2, 0.7_8_0_4, 0.4_7_3_7, 0.2_7_6_5, 0.3_3_3_8]
						super().test_output(snake_case_)






class     __a			(  SCREAMING_SNAKE_CASE						,     unittest.TestCase					):
	SCREAMING_SNAKE_CASE  	=							SkipDownBlockaD  # noqa F405
	SCREAMING_SNAKE_CASE  	=							"down"



	@property
	def 		UpperCamelCase				(    self				:     Optional[int])->				List[Any]:
						return super().get_dummy_input(include_skip_sample=snake_case_)



	def 		UpperCamelCase				(    self				:     Optional[Any])->				Any:
						__lowerCAmelCase						 =[-0.0_8_4_5, -0.2_0_8_7, -0.2_4_6_5, 0.0_9_7_1, 0.1_9_0_0, -0.0_4_8_4, 0.2_6_6_4, 0.4_1_7_9, 0.5_0_6_9]
						super().test_output(snake_case_)






class     __a			(  SCREAMING_SNAKE_CASE						,     unittest.TestCase					):
	SCREAMING_SNAKE_CASE  	=							AttnSkipDownBlockaD  # noqa F405
	SCREAMING_SNAKE_CASE  	=							"down"



	@property
	def 		UpperCamelCase				(    self				:     Dict)->				Dict:
						return super().get_dummy_input(include_skip_sample=snake_case_)



	def 		UpperCamelCase				(    self				:     Dict)->				Dict:
						__lowerCAmelCase						 =[0.5_5_3_9, 0.1_6_0_9, 0.4_9_2_4, 0.0_5_3_7, -0.1_9_9_5, 0.4_0_5_0, 0.0_9_7_9, -0.2_7_2_1, -0.0_6_4_2]
						super().test_output(snake_case_)






class     __a			(  SCREAMING_SNAKE_CASE						,     unittest.TestCase					):
	SCREAMING_SNAKE_CASE  	=							DownEncoderBlockaD  # noqa F405
	SCREAMING_SNAKE_CASE  	=							"down"



	@property
	def 		UpperCamelCase				(    self				:     List[Any])->				str:
						return super().get_dummy_input(include_temb=snake_case_)



	def 		UpperCamelCase				(    self				:     List[str])->				List[Any]:
						__lowerCAmelCase						 ={
						    """in_channels""": 32,
						    """out_channels""": 32,
						}
						__lowerCAmelCase						 =self.dummy_input
						return init_dict, inputs_dict



	def 		UpperCamelCase				(    self				:     int)->				Any:
						__lowerCAmelCase						 =[1.1_1_0_2, 0.5_3_0_2, 0.4_8_7_2, -0.0_0_2_3, -0.8_0_4_2, 0.0_4_8_3, -0.3_4_8_9, -0.5_6_3_2, 0.7_6_2_6]
						super().test_output(snake_case_)






class     __a			(  SCREAMING_SNAKE_CASE						,     unittest.TestCase					):
	SCREAMING_SNAKE_CASE  	=							AttnDownEncoderBlockaD  # noqa F405
	SCREAMING_SNAKE_CASE  	=							"down"



	@property
	def 		UpperCamelCase				(    self				:     Optional[Any])->				Optional[Any]:
						return super().get_dummy_input(include_temb=snake_case_)



	def 		UpperCamelCase				(    self				:     int)->				Union[str, Any]:
						__lowerCAmelCase						 ={
						    """in_channels""": 32,
						    """out_channels""": 32,
						}
						__lowerCAmelCase						 =self.dummy_input
						return init_dict, inputs_dict



	def 		UpperCamelCase				(    self				:     Tuple)->				Optional[int]:
						__lowerCAmelCase						 =[0.8_9_6_6, -0.1_4_8_6, 0.8_5_6_8, 0.8_1_4_1, -0.9_0_4_6, -0.1_3_4_2, -0.0_9_7_2, -0.7_4_1_7, 0.1_5_3_8]
						super().test_output(snake_case_)






class     __a			(  SCREAMING_SNAKE_CASE						,     unittest.TestCase					):
	SCREAMING_SNAKE_CASE  	=							UNetMidBlockaD  # noqa F405
	SCREAMING_SNAKE_CASE  	=							"mid"



	def 		UpperCamelCase				(    self				:     Optional[int])->				Optional[int]:
						__lowerCAmelCase						 ={
						    """in_channels""": 32,
						    """temb_channels""": 1_28,
						}
						__lowerCAmelCase						 =self.dummy_input
						return init_dict, inputs_dict



	def 		UpperCamelCase				(    self				:     Optional[int])->				List[str]:
						__lowerCAmelCase						 =[-0.1_0_6_2, 1.7_2_4_8, 0.3_4_9_4, 1.4_5_6_9, -0.0_9_1_0, -1.2_4_2_1, -0.9_9_8_4, 0.6_7_3_6, 1.0_0_2_8]
						super().test_output(snake_case_)






class     __a			(  SCREAMING_SNAKE_CASE						,     unittest.TestCase					):
	SCREAMING_SNAKE_CASE  	=							UNetMidBlockaDCrossAttn  # noqa F405
	SCREAMING_SNAKE_CASE  	=							"mid"



	def 		UpperCamelCase				(    self				:     Optional[Any])->				Tuple:
						__lowerCAmelCase ,						__lowerCAmelCase						 =super().prepare_init_args_and_inputs_for_common()
						__lowerCAmelCase						 =32
						return init_dict, inputs_dict



	def 		UpperCamelCase				(    self				:     str)->				Optional[int]:
						__lowerCAmelCase						 =[0.0_1_8_7, 2.4_2_2_0, 0.4_4_8_4, 1.1_2_0_3, -0.6_1_2_1, -1.5_1_2_2, -0.8_2_7_0, 0.7_8_5_1, 1.8_3_3_5]
						super().test_output(snake_case_)






class     __a			(  SCREAMING_SNAKE_CASE						,     unittest.TestCase					):
	SCREAMING_SNAKE_CASE  	=							UNetMidBlockaDSimpleCrossAttn  # noqa F405
	SCREAMING_SNAKE_CASE  	=							"mid"



	@property
	def 		UpperCamelCase				(    self				:     int)->				List[str]:
						return super().get_dummy_input(include_encoder_hidden_states=snake_case_)



	def 		UpperCamelCase				(    self				:     Dict)->				Any:
						__lowerCAmelCase ,						__lowerCAmelCase						 =super().prepare_init_args_and_inputs_for_common()
						__lowerCAmelCase						 =32
						return init_dict, inputs_dict



	def 		UpperCamelCase				(    self				:     Tuple)->				Optional[Any]:
						__lowerCAmelCase						 =[0.7_1_4_3, 1.9_9_7_4, 0.5_4_4_8, 1.3_9_7_7, 0.1_2_8_2, -1.1_2_3_7, -1.4_2_3_8, 0.5_5_3_0, 0.8_8_8_0]
						super().test_output(snake_case_)






class     __a			(  SCREAMING_SNAKE_CASE						,     unittest.TestCase					):
	SCREAMING_SNAKE_CASE  	=							UpBlockaD  # noqa F405
	SCREAMING_SNAKE_CASE  	=							"up"



	@property
	def 		UpperCamelCase				(    self				:     Tuple)->				List[Any]:
						return super().get_dummy_input(include_res_hidden_states_tuple=snake_case_)



	def 		UpperCamelCase				(    self				:     str)->				Tuple:
						__lowerCAmelCase						 =[-0.2_0_4_1, -0.4_1_6_5, -0.3_0_2_2, 0.0_0_4_1, -0.6_6_2_8, -0.7_0_5_3, 0.1_9_2_8, -0.0_3_2_5, 0.0_5_2_3]
						super().test_output(snake_case_)






class     __a			(  SCREAMING_SNAKE_CASE						,     unittest.TestCase					):
	SCREAMING_SNAKE_CASE  	=							ResnetUpsampleBlockaD  # noqa F405
	SCREAMING_SNAKE_CASE  	=							"up"



	@property
	def 		UpperCamelCase				(    self				:     Optional[int])->				Optional[Any]:
						return super().get_dummy_input(include_res_hidden_states_tuple=snake_case_)



	def 		UpperCamelCase				(    self				:     str)->				int:
						__lowerCAmelCase						 =[0.2_2_8_7, 0.3_5_4_9, -0.1_3_4_6, 0.4_7_9_7, -0.1_7_1_5, -0.9_6_4_9, 0.7_3_0_5, -0.5_8_6_4, -0.6_2_4_4]
						super().test_output(snake_case_)






class     __a			(  SCREAMING_SNAKE_CASE						,     unittest.TestCase					):
	SCREAMING_SNAKE_CASE  	=							CrossAttnUpBlockaD  # noqa F405
	SCREAMING_SNAKE_CASE  	=							"up"



	@property
	def 		UpperCamelCase				(    self				:     List[Any])->				str:
						return super().get_dummy_input(include_res_hidden_states_tuple=snake_case_)



	def 		UpperCamelCase				(    self				:     List[str])->				Dict:
						__lowerCAmelCase ,						__lowerCAmelCase						 =super().prepare_init_args_and_inputs_for_common()
						__lowerCAmelCase						 =32
						return init_dict, inputs_dict



	def 		UpperCamelCase				(    self				:     Tuple)->				int:
						__lowerCAmelCase						 =[-0.1_4_0_3, -0.3_5_1_5, -0.0_4_2_0, -0.1_4_2_5, 0.3_1_6_7, 0.5_0_9_4, -0.2_1_8_1, 0.5_9_3_1, 0.5_5_8_2]
						super().test_output(snake_case_)






class     __a			(  SCREAMING_SNAKE_CASE						,     unittest.TestCase					):
	SCREAMING_SNAKE_CASE  	=							SimpleCrossAttnUpBlockaD  # noqa F405
	SCREAMING_SNAKE_CASE  	=							"up"



	@property
	def 		UpperCamelCase				(    self				:     Optional[int])->				Optional[Any]:
						return super().get_dummy_input(include_res_hidden_states_tuple=snake_case_					,						include_encoder_hidden_states=snake_case_)



	def 		UpperCamelCase				(    self				:     Optional[Any])->				Optional[int]:
						__lowerCAmelCase ,						__lowerCAmelCase						 =super().prepare_init_args_and_inputs_for_common()
						__lowerCAmelCase						 =32
						return init_dict, inputs_dict



	def 		UpperCamelCase				(    self				:     List[str])->				str:
						__lowerCAmelCase						 =[0.2_6_4_5, 0.1_4_8_0, 0.0_9_0_9, 0.8_0_4_4, -0.9_7_5_8, -0.9_0_8_3, 0.0_9_9_4, -1.1_4_5_3, -0.7_4_0_2]
						super().test_output(snake_case_)






class     __a			(  SCREAMING_SNAKE_CASE						,     unittest.TestCase					):
	SCREAMING_SNAKE_CASE  	=							AttnUpBlockaD  # noqa F405
	SCREAMING_SNAKE_CASE  	=							"up"



	@property
	def 		UpperCamelCase				(    self				:     str)->				Union[str, Any]:
						return super().get_dummy_input(include_res_hidden_states_tuple=snake_case_)



	@unittest.skipIf(torch_device == """mps"""					,						"""MPS result is not consistent""")
	def 		UpperCamelCase				(    self				:     Any)->				Any:
						__lowerCAmelCase						 =[0.0_9_7_9, 0.1_3_2_6, 0.0_0_2_1, 0.0_6_5_9, 0.2_2_4_9, 0.0_0_5_9, 0.1_1_3_2, 0.5_9_5_2, 0.1_0_3_3]
						super().test_output(snake_case_)






class     __a			(  SCREAMING_SNAKE_CASE						,     unittest.TestCase					):
	SCREAMING_SNAKE_CASE  	=							SkipUpBlockaD  # noqa F405
	SCREAMING_SNAKE_CASE  	=							"up"



	@property
	def 		UpperCamelCase				(    self				:     Optional[int])->				Tuple:
						return super().get_dummy_input(include_res_hidden_states_tuple=snake_case_)



	def 		UpperCamelCase				(    self				:     List[str])->				Dict:
						__lowerCAmelCase						 =[-0.0_8_9_3, -0.1_2_3_4, -0.1_5_0_6, -0.0_3_3_2, 0.0_1_2_3, -0.0_2_1_1, 0.0_5_6_6, 0.0_1_4_3, 0.0_3_6_2]
						super().test_output(snake_case_)






class     __a			(  SCREAMING_SNAKE_CASE						,     unittest.TestCase					):
	SCREAMING_SNAKE_CASE  	=							AttnSkipUpBlockaD  # noqa F405
	SCREAMING_SNAKE_CASE  	=							"up"



	@property
	def 		UpperCamelCase				(    self				:     Optional[Any])->				Any:
						return super().get_dummy_input(include_res_hidden_states_tuple=snake_case_)



	def 		UpperCamelCase				(    self				:     Any)->				Union[str, Any]:
						__lowerCAmelCase						 =[0.0_3_6_1, 0.0_6_1_7, 0.2_7_8_7, -0.0_3_5_0, 0.0_3_4_2, 0.3_4_2_1, -0.0_8_4_3, 0.0_9_1_3, 0.3_0_1_5]
						super().test_output(snake_case_)






class     __a			(  SCREAMING_SNAKE_CASE						,     unittest.TestCase					):
	SCREAMING_SNAKE_CASE  	=							UpDecoderBlockaD  # noqa F405
	SCREAMING_SNAKE_CASE  	=							"up"



	@property
	def 		UpperCamelCase				(    self				:     List[Any])->				Optional[int]:
						return super().get_dummy_input(include_temb=snake_case_)



	def 		UpperCamelCase				(    self				:     Tuple)->				List[Any]:
						__lowerCAmelCase						 ={"""in_channels""": 32, """out_channels""": 32}

						__lowerCAmelCase						 =self.dummy_input
						return init_dict, inputs_dict



	def 		UpperCamelCase				(    self				:     Dict)->				Tuple:
						__lowerCAmelCase						 =[0.4_4_0_4, 0.1_9_9_8, -0.9_8_8_6, -0.3_3_2_0, -0.3_1_2_8, -0.7_0_3_4, -0.6_9_5_5, -0.2_3_3_8, -0.3_1_3_7]
						super().test_output(snake_case_)






class     __a			(  SCREAMING_SNAKE_CASE						,     unittest.TestCase					):
	SCREAMING_SNAKE_CASE  	=							AttnUpDecoderBlockaD  # noqa F405
	SCREAMING_SNAKE_CASE  	=							"up"



	@property
	def 		UpperCamelCase				(    self				:     Dict)->				Dict:
						return super().get_dummy_input(include_temb=snake_case_)



	def 		UpperCamelCase				(    self				:     Optional[int])->				Any:
						__lowerCAmelCase						 ={"""in_channels""": 32, """out_channels""": 32}

						__lowerCAmelCase						 =self.dummy_input
						return init_dict, inputs_dict



	def 		UpperCamelCase				(    self				:     Tuple)->				Optional[Any]:
						__lowerCAmelCase						 =[0.6_7_3_8, 0.4_4_9_1, 0.1_0_5_5, 1.0_7_1_0, 0.7_3_1_6, 0.3_3_3_9, 0.3_3_5_2, 0.1_0_2_3, 0.3_5_6_8]
						super().test_output(snake_case_)









from __future__ import annotations

import math
from collections import Counter
from string import ascii_lowercase






def        __lowerCAmelCase		(	__lowerCamelCase						:     str						)	->    None:
					__lowerCAmelCase ,						__lowerCAmelCase						 =analyze_text(__lowerCamelCase						)
					__lowerCAmelCase						 =list(""" """ + ascii_lowercase						)
					# what is our total sum of probabilities.
					__lowerCAmelCase						 =sum(single_char_strings.values()						)

					# one length string
					__lowerCAmelCase						 =0
					# for each alpha we go in our dict and if it is in it we calculate entropy
					for ch in my_alphas:
										if ch in single_char_strings:
															__lowerCAmelCase						 =single_char_strings[ch]
															__lowerCAmelCase						 =my_str / all_sum
															my_fir_sum += prob * math.loga(__lowerCamelCase						)  # entropy formula.

    # print entropy
					print(f"""{round(-1 * my_fir_sum						):.1f}"""						)

					# two len string
					__lowerCAmelCase						 =sum(two_char_strings.values()						)
					__lowerCAmelCase						 =0
					# for each alpha (two in size) calculate entropy.
					for cha in my_alphas:
										for cha in my_alphas:
															__lowerCAmelCase						 =cha + cha
															if sequence in two_char_strings:
																				__lowerCAmelCase						 =two_char_strings[sequence]
																				__lowerCAmelCase						 =int(__lowerCamelCase						) / all_sum
																				my_sec_sum += prob * math.loga(__lowerCamelCase						)

    # print second entropy
					print(f"""{round(-1 * my_sec_sum						):.1f}"""						)

					# print the difference between them
					print(f"""{round((-1 * my_sec_sum) - (-1 * my_fir_sum)						):.1f}"""						)






def        __lowerCAmelCase		(	__lowerCamelCase						:     str						)	->    tuple[dict, dict]:
					__lowerCAmelCase						 =Counter()  # type: ignore
					__lowerCAmelCase						 =Counter()  # type: ignore
					single_char_strings[text[-1]] += 1

					# first case when we have space at start.
					two_char_strings[" " + text[0]] += 1
					for i in range(0					, len(__lowerCamelCase						) - 1						):
										single_char_strings[text[i]] += 1
										two_char_strings[text[i : i + 2]] += 1
					return single_char_strings, two_char_strings






def        __lowerCAmelCase		(	)	->    str:
					import doctest

					doctest.testmod()
					# text = (
					#     "Had repulsive dashwoods suspicion sincerity but advantage now him. Remark "
					#     "easily garret nor nay. Civil those mrs enjoy shy fat merry. You greatest "
					#     "jointure saw horrible. He private he on be imagine suppose. Fertile "
					#     "beloved evident through no service elderly is. Blind there if every no so "
					#     "at. Own neglected you preferred way sincerity delivered his attempted. To "
					#     "of message cottage windows do besides against uncivil.  Delightful "
					#     "unreserved impossible few estimating men favourable see entreaties. She "
					#     "propriety immediate was improving. He or entrance humoured likewise "
					#     "moderate. Much nor game son say feel. Fat make met can must form into "
					#     "gate. Me we offending prevailed discovery. "
					# )

					# calculate_prob(text)


if __name__ == "__main__":
				main()




