

'''simple docstring'''





from __future__ import annotations







def   _UpperCamelCase	(		__UpperCamelCase	)       ->			bool:
					lowerCamelCase_  				=      len(__UpperCamelCase	)
					# We need to create solution object to save path.
					lowerCamelCase_  				=      [[0 for _ in range(__UpperCamelCase	)] for _ in range(__UpperCamelCase	)]
					lowerCamelCase_  				=      run_maze(__UpperCamelCase    ,0    ,0    ,__UpperCamelCase	)
					if solved:
										print('\n'.join(str(__UpperCamelCase	) for row in solutions	)	)
					else:
										print('No solution exists!'	)
					return solved







def   _UpperCamelCase	(		__UpperCamelCase    ,__UpperCamelCase    ,__UpperCamelCase    ,__UpperCamelCase	)       ->			bool:
					lowerCamelCase_  				=      len(__UpperCamelCase	)
					# Final check point.
					if i == j == (size - 1):
										lowerCamelCase_  				=      1
										return True

					lowerCamelCase_  				=      (not i < 0) and (not j < 0)  # Check lower bounds
					lowerCamelCase_  				=      (i < size) and (j < size)  # Check upper bounds

					if lower_flag and upper_flag:
										# check for already visited and block points.
										lowerCamelCase_  				=      (not solutions[i][j]) and (not maze[i][j])
										if block_flag:
															# check visited
															lowerCamelCase_  				=      1

															# check for directions
															if (
															    run_maze(__UpperCamelCase    ,i + 1    ,__UpperCamelCase    ,__UpperCamelCase	)
															    or run_maze(__UpperCamelCase    ,__UpperCamelCase    ,j + 1    ,__UpperCamelCase	)
															    or run_maze(__UpperCamelCase    ,i - 1    ,__UpperCamelCase    ,__UpperCamelCase	)
															    or run_maze(__UpperCamelCase    ,__UpperCamelCase    ,j - 1    ,__UpperCamelCase	)
															):
																				return True

															lowerCamelCase_  				=      0
															return False
					return False


if __name__ == "__main__":
				import doctest

				doctest.testmod()






'''simple docstring'''



import gc
import random
import unittest

import numpy as np
import torch
from transformers import CLIPImageProcessor, CLIPVisionConfig, CLIPVisionModel

from diffusers import HeunDiscreteScheduler, PriorTransformer, ShapEImgaImgPipeline
from diffusers.pipelines.shap_e import ShapERenderer
from diffusers.utils import floats_tensor, load_image, load_numpy, slow
from diffusers.utils.testing_utils import require_torch_gpu, torch_device

from ..test_pipelines_common import PipelineTesterMixin, assert_mean_pixel_difference







