




"""simple docstring"""




import tempfile

import numpy as np
import torch
from transformers import AutoTokenizer, TaEncoderModel

from diffusers import DDPMScheduler, UNetaDConditionModel
from diffusers.models.attention_processor import AttnAddedKVProcessor
from diffusers.pipelines.deepfloyd_if import IFWatermarker
from diffusers.utils.testing_utils import torch_device

from ..test_pipelines_common import to_np






class        __magic_name__				:






				'''simple docstring'''





				def   _lowerCAmelCase							(			self					):





							"""simple docstring"""
							torch.manual_seed(0					)
							lowerCamelCase      =   TaEncoderModel.from_pretrained("""hf-internal-testing/tiny-random-t5"""					)

							torch.manual_seed(0					)
							lowerCamelCase      =   AutoTokenizer.from_pretrained("""hf-internal-testing/tiny-random-t5"""					)

							torch.manual_seed(0					)
							lowerCamelCase      =   UNetaDConditionModel(
							    sample_size=32						,					layers_per_block=1						,					block_out_channels=[32, 64]						,					down_block_types=[
							        """ResnetDownsampleBlock2D""",
							        """SimpleCrossAttnDownBlock2D""",
							    ]						,					mid_block_type="""UNetMidBlock2DSimpleCrossAttn"""						,					up_block_types=["""SimpleCrossAttnUpBlock2D""", """ResnetUpsampleBlock2D"""]						,					in_channels=3						,					out_channels=6						,					cross_attention_dim=32						,					encoder_hid_dim=32						,					attention_head_dim=8						,					addition_embed_type="""text"""						,					addition_embed_type_num_heads=2						,					cross_attention_norm="""group_norm"""						,					resnet_time_scale_shift="""scale_shift"""						,					act_fn="""gelu"""						,					)
							unet.set_attn_processor(AttnAddedKVProcessor()					)  # For reproducibility tests

							torch.manual_seed(0					)
							lowerCamelCase      =   DDPMScheduler(
							    num_train_timesteps=1_000						,					beta_schedule="""squaredcos_cap_v2"""						,					beta_start=0.0_001						,					beta_end=0.02						,					thresholding=_a						,					dynamic_thresholding_ratio=0.95						,					sample_max_value=1.0						,					prediction_type="""epsilon"""						,					variance_type="""learned_range"""						,					)

							torch.manual_seed(0					)
							lowerCamelCase      =   IFWatermarker()

							return {
							    "text_encoder": text_encoder,
							    "tokenizer": tokenizer,
							    "unet": unet,
							    "scheduler": scheduler,
							    "watermarker": watermarker,
							    "safety_checker": None,
							    "feature_extractor": None,
							}





				def   _lowerCAmelCase							(			self					):





							"""simple docstring"""
							torch.manual_seed(0					)
							lowerCamelCase      =   TaEncoderModel.from_pretrained("""hf-internal-testing/tiny-random-t5"""					)

							torch.manual_seed(0					)
							lowerCamelCase      =   AutoTokenizer.from_pretrained("""hf-internal-testing/tiny-random-t5"""					)

							torch.manual_seed(0					)
							lowerCamelCase      =   UNetaDConditionModel(
							    sample_size=32						,					layers_per_block=[1, 2]						,					block_out_channels=[32, 64]						,					down_block_types=[
							        """ResnetDownsampleBlock2D""",
							        """SimpleCrossAttnDownBlock2D""",
							    ]						,					mid_block_type="""UNetMidBlock2DSimpleCrossAttn"""						,					up_block_types=["""SimpleCrossAttnUpBlock2D""", """ResnetUpsampleBlock2D"""]						,					in_channels=6						,					out_channels=6						,					cross_attention_dim=32						,					encoder_hid_dim=32						,					attention_head_dim=8						,					addition_embed_type="""text"""						,					addition_embed_type_num_heads=2						,					cross_attention_norm="""group_norm"""						,					resnet_time_scale_shift="""scale_shift"""						,					act_fn="""gelu"""						,					class_embed_type="""timestep"""						,					mid_block_scale_factor=1.414						,					time_embedding_act_fn="""gelu"""						,					time_embedding_dim=32						,					)
							unet.set_attn_processor(AttnAddedKVProcessor()					)  # For reproducibility tests

							torch.manual_seed(0					)
							lowerCamelCase      =   DDPMScheduler(
							    num_train_timesteps=1_000						,					beta_schedule="""squaredcos_cap_v2"""						,					beta_start=0.0_001						,					beta_end=0.02						,					thresholding=_a						,					dynamic_thresholding_ratio=0.95						,					sample_max_value=1.0						,					prediction_type="""epsilon"""						,					variance_type="""learned_range"""						,					)

							torch.manual_seed(0					)
							lowerCamelCase      =   DDPMScheduler(
							    num_train_timesteps=1_000						,					beta_schedule="""squaredcos_cap_v2"""						,					beta_start=0.0_001						,					beta_end=0.02						,					)

							torch.manual_seed(0					)
							lowerCamelCase      =   IFWatermarker()

							return {
							    "text_encoder": text_encoder,
							    "tokenizer": tokenizer,
							    "unet": unet,
							    "scheduler": scheduler,
							    "image_noising_scheduler": image_noising_scheduler,
							    "watermarker": watermarker,
							    "safety_checker": None,
							    "feature_extractor": None,
							}





				def   _lowerCAmelCase							(			self					):





							"""simple docstring"""
							lowerCamelCase      =   self.get_dummy_components()
							lowerCamelCase      =   self.pipeline_class(**_a					)
							pipe.to(_a					)
							pipe.set_progress_bar_config(disable=_a					)

							lowerCamelCase      =   self.get_dummy_inputs(_a					)

							lowerCamelCase      =   inputs["""prompt"""]
							lowerCamelCase      =   inputs["""generator"""]
							lowerCamelCase      =   inputs["""num_inference_steps"""]
							lowerCamelCase      =   inputs["""output_type"""]

							if "image" in inputs:
										lowerCamelCase      =   inputs["""image"""]
							else:
										lowerCamelCase      =   None

							if "mask_image" in inputs:
										lowerCamelCase      =   inputs["""mask_image"""]
							else:
										lowerCamelCase      =   None

							if "original_image" in inputs:
										lowerCamelCase      =   inputs["""original_image"""]
							else:
										lowerCamelCase      =   None

							lowerCamelCase ,  lowerCamelCase      =   pipe.encode_prompt(_a					)

							# inputs with prompt converted to embeddings
							lowerCamelCase      =   {
							    """prompt_embeds""": prompt_embeds,
							    """negative_prompt_embeds""": negative_prompt_embeds,
							    """generator""": generator,
							    """num_inference_steps""": num_inference_steps,
							    """output_type""": output_type,
							}

							if image is not None:
										lowerCamelCase      =   image

							if mask_image is not None:
										lowerCamelCase      =   mask_image

							if original_image is not None:
										lowerCamelCase      =   original_image

							# set all optional components to None
							for optional_component in pipe._optional_components:
										setattr(_a						,					_a						,					_a					)

							lowerCamelCase      =   pipe(**_a					)[0]

							with tempfile.TemporaryDirectory() as tmpdir:
										pipe.save_pretrained(_a					)
										lowerCamelCase      =   self.pipeline_class.from_pretrained(_a					)
										pipe_loaded.to(_a					)
										pipe_loaded.set_progress_bar_config(disable=_a					)

							pipe_loaded.unet.set_attn_processor(AttnAddedKVProcessor()					)  # For reproducibility tests

							for optional_component in pipe._optional_components:
										self.assertTrue(
										    getattr(_a						,					_a					) is None						,					f'`{optional_component}` did not stay set to None after loading.'						,					)

							lowerCamelCase      =   self.get_dummy_inputs(_a					)

							lowerCamelCase      =   inputs["""generator"""]
							lowerCamelCase      =   inputs["""num_inference_steps"""]
							lowerCamelCase      =   inputs["""output_type"""]

							# inputs with prompt converted to embeddings
							lowerCamelCase      =   {
							    """prompt_embeds""": prompt_embeds,
							    """negative_prompt_embeds""": negative_prompt_embeds,
							    """generator""": generator,
							    """num_inference_steps""": num_inference_steps,
							    """output_type""": output_type,
							}

							if image is not None:
										lowerCamelCase      =   image

							if mask_image is not None:
										lowerCamelCase      =   mask_image

							if original_image is not None:
										lowerCamelCase      =   original_image

							lowerCamelCase      =   pipe_loaded(**_a					)[0]

							lowerCamelCase      =   np.abs(to_np(_a					) - to_np(_a					)					).max()
							self.assertLess(_a						,					1e-4					)





				def   _lowerCAmelCase							(			self					):





							"""simple docstring"""
							lowerCamelCase      =   self.get_dummy_components()
							lowerCamelCase      =   self.pipeline_class(**_a					)
							pipe.to(_a					)
							pipe.set_progress_bar_config(disable=_a					)

							lowerCamelCase      =   self.get_dummy_inputs(_a					)
							lowerCamelCase      =   pipe(**_a					)[0]

							with tempfile.TemporaryDirectory() as tmpdir:
										pipe.save_pretrained(_a					)
										lowerCamelCase      =   self.pipeline_class.from_pretrained(_a					)
										pipe_loaded.to(_a					)
										pipe_loaded.set_progress_bar_config(disable=_a					)

							pipe_loaded.unet.set_attn_processor(AttnAddedKVProcessor()					)  # For reproducibility tests

							lowerCamelCase      =   self.get_dummy_inputs(_a					)
							lowerCamelCase      =   pipe_loaded(**_a					)[0]

							lowerCamelCase      =   np.abs(to_np(_a					) - to_np(_a					)					).max()
							self.assertLess(_a						,					1e-4					)









"""simple docstring"""




from collections.abc import Sequence



def        a__					(							snake_case__			,					snake_case__ = False							)		->   float:
			if not arr:
						return 0

			lowerCamelCase      =   0 if allow_empty_subarrays else float("""-inf"""							)
			lowerCamelCase      =   0.0
			for num in arr:
						lowerCamelCase      =   max(0 if allow_empty_subarrays else num			,					curr_sum + num							)
						lowerCamelCase      =   max(snake_case__			,					snake_case__							)

			return max_sum


if __name__ == "__main__":
					from doctest import testmod

					testmod()

					lowerCAmelCase				:     Union[str, Any]					=				[-2, 1, -3, 4, -1, 2, 1, -5, 4]
					print(F"""{max_subarray_sum(nums) = }""")



