



def      UpperCamelCase(    __UpperCamelCase				:						int					):

		if length <= 0 or not isinstance(snake_case__	,snake_case__					):
				raise ValueError('''Length must be a positive integer.'''					)
		return [n * (2 * n - 1) for n in range(snake_case__					)]


if __name__ == "__main__":
						print(hexagonal_numbers(length=5))
						print(hexagonal_numbers(length=10))











"""simple docstring"""




import gc
import unittest

import numpy as np
import torch

from diffusers import AutoencoderKL, DDIMScheduler, DiTPipeline, DPMSolverMultistepScheduler, TransformeraDModel
from diffusers.utils import is_xformers_available, load_numpy, slow, torch_device
from diffusers.utils.testing_utils import enable_full_determinism, require_torch_gpu

from ..pipeline_params import (
    CLASS_CONDITIONED_IMAGE_GENERATION_BATCH_PARAMS,
    CLASS_CONDITIONED_IMAGE_GENERATION_PARAMS,
)
from ..test_pipelines_common import PipelineTesterMixin


enable_full_determinism()






class        __magic_name__				(			UpperCAmelCase__		,   unittest.TestCase							):






				'''simple docstring'''
				__UpperCamelCase         =		DiTPipeline
				__UpperCamelCase         =		CLASS_CONDITIONED_IMAGE_GENERATION_PARAMS
				__UpperCamelCase         =		PipelineTesterMixin.required_optional_params - {
				    "latents",
				    "num_images_per_prompt",
				    "callback",
				    "callback_steps",
				}
				__UpperCamelCase         =		CLASS_CONDITIONED_IMAGE_GENERATION_BATCH_PARAMS
				__UpperCamelCase         =		False





				def   _lowerCAmelCase							(			self					):





							"""simple docstring"""
							torch.manual_seed(0					)
							lowerCamelCase      =   TransformeraDModel(
							    sample_size=16						,					num_layers=2						,					patch_size=4						,					attention_head_dim=8						,					num_attention_heads=2						,					in_channels=4						,					out_channels=8						,					attention_bias=_a						,					activation_fn="""gelu-approximate"""						,					num_embeds_ada_norm=1_000						,					norm_type="""ada_norm_zero"""						,					norm_elementwise_affine=_a						,					)
							lowerCamelCase      =   AutoencoderKL()
							lowerCamelCase      =   DDIMScheduler()
							lowerCamelCase      =   {"""transformer""": transformer.eval(), """vae""": vae.eval(), """scheduler""": scheduler}
							return components





				def   _lowerCAmelCase							(			self						,					_a						,					_a=0					):





							"""simple docstring"""
							if str(_a					).startswith("""mps"""					):
										lowerCamelCase      =   torch.manual_seed(_a					)
							else:
										lowerCamelCase      =   torch.Generator(device=_a					).manual_seed(_a					)
							lowerCamelCase      =   {
							    """class_labels""": [1],
							    """generator""": generator,
							    """num_inference_steps""": 2,
							    """output_type""": """numpy""",
							}
							return inputs





				def   _lowerCAmelCase							(			self					):





							"""simple docstring"""
							lowerCamelCase      =   """cpu"""

							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					).images
							lowerCamelCase      =   image[0, -3:, -3:, -1]

							self.assertEqual(image.shape						,					(1, 16, 16, 3)					)
							lowerCamelCase      =   np.array([0.2_946, 0.6_601, 0.4_329, 0.3_296, 0.4_144, 0.5_319, 0.7_273, 0.5_013, 0.4_457]					)
							lowerCamelCase      =   np.abs(image_slice.flatten() - expected_slice					).max()
							self.assertLessEqual(_a						,					1e-3					)





				def   _lowerCAmelCase							(			self					):





							"""simple docstring"""
							self._test_inference_batch_single_identical(relax_max_difference=_a						,					expected_max_diff=1e-3					)





				@unittest.skipIf(
				    torch_device != """cuda""" or not is_xformers_available()						,					reason="""XFormers attention is only available with CUDA and `xformers` installed"""						,					)
				def   _lowerCAmelCase							(			self					):





							"""simple docstring"""
							self._test_xformers_attention_forwardGenerator_pass(expected_max_diff=1e-3					)






@require_torch_gpu
@slow
class        __magic_name__				(			unittest.TestCase							):






				'''simple docstring'''





				def   _lowerCAmelCase							(			self					):





							"""simple docstring"""
							super().tearDown()
							gc.collect()
							torch.cuda.empty_cache()





				def   _lowerCAmelCase							(			self					):





							"""simple docstring"""
							lowerCamelCase      =   torch.manual_seed(0					)

							lowerCamelCase      =   DiTPipeline.from_pretrained("""facebook/DiT-XL-2-256"""					)
							pipe.to("""cuda"""					)

							lowerCamelCase      =   ["""vase""", """umbrella""", """white shark""", """white wolf"""]
							lowerCamelCase      =   pipe.get_label_ids(_a					)

							lowerCamelCase      =   pipe(_a						,					generator=_a						,					num_inference_steps=40						,					output_type="""np"""					).images

							for word, image in zip(_a						,					_a					):
										lowerCamelCase      =   load_numpy(
										    f'https://huggingface.co/datasets/hf-internal-testing/diffusers-images/resolve/main/dit/{word}.npy'					)
										assert np.abs((expected_image - image).max()					) < 1e-2





				def   _lowerCAmelCase							(			self					):





							"""simple docstring"""
							lowerCamelCase      =   DiTPipeline.from_pretrained("""facebook/DiT-XL-2-512"""					)
							lowerCamelCase      =   DPMSolverMultistepScheduler.from_config(pipe.scheduler.config					)
							pipe.to("""cuda"""					)

							lowerCamelCase      =   ["""vase""", """umbrella"""]
							lowerCamelCase      =   pipe.get_label_ids(_a					)

							lowerCamelCase      =   torch.manual_seed(0					)
							lowerCamelCase      =   pipe(_a						,					generator=_a						,					num_inference_steps=25						,					output_type="""np"""					).images

							for word, image in zip(_a						,					_a					):
										lowerCamelCase      =   load_numpy(
										    """https://huggingface.co/datasets/hf-internal-testing/diffusers-images/resolve/main"""
										    f'/dit/{word}_512.npy'					)

										assert np.abs((expected_image - image).max()					) < 1e-1