class 		lowerCAmelCase__  ( a					,   unittest.TestCase   ):



 """simple docstring"""



 lowerCAmelCase__       = ShapEImgaImgPipeline
 lowerCAmelCase__       = ["image"]
 lowerCAmelCase__       = ["image"]
 lowerCAmelCase__       = [
     "num_images_per_prompt",
     "num_inference_steps",
     "generator",
     "latents",
     "guidance_scale",
     "frame_size",
     "output_type",
     "return_dict",
 ]
 lowerCAmelCase__       = False
 @property
 def  UpperCAmelCase__						(						self   :			Tuple     )    ->					Tuple:


      """simple docstring"""




      return 32
 @property
 def  UpperCAmelCase__						(						self   :			str     )    ->					int:


      """simple docstring"""




      return 32
 @property
 def  UpperCAmelCase__						(						self   :			List[str]     )    ->					Union[str, Any]:


      """simple docstring"""




      return self.time_input_dim * 4
 @property
 def  UpperCAmelCase__						(						self   :			Dict     )    ->					str:


      """simple docstring"""




      return 8
 @property
 def  UpperCAmelCase__						(						self   :			Optional[int]     )    ->					Optional[Any]:


      """simple docstring"""




      torch.manual_seed(0     )
      __SCREAMING_SNAKE_CASE      = CLIPVisionConfig(
          hidden_size=self.text_embedder_hidden_size   ,				image_size=64   ,				projection_dim=self.text_embedder_hidden_size   ,				intermediate_size=37   ,				num_attention_heads=4   ,				num_channels=3   ,				num_hidden_layers=5   ,				patch_size=1   ,				)

      __SCREAMING_SNAKE_CASE      = CLIPVisionModel(__SCREAMING_SNAKE_CASE     )
      return model
 @property
 def  UpperCAmelCase__						(						self   :			Any     )    ->					Optional[int]:


      """simple docstring"""




      __SCREAMING_SNAKE_CASE      = CLIPImageProcessor(
          crop_size=224   ,				do_center_crop=__SCREAMING_SNAKE_CASE   ,				do_normalize=__SCREAMING_SNAKE_CASE   ,				do_resize=__SCREAMING_SNAKE_CASE   ,				image_mean=[0.48145466, 0.4578275, 0.40821073]   ,				image_std=[0.26862954, 0.26130258, 0.27577711]   ,				resample=3   ,				size=224   ,				)

      return image_processor
 @property
 def  UpperCAmelCase__						(						self   :			Union[str, Any]     )    ->					Tuple:


      """simple docstring"""




      torch.manual_seed(0     )

      __SCREAMING_SNAKE_CASE      = {
          """num_attention_heads""": 2,
          """attention_head_dim""": 16,
          """embedding_dim""": self.time_input_dim,
          """num_embeddings""": 32,
          """embedding_proj_dim""": self.text_embedder_hidden_size,
          """time_embed_dim""": self.time_embed_dim,
          """num_layers""": 1,
          """clip_embed_dim""": self.time_input_dim * 2,
          """additional_embeddings""": 0,
          """time_embed_act_fn""": """gelu""",
          """norm_in_type""": """layer""",
          """embedding_proj_norm_type""": """layer""",
          """encoder_hid_proj_type""": None,
          """added_emb_type""": None,
      }

      __SCREAMING_SNAKE_CASE      = PriorTransformer(**__SCREAMING_SNAKE_CASE     )
      return model
 @property
 def  UpperCAmelCase__						(						self   :			str     )    ->					List[str]:


      """simple docstring"""




      torch.manual_seed(0     )

      __SCREAMING_SNAKE_CASE      = {
          """param_shapes""": (
              (self.renderer_dim, 93),
              (self.renderer_dim, 8),
              (self.renderer_dim, 8),
              (self.renderer_dim, 8),
          ),
          """d_latent""": self.time_input_dim,
          """d_hidden""": self.renderer_dim,
          """n_output""": 12,
          """background""": (
              0.1,
              0.1,
              0.1,
          ),
      }
      __SCREAMING_SNAKE_CASE      = ShapERenderer(**__SCREAMING_SNAKE_CASE     )
      return model
 def  UpperCAmelCase__						(						self   :			str     )    ->					Tuple:


      """simple docstring"""




      __SCREAMING_SNAKE_CASE      = self.dummy_prior
      __SCREAMING_SNAKE_CASE      = self.dummy_image_encoder
      __SCREAMING_SNAKE_CASE      = self.dummy_image_processor
      __SCREAMING_SNAKE_CASE      = self.dummy_renderer

      __SCREAMING_SNAKE_CASE      = HeunDiscreteScheduler(
          beta_schedule="""exp"""   ,				num_train_timesteps=1_024   ,				prediction_type="""sample"""   ,				use_karras_sigmas=__SCREAMING_SNAKE_CASE   ,				clip_sample=__SCREAMING_SNAKE_CASE   ,				clip_sample_range=1.0   ,				)
      __SCREAMING_SNAKE_CASE      = {
          """prior""": prior,
          """image_encoder""": image_encoder,
          """image_processor""": image_processor,
          """renderer""": renderer,
          """scheduler""": scheduler,
      }

      return components
 def  UpperCAmelCase__						(						self   :			Dict   ,				__SCREAMING_SNAKE_CASE   :			Tuple   ,				__SCREAMING_SNAKE_CASE   :			str=0     )    ->					Tuple:


      """simple docstring"""




      __SCREAMING_SNAKE_CASE      = floats_tensor((1, 3, 64, 64)   ,				rng=random.Random(__SCREAMING_SNAKE_CASE     )     ).to(__SCREAMING_SNAKE_CASE     )

      if str(__SCREAMING_SNAKE_CASE     ).startswith("""mps"""     ):
           __SCREAMING_SNAKE_CASE      = torch.manual_seed(__SCREAMING_SNAKE_CASE     )
      else:
           __SCREAMING_SNAKE_CASE      = torch.Generator(device=__SCREAMING_SNAKE_CASE     ).manual_seed(__SCREAMING_SNAKE_CASE     )
      __SCREAMING_SNAKE_CASE      = {
          """image""": input_image,
          """generator""": generator,
          """num_inference_steps""": 1,
          """frame_size""": 32,
          """output_type""": """np""",
      }
      return inputs
 def  UpperCAmelCase__						(						self   :			Union[str, Any]     )    ->					int:


      """simple docstring"""




      __SCREAMING_SNAKE_CASE      = """cpu"""

      __SCREAMING_SNAKE_CASE      = self.get_dummy_components()

      __SCREAMING_SNAKE_CASE      = self.pipeline_class(**__SCREAMING_SNAKE_CASE     )
      __SCREAMING_SNAKE_CASE      = pipe.to(__SCREAMING_SNAKE_CASE     )

      pipe.set_progress_bar_config(disable=__SCREAMING_SNAKE_CASE     )

      __SCREAMING_SNAKE_CASE      = pipe(**self.get_dummy_inputs(__SCREAMING_SNAKE_CASE     )     )
      __SCREAMING_SNAKE_CASE      = output.images[0]
      __SCREAMING_SNAKE_CASE      = image[0, -3:, -3:, -1]

      assert image.shape == (20, 32, 32, 3)

      __SCREAMING_SNAKE_CASE      = np.array(
          [
              0.00039216,
              0.00039216,
              0.00039216,
              0.00039216,
              0.00039216,
              0.00039216,
              0.00039216,
              0.00039216,
              0.00039216,
          ]     )

      assert np.abs(image_slice.flatten() - expected_slice     ).max() < 1E-2
 def  UpperCAmelCase__						(						self   :			str     )    ->					Dict:


      """simple docstring"""




      self._test_inference_batch_consistent(batch_sizes=[1, 2]     )
 def  UpperCAmelCase__						(						self   :			Dict     )    ->					str:


      """simple docstring"""




      __SCREAMING_SNAKE_CASE      = torch_device == """cpu"""
      __SCREAMING_SNAKE_CASE      = True
      self._test_inference_batch_single_identical(
          batch_size=2   ,				test_max_difference=__SCREAMING_SNAKE_CASE   ,				relax_max_difference=__SCREAMING_SNAKE_CASE   ,				)


 def  UpperCAmelCase__						(						self   :			Tuple     )    ->					Optional[Any]:


      """simple docstring"""




      __SCREAMING_SNAKE_CASE      = self.get_dummy_components()
      __SCREAMING_SNAKE_CASE      = self.pipeline_class(**__SCREAMING_SNAKE_CASE     )
      __SCREAMING_SNAKE_CASE      = pipe.to(__SCREAMING_SNAKE_CASE     )
      pipe.set_progress_bar_config(disable=__SCREAMING_SNAKE_CASE     )

      __SCREAMING_SNAKE_CASE      = 1
      __SCREAMING_SNAKE_CASE      = 2

      __SCREAMING_SNAKE_CASE      = self.get_dummy_inputs(__SCREAMING_SNAKE_CASE     )

      for key in inputs.keys():
           if key in self.batch_params:
                __SCREAMING_SNAKE_CASE      = batch_size * [inputs[key]]

      __SCREAMING_SNAKE_CASE      = pipe(**__SCREAMING_SNAKE_CASE   ,				num_images_per_prompt=__SCREAMING_SNAKE_CASE     )[0]

      assert images.shape[0] == batch_size * num_images_per_prompt







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



 """simple docstring"""



 def  UpperCAmelCase__						(						self   :			int     )    ->					Dict:


      """simple docstring"""




      super().tearDown()
      gc.collect()
      torch.cuda.empty_cache()


 def  UpperCAmelCase__						(						self   :			Optional[Any]     )    ->					Dict:


      """simple docstring"""




      __SCREAMING_SNAKE_CASE      = load_image(
          """https://huggingface.co/datasets/hf-internal-testing/diffusers-images/resolve/main""" """/shap_e/corgi.png"""     )
      __SCREAMING_SNAKE_CASE      = load_numpy(
          """https://huggingface.co/datasets/hf-internal-testing/diffusers-images/resolve/main"""
          """/shap_e/test_shap_e_img2img_out.npy"""     )
      __SCREAMING_SNAKE_CASE      = ShapEImgaImgPipeline.from_pretrained("""openai/shap-e-img2img"""     )
      __SCREAMING_SNAKE_CASE      = pipe.to(__SCREAMING_SNAKE_CASE     )
      pipe.set_progress_bar_config(disable=__SCREAMING_SNAKE_CASE     )

      __SCREAMING_SNAKE_CASE      = torch.Generator(device=__SCREAMING_SNAKE_CASE     ).manual_seed(0     )

      __SCREAMING_SNAKE_CASE      = pipe(
          __SCREAMING_SNAKE_CASE   ,				generator=__SCREAMING_SNAKE_CASE   ,				guidance_scale=3.0   ,				num_inference_steps=64   ,				frame_size=64   ,				output_type="""np"""   ,				).images[0]

      assert images.shape == (20, 64, 64, 3)

      assert_mean_pixel_difference(__SCREAMING_SNAKE_CASE   ,				__SCREAMING_SNAKE_CASE     )






