






from __future__ import annotations




class 		UpperCAmelCase_    :


						'''simple docstring'''




						def __init__(						self		,					_SCREAMING_SNAKE_CASE					)			->					Union[str, Any]:
								snake_case_					:				Dict    			=							data
								snake_case_					:				Union[str, Any]    			=							None
								snake_case_					:				Union[str, Any]    			=							None




def   lowerCAmelCase__						(     _a							:      List[Any]     ):  # In Order traversal of the tree




		if tree:
				display(tree.left     )
				print(tree.data     )
				display(tree.right     )

def   lowerCAmelCase__						(     _a							:      Dict     ):
		return 1 + max(depth_of_tree(tree.left     )	,   depth_of_tree(tree.right     )     ) if tree else 0

def   lowerCAmelCase__						(     _a							:      Dict     ):




		if not tree:
				return True
		if tree.left and tree.right:
				return is_full_binary_tree(tree.left     ) and is_full_binary_tree(tree.right     )
		else:
				return not tree.left and not tree.right

def   lowerCAmelCase__						(     ):  # Main function for testing.
		snake_case_					:				List[str]    			=							Node(1     )
		snake_case_					:				Optional[Any]    			=							Node(2     )
		snake_case_					:				Optional[Any]    			=							Node(3     )
		snake_case_					:				Tuple    			=							Node(4     )
		snake_case_					:				List[str]    			=							Node(5     )
		snake_case_					:				Any    			=							Node(6     )
		snake_case_					:				Dict    			=							Node(7     )
		snake_case_					:				Union[str, Any]    			=							Node(8     )
		snake_case_					:				str    			=							Node(9     )

		print(is_full_binary_tree(_UpperCamelCase     )     )
		print(depth_of_tree(_UpperCamelCase     )     )
		print("Tree is: "     )
		display(_UpperCamelCase     )


if __name__ == "__main__":
							main()




"""simple docstring"""


import gc
import unittest

import numpy as np
import torch

from diffusers import StableDiffusionKDiffusionPipeline
from diffusers.utils import slow, torch_device
from diffusers.utils.testing_utils import enable_full_determinism, require_torch_gpu


enable_full_determinism()
@slow
@require_torch_gpu
class     _UpperCamelCase    (  unittest.TestCase						):
							'''simple docstring'''







							def      snake_case							(	self      ):
										# clean up the VRAM after each test
										super().tearDown()
										gc.collect()
										torch.cuda.empty_cache()

							def      snake_case							(	self      ):
										__lowerCAmelCase							       =     StableDiffusionKDiffusionPipeline.from_pretrained("CompVis/stable-diffusion-v1-4"      )
										__lowerCAmelCase							       =     sd_pipe.to(__a      )
										sd_pipe.set_progress_bar_config(disable=__a      )

										sd_pipe.set_scheduler("sample_euler"      )

										__lowerCAmelCase							       =     "A painting of a squirrel eating a burger"
										__lowerCAmelCase							       =     torch.manual_seed(0      )
										__lowerCAmelCase							       =     sd_pipe([prompt]       ,  generator=__a       ,  guidance_scale=9.0       ,  num_inference_steps=20       ,  output_type="np"      )

										__lowerCAmelCase							       =     output.images

										__lowerCAmelCase							       =     image[0, -3:, -3:, -1]

										assert image.shape == (1, 5_12, 5_12, 3)
										__lowerCAmelCase							       =     np.array([0.0_4_4_7, 0.0_4_9_2, 0.0_4_6_8, 0.0_4_0_8, 0.0_3_8_3, 0.0_4_0_8, 0.0_3_5_4, 0.0_3_8_0, 0.0_3_3_9]      )

										assert np.abs(image_slice.flatten() - expected_slice      ).max() < 1e-2

							def      snake_case							(	self      ):
										__lowerCAmelCase							       =     StableDiffusionKDiffusionPipeline.from_pretrained("stabilityai/stable-diffusion-2-1-base"      )
										__lowerCAmelCase							       =     sd_pipe.to(__a      )
										sd_pipe.set_progress_bar_config(disable=__a      )

										sd_pipe.set_scheduler("sample_euler"      )

										__lowerCAmelCase							       =     "A painting of a squirrel eating a burger"
										__lowerCAmelCase							       =     torch.manual_seed(0      )
										__lowerCAmelCase							       =     sd_pipe([prompt]       ,  generator=__a       ,  guidance_scale=9.0       ,  num_inference_steps=20       ,  output_type="np"      )

										__lowerCAmelCase							       =     output.images

										__lowerCAmelCase							       =     image[0, -3:, -3:, -1]

										assert image.shape == (1, 5_12, 5_12, 3)
										__lowerCAmelCase							       =     np.array([0.1_2_3_7, 0.1_3_2_0, 0.1_4_3_8, 0.1_3_5_9, 0.1_3_9_0, 0.1_1_3_2, 0.1_2_7_7, 0.1_1_7_5, 0.1_1_1_2]      )

										assert np.abs(image_slice.flatten() - expected_slice      ).max() < 5e-1



							def      snake_case							(	self      ):
										__lowerCAmelCase							       =     StableDiffusionKDiffusionPipeline.from_pretrained("stabilityai/stable-diffusion-2-1-base"      )
										__lowerCAmelCase							       =     sd_pipe.to(__a      )
										sd_pipe.set_progress_bar_config(disable=__a      )

										sd_pipe.set_scheduler("sample_dpmpp_2m"      )

										__lowerCAmelCase							       =     "A painting of a squirrel eating a burger"
										__lowerCAmelCase							       =     torch.manual_seed(0      )
										__lowerCAmelCase							       =     sd_pipe(
										    [prompt]       ,  generator=__a       ,  guidance_scale=7.5       ,  num_inference_steps=15       ,  output_type="np"       ,  use_karras_sigmas=__a       ,  )

										__lowerCAmelCase							       =     output.images

										__lowerCAmelCase							       =     image[0, -3:, -3:, -1]

										assert image.shape == (1, 5_12, 5_12, 3)
										__lowerCAmelCase							       =     np.array(
										    [0.1_1_3_8_1_6_8_9, 0.1_2_1_1_2_9_2_1, 0.1_3_8_9_4_5_7, 0.1_2_5_4_9_6_0_6, 0.1_2_4_4_9_6_4, 0.1_0_8_3_1_5_1_7, 0.1_1_5_6_2_8_6_6, 0.1_0_8_6_7_8_1_6, 0.1_0_4_9_9_0_4_8]      )

										assert np.abs(image_slice.flatten() - expected_slice      ).max() < 1e-2




