



'''simple docstring'''

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 __snake_case(				_lowerCAmelCase		,							unittest.TestCase ):


						'''simple docstring'''



						UpperCAmelCase							:   Optional[Any]									=		DownBlockaD  # noqa F405
						UpperCAmelCase							:   Union[str, Any]									=		"down"


						def     __snake_case   ( self				)     ->     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(A_				)







class __snake_case(				_lowerCAmelCase		,							unittest.TestCase ):


						'''simple docstring'''



						UpperCAmelCase							:   int									=		ResnetDownsampleBlockaD  # noqa F405
						UpperCAmelCase							:   Union[str, Any]									=		"down"


						def     __snake_case   ( self				)     ->     Optional[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(A_				)







class __snake_case(				_lowerCAmelCase		,							unittest.TestCase ):


						'''simple docstring'''



						UpperCAmelCase							:   Any									=		AttnDownBlockaD  # noqa F405
						UpperCAmelCase							:   Optional[int]									=		"down"


						def     __snake_case   ( self				)     ->     str:
							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(A_				)







class __snake_case(				_lowerCAmelCase		,							unittest.TestCase ):


						'''simple docstring'''



						UpperCAmelCase							:   str									=		CrossAttnDownBlockaD  # noqa F405
						UpperCAmelCase							:   Union[str, Any]									=		"down"


						def     __snake_case   ( self				)     ->     Tuple:
							lowerCAmelCase,       lowerCAmelCase   =     super().prepare_init_args_and_inputs_for_common()
							lowerCAmelCase   =     32
							return init_dict, inputs_dict




						def     __snake_case   ( self				)     ->     Optional[int]:
							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(A_				)







class __snake_case(				_lowerCAmelCase		,							unittest.TestCase ):


						'''simple docstring'''



						UpperCAmelCase							:   Dict									=		SimpleCrossAttnDownBlockaD  # noqa F405
						UpperCAmelCase							:   Tuple									=		"down"


						@property
						def     __snake_case   ( self				)     ->     List[Any]:
							return super().get_dummy_input(include_encoder_hidden_states=A_				)


						def     __snake_case   ( self				)     ->     str:
							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     __snake_case   ( self				)     ->     str:
							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(A_				)







class __snake_case(				_lowerCAmelCase		,							unittest.TestCase ):


						'''simple docstring'''



						UpperCAmelCase							:   Optional[Any]									=		SkipDownBlockaD  # noqa F405
						UpperCAmelCase							:   str									=		"down"


						@property
						def     __snake_case   ( self				)     ->     str:
							return super().get_dummy_input(include_skip_sample=A_				)




						def     __snake_case   ( self				)     ->     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(A_				)







class __snake_case(				_lowerCAmelCase		,							unittest.TestCase ):


						'''simple docstring'''



						UpperCAmelCase							:   str									=		AttnSkipDownBlockaD  # noqa F405
						UpperCAmelCase							:   Union[str, Any]									=		"down"


						@property
						def     __snake_case   ( self				)     ->     Any:
							return super().get_dummy_input(include_skip_sample=A_				)




						def     __snake_case   ( self				)     ->     List[Any]:
							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(A_				)







class __snake_case(				_lowerCAmelCase		,							unittest.TestCase ):


						'''simple docstring'''



						UpperCAmelCase							:   Optional[Any]									=		DownEncoderBlockaD  # noqa F405
						UpperCAmelCase							:   Union[str, Any]									=		"down"


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


						def     __snake_case   ( self				)     ->     Optional[int]:
							lowerCAmelCase   =     {
							    """in_channels""": 32,
							    """out_channels""": 32,
							}
							lowerCAmelCase   =     self.dummy_input
							return init_dict, inputs_dict




						def     __snake_case   ( self				)     ->     Union[str, 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(A_				)







class __snake_case(				_lowerCAmelCase		,							unittest.TestCase ):


						'''simple docstring'''



						UpperCAmelCase							:   Tuple									=		AttnDownEncoderBlockaD  # noqa F405
						UpperCAmelCase							:   List[Any]									=		"down"


						@property
						def     __snake_case   ( self				)     ->     Optional[int]:
							return super().get_dummy_input(include_temb=A_				)


						def     __snake_case   ( self				)     ->     Tuple:
							lowerCAmelCase   =     {
							    """in_channels""": 32,
							    """out_channels""": 32,
							}
							lowerCAmelCase   =     self.dummy_input
							return init_dict, inputs_dict




						def     __snake_case   ( self				)     ->     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(A_				)







class __snake_case(				_lowerCAmelCase		,							unittest.TestCase ):


						'''simple docstring'''



						UpperCAmelCase							:   Any									=		UNetMidBlockaD  # noqa F405
						UpperCAmelCase							:   int									=		"mid"


						def     __snake_case   ( self				)     ->     int:
							lowerCAmelCase   =     {
							    """in_channels""": 32,
							    """temb_channels""": 128,
							}
							lowerCAmelCase   =     self.dummy_input
							return init_dict, inputs_dict




						def     __snake_case   ( self				)     ->     Any:
							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(A_				)







class __snake_case(				_lowerCAmelCase		,							unittest.TestCase ):


						'''simple docstring'''



						UpperCAmelCase							:   Any									=		UNetMidBlockaDCrossAttn  # noqa F405
						UpperCAmelCase							:   Any									=		"mid"


						def     __snake_case   ( self				)     ->     Any:
							lowerCAmelCase,       lowerCAmelCase   =     super().prepare_init_args_and_inputs_for_common()
							lowerCAmelCase   =     32
							return init_dict, inputs_dict




						def     __snake_case   ( self				)     ->     Dict:
							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(A_				)







class __snake_case(				_lowerCAmelCase		,							unittest.TestCase ):


						'''simple docstring'''



						UpperCAmelCase							:   List[Any]									=		UNetMidBlockaDSimpleCrossAttn  # noqa F405
						UpperCAmelCase							:   List[Any]									=		"mid"


						@property
						def     __snake_case   ( self				)     ->     Dict:
							return super().get_dummy_input(include_encoder_hidden_states=A_				)


						def     __snake_case   ( self				)     ->     Dict:
							lowerCAmelCase,       lowerCAmelCase   =     super().prepare_init_args_and_inputs_for_common()
							lowerCAmelCase   =     32
							return init_dict, inputs_dict




						def     __snake_case   ( self				)     ->     Tuple:
							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(A_				)







class __snake_case(				_lowerCAmelCase		,							unittest.TestCase ):


						'''simple docstring'''



						UpperCAmelCase							:   Optional[Any]									=		UpBlockaD  # noqa F405
						UpperCAmelCase							:   Tuple									=		"up"


						@property
						def     __snake_case   ( self				)     ->     Optional[int]:
							return super().get_dummy_input(include_res_hidden_states_tuple=A_				)




						def     __snake_case   ( self				)     ->     int:
							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(A_				)







class __snake_case(				_lowerCAmelCase		,							unittest.TestCase ):


						'''simple docstring'''



						UpperCAmelCase							:   Optional[int]									=		ResnetUpsampleBlockaD  # noqa F405
						UpperCAmelCase							:   List[str]									=		"up"


						@property
						def     __snake_case   ( self				)     ->     Any:
							return super().get_dummy_input(include_res_hidden_states_tuple=A_				)




						def     __snake_case   ( self				)     ->     Union[str, Any]:
							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(A_				)







class __snake_case(				_lowerCAmelCase		,							unittest.TestCase ):


						'''simple docstring'''



						UpperCAmelCase							:   Union[str, Any]									=		CrossAttnUpBlockaD  # noqa F405
						UpperCAmelCase							:   int									=		"up"


						@property
						def     __snake_case   ( self				)     ->     List[Any]:
							return super().get_dummy_input(include_res_hidden_states_tuple=A_				)


						def     __snake_case   ( self				)     ->     str:
							lowerCAmelCase,       lowerCAmelCase   =     super().prepare_init_args_and_inputs_for_common()
							lowerCAmelCase   =     32
							return init_dict, inputs_dict




						def     __snake_case   ( self				)     ->     List[Any]:
							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(A_				)







class __snake_case(				_lowerCAmelCase		,							unittest.TestCase ):


						'''simple docstring'''



						UpperCAmelCase							:   List[Any]									=		SimpleCrossAttnUpBlockaD  # noqa F405
						UpperCAmelCase							:   int									=		"up"


						@property
						def     __snake_case   ( self				)     ->     Any:
							return super().get_dummy_input(include_res_hidden_states_tuple=A_     ,	include_encoder_hidden_states=A_				)


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




						def     __snake_case   ( self				)     ->     int:
							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(A_				)







class __snake_case(				_lowerCAmelCase		,							unittest.TestCase ):


						'''simple docstring'''



						UpperCAmelCase							:   Dict									=		AttnUpBlockaD  # noqa F405
						UpperCAmelCase							:   List[Any]									=		"up"


						@property
						def     __snake_case   ( self				)     ->     Optional[int]:
							return super().get_dummy_input(include_res_hidden_states_tuple=A_				)




						@unittest.skipIf(torch_device == """mps"""     ,	"""MPS result is not consistent"""				)
						def     __snake_case   ( self				)     ->     Tuple:
							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(A_				)







class __snake_case(				_lowerCAmelCase		,							unittest.TestCase ):


						'''simple docstring'''



						UpperCAmelCase							:   List[str]									=		SkipUpBlockaD  # noqa F405
						UpperCAmelCase							:   Any									=		"up"


						@property
						def     __snake_case   ( self				)     ->     Any:
							return super().get_dummy_input(include_res_hidden_states_tuple=A_				)




						def     __snake_case   ( self				)     ->     Optional[int]:
							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(A_				)







class __snake_case(				_lowerCAmelCase		,							unittest.TestCase ):


						'''simple docstring'''



						UpperCAmelCase							:   Tuple									=		AttnSkipUpBlockaD  # noqa F405
						UpperCAmelCase							:   List[str]									=		"up"


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




						def     __snake_case   ( self				)     ->     List[str]:
							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(A_				)







class __snake_case(				_lowerCAmelCase		,							unittest.TestCase ):


						'''simple docstring'''



						UpperCAmelCase							:   Any									=		UpDecoderBlockaD  # noqa F405
						UpperCAmelCase							:   Union[str, Any]									=		"up"


						@property
						def     __snake_case   ( self				)     ->     Any:
							return super().get_dummy_input(include_temb=A_				)


						def     __snake_case   ( self				)     ->     Any:
							lowerCAmelCase   =     {"""in_channels""": 32, """out_channels""": 32}

							lowerCAmelCase   =     self.dummy_input
							return init_dict, inputs_dict




						def     __snake_case   ( self				)     ->     List[str]:
							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(A_				)







class __snake_case(				_lowerCAmelCase		,							unittest.TestCase ):


						'''simple docstring'''



						UpperCAmelCase							:   Optional[int]									=		AttnUpDecoderBlockaD  # noqa F405
						UpperCAmelCase							:   str									=		"up"


						@property
						def     __snake_case   ( self				)     ->     int:
							return super().get_dummy_input(include_temb=A_				)


						def     __snake_case   ( self				)     ->     Any:
							lowerCAmelCase   =     {"""in_channels""": 32, """out_channels""": 32}

							lowerCAmelCase   =     self.dummy_input
							return init_dict, inputs_dict




						def     __snake_case   ( self				)     ->     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(A_				)




'''simple docstring'''

from __future__ import annotations

import pandas as pd






def 		_snake_case		( _SCREAMING_SNAKE_CASE					:						list[int]							,		_SCREAMING_SNAKE_CASE					:						list[int]							,		_SCREAMING_SNAKE_CASE					:						int							)      ->						list[int]:







	"""simple docstring"""
	lowerCAmelCase   =     [0] * no_of_processes
	lowerCAmelCase   =     [0] * no_of_processes
	# Copy the burst time into remaining_time[]
	for i in range(_SCREAMING_SNAKE_CASE							):
		lowerCAmelCase   =     burst_time[i]

	lowerCAmelCase   =     0
	lowerCAmelCase   =     0
	lowerCAmelCase   =     999_999_999
	lowerCAmelCase   =     0
	lowerCAmelCase   =     False

	# Process until all processes are completed
	while complete != no_of_processes:
		for j in range(_SCREAMING_SNAKE_CASE							):
			if arrival_time[j] <= increment_time and remaining_time[j] > 0:
				if remaining_time[j] < minm:
					lowerCAmelCase   =     remaining_time[j]
					lowerCAmelCase   =     j
					lowerCAmelCase   =     True

		if not check:
			increment_time += 1
			continue
		remaining_time[short] -= 1

		lowerCAmelCase   =     remaining_time[short]
		if minm == 0:
			lowerCAmelCase   =     999_999_999

		if remaining_time[short] == 0:
			complete += 1
			lowerCAmelCase   =     False

			# Find finish time of current process
			lowerCAmelCase   =     increment_time + 1

			# Calculate waiting time
			lowerCAmelCase   =     finish_time - arrival_time[short]
			lowerCAmelCase   =     finar - burst_time[short]

			if waiting_time[short] < 0:
				lowerCAmelCase   =     0

        # Increment time
		increment_time += 1
	return waiting_time






def 		_snake_case		( _SCREAMING_SNAKE_CASE					:						list[int]							,		_SCREAMING_SNAKE_CASE					:						int							,		_SCREAMING_SNAKE_CASE					:						list[int]							)      ->						list[int]:







	"""simple docstring"""
	lowerCAmelCase   =     [0] * no_of_processes
	for i in range(_SCREAMING_SNAKE_CASE							):
		lowerCAmelCase   =     burst_time[i] + waiting_time[i]
	return turn_around_time






def 		_snake_case		( _SCREAMING_SNAKE_CASE					:						list[int]							,		_SCREAMING_SNAKE_CASE					:						list[int]							,		_SCREAMING_SNAKE_CASE					:						int							)      ->						None:







	"""simple docstring"""
	lowerCAmelCase   =     0
	lowerCAmelCase   =     0
	for i in range(_SCREAMING_SNAKE_CASE							):
		lowerCAmelCase   =     total_waiting_time + waiting_time[i]
		lowerCAmelCase   =     total_turn_around_time + turn_around_time[i]
	print(f'Average waiting time = {total_waiting_time / no_of_processes:.5f}'							)
	print("""Average turn around time ="""							,		total_turn_around_time / no_of_processes							)


if __name__ == "__main__":
				print('Enter how many process you want to analyze')
				UpperCAmelCase     		=   int(input())
				UpperCAmelCase     		=   [0] * no_of_processes
				UpperCAmelCase     		=   [0] * no_of_processes
				UpperCAmelCase     		=   list(range(1, no_of_processes + 1))

				for i in range(no_of_processes):
								print('Enter the arrival time and burst time for process:--' + str(i + 1))
								UpperCAmelCase		,       UpperCAmelCase     		=   map(int, input().split())

				UpperCAmelCase     		=   calculate_waitingtime(arrival_time, burst_time, no_of_processes)

				UpperCAmelCase     		=   burst_time
				UpperCAmelCase     		=   no_of_processes
				UpperCAmelCase     		=   waiting_time
				UpperCAmelCase     		=   calculate_turnaroundtime(bt, n, wt)

				calculate_average_times(waiting_time, turn_around_time, no_of_processes)

				UpperCAmelCase     		=   pd.DataFrame(
				    list(zip(processes, burst_time, arrival_time, waiting_time, turn_around_time)),
				    columns=[
				        'Process',
				        'BurstTime',
				        'ArrivalTime',
				        'WaitingTime',
				        'TurnAroundTime',
				    ],
				)

				# Printing the dataFrame
				pd.set_option('display.max_rows', fcfs.shape[0] + 1)
				print(fcfs)