




# This code is adapted from OpenAI's release
# https://github.com/openai/human-eval/blob/master/human_eval/execution.py

import contextlib
import faulthandler
import io
import multiprocessing
import os
import platform
import signal
import tempfile




def 					lowerCamelCase__       (						A__       :					Any  ,			A__       :					Any  ,			A__       :					Optional[Any]  ,			A__       :					Dict	):





       '''simple docstring'''



       __lowerCamelCase   =						multiprocessing.Manager()
       __lowerCamelCase   =						manager.list()

       __lowerCamelCase   =						multiprocessing.Process(target=A__  ,			args=(check_program, result, timeout)	)
       p.start()
       p.join(timeout=timeout + 1	)
       if p.is_alive():
              p.kill()

       if not result:
              result.append("""timed out"""	)

       return {
           "task_id": task_id,
           "passed": result[0] == "passed",
           "result": result[0],
           "completion_id": completion_id,
       }




def 					lowerCamelCase__       (						A__       :					str  ,			A__       :					int  ,			A__       :					Optional[Any]	):





       '''simple docstring'''



       with create_tempdir():
              # These system calls are needed when cleaning up tempdir.
              import os
              import shutil

              __lowerCamelCase   =						shutil.rmtree
              __lowerCamelCase   =						os.rmdir
              __lowerCamelCase   =						os.chdir

              # Disable functionalities that can make destructive changes to the test.
              reliability_guard()

              # Run program.
              try:
                     __lowerCamelCase   =						{}
                     with swallow_io():
                            with time_limit(A__	):
                                   exec(A__  ,			A__	)
                     result.append("""passed"""	)
              except TimeoutException:
                     result.append("""timed out"""	)
              except BaseException as e:
                     result.append(f'failed: {e}'	)

              # Needed for cleaning up.
              __lowerCamelCase   =						rmtree
              __lowerCamelCase   =						rmdir
              __lowerCamelCase   =						chdir




@contextlib.contextmanager
def 					lowerCamelCase__       (						A__       :					Optional[int]	):





       '''simple docstring'''



       def signal_handler(A__       :					Tuple  ,			A__       :					Optional[Any]	):
              raise TimeoutException("""Timed out!"""	)

       signal.setitimer(signal.ITIMER_REAL  ,			A__	)
       signal.signal(signal.SIGALRM  ,			A__	)
       try:
              yield
       finally:
              signal.setitimer(signal.ITIMER_REAL  ,			0	)




@contextlib.contextmanager
def 					lowerCamelCase__       (						):





       '''simple docstring'''



       __lowerCamelCase   =						WriteOnlyStringIO()
       with contextlib.redirect_stdout(A__	):
              with contextlib.redirect_stderr(A__	):
                     with redirect_stdin(A__	):
                            yield




@contextlib.contextmanager
def 					lowerCamelCase__       (						):





       '''simple docstring'''



       with tempfile.TemporaryDirectory() as dirname:
              with chdir(A__	):
                     yield dirname





class     lowerCamelCase__(					__lowerCamelCase):
      pass





class     lowerCamelCase__(					io.StringIO):
      def 			lowerCAmelCase__						(				self: Tuple    ,       *UpperCamelCase_: List[str]    ,       **UpperCamelCase_: Union[str, Any]   ):
             raise OSError
      def 			lowerCAmelCase__						(				self: str    ,       *UpperCamelCase_: Tuple    ,       **UpperCamelCase_: Tuple   ):
             raise OSError
      def 			lowerCAmelCase__						(				self: Any    ,       *UpperCamelCase_: Optional[int]    ,       **UpperCamelCase_: List[str]   ):
             raise OSError




      def 			lowerCAmelCase__						(				self: int    ,       *UpperCamelCase_: List[str]    ,       **UpperCamelCase_: Optional[int]   ):
             return False





class     lowerCamelCase__(					contextlib._RedirectStream):  # type: ignore
      UpperCAmelCase__      :	Dict    		=   'stdin'




@contextlib.contextmanager
def 					lowerCamelCase__       (						A__       :					List[str]	):





       '''simple docstring'''



       if root == ".":
              yield
              return
       __lowerCamelCase   =						os.getcwd()
       os.chdir(A__	)
       try:
              yield
       except BaseException as exc:
              raise exc
       finally:
              os.chdir(A__	)




def 					lowerCamelCase__       (						A__       :					Optional[Any]=None	):





       '''simple docstring'''



       if maximum_memory_bytes is not None:
              import resource

              resource.setrlimit(resource.RLIMIT_AS  ,			(maximum_memory_bytes, maximum_memory_bytes)	)
              resource.setrlimit(resource.RLIMIT_DATA  ,			(maximum_memory_bytes, maximum_memory_bytes)	)
              if not platform.uname().system == "Darwin":
                     resource.setrlimit(resource.RLIMIT_STACK  ,			(maximum_memory_bytes, maximum_memory_bytes)	)

       faulthandler.disable()

       import builtins

       __lowerCamelCase   =						None
       __lowerCamelCase   =						None

       import os

       __lowerCamelCase   =						"""1"""

       __lowerCamelCase   =						None
       __lowerCamelCase   =						None
       __lowerCamelCase   =						None
       __lowerCamelCase   =						None
       __lowerCamelCase   =						None
       __lowerCamelCase   =						None
       __lowerCamelCase   =						None
       __lowerCamelCase   =						None
       __lowerCamelCase   =						None
       __lowerCamelCase   =						None
       __lowerCamelCase   =						None
       __lowerCamelCase   =						None
       __lowerCamelCase   =						None
       __lowerCamelCase   =						None
       __lowerCamelCase   =						None
       __lowerCamelCase   =						None
       __lowerCamelCase   =						None
       __lowerCamelCase   =						None
       __lowerCamelCase   =						None
       __lowerCamelCase   =						None
       __lowerCamelCase   =						None
       __lowerCamelCase   =						None
       __lowerCamelCase   =						None
       __lowerCamelCase   =						None
       __lowerCamelCase   =						None
       __lowerCamelCase   =						None
       __lowerCamelCase   =						None

       import shutil

       __lowerCamelCase   =						None
       __lowerCamelCase   =						None
       __lowerCamelCase   =						None

       import subprocess

       __lowerCamelCase   =						None  # type: ignore

       __lowerCamelCase   =						None

       import sys

       __lowerCamelCase   =						None
       __lowerCamelCase   =						None
       __lowerCamelCase   =						None
       __lowerCamelCase   =						None
       __lowerCamelCase   =						None



import random

import torch
from huggingface_hub import HfApi

from diffusers import UNetaDModel


_lowerCamelCase       :				List[Any]       =			HfApi()

_lowerCamelCase       :				Dict       =			{}
# fmt: off
_lowerCamelCase       :				List[Any]       =			torch.tensor([
    -0.7_5_1_5, -1.6_8_8_3, 0.2_4_2_0, 0.0_3_0_0, 0.6_3_4_7, 1.3_4_3_3, -1.1_7_4_3, -3.7_4_6_7,
    1.2_3_4_2, -2.2_4_8_5, 0.4_6_3_6, 0.8_0_7_6, -0.7_9_9_1, 0.3_9_6_9, 0.8_4_9_8, 0.9_1_8_9,
    -1.8_8_8_7, -3.3_5_2_2, 0.7_6_3_9, 0.2_0_4_0, 0.6_2_7_1, -2.7_1_4_8, -1.6_3_1_6, 3.0_8_3_9,
    0.3_1_8_6, 0.2_7_2_1, -0.9_7_5_9, -1.2_4_6_1, 2.6_2_5_7, 1.3_5_5_7
])
_lowerCamelCase       :				int       =			torch.tensor([
    -2.3_6_3_9, -2.5_3_4_4, 0.0_0_5_4, -0.6_6_7_4, 1.5_9_9_0, 1.0_1_5_8, 0.3_1_2_4, -2.1_4_3_6,
    1.8_7_9_5, -2.5_4_2_9, -0.1_5_6_6, -0.3_9_7_3, 1.2_4_9_0, 2.6_4_4_7, 1.2_2_8_3, -0.5_2_0_8,
    -2.8_1_5_4, -3.5_1_1_9, 2.3_8_3_8, 1.2_0_3_3, 1.7_2_0_1, -2.1_2_5_6, -1.4_5_7_6, 2.7_9_4_8,
    2.4_2_0_4, -0.9_7_5_2, -1.2_5_4_6, 0.8_0_2_7, 3.2_7_5_8, 3.1_3_6_5
])
_lowerCamelCase       :				Optional[int]       =			torch.tensor([
    -0.6_5_3_1, -0.6_8_9_1, -0.3_1_7_2, -0.5_3_7_5, -0.9_1_4_0, -0.5_3_6_7, -0.1_1_7_5, -0.7_8_6_9,
    -0.3_8_0_8, -0.4_5_1_3, -0.2_0_9_8, -0.0_0_8_3, 0.3_1_8_3, 0.5_1_4_0, 0.2_2_4_7, -0.1_3_0_4,
    -0.1_3_0_2, -0.2_8_0_2, -0.2_0_8_4, -0.2_0_2_5, -0.4_9_6_7, -0.4_8_7_3, -0.0_8_6_1, 0.6_9_2_5,
    0.0_2_5_0, 0.1_2_9_0, -0.1_5_4_3, 0.6_3_1_6, 1.0_4_6_0, 1.4_9_4_3
])
_lowerCamelCase       :				Dict       =			torch.tensor([
    0.0_9_1_1, 0.1_1_0_7, 0.0_1_8_2, 0.0_4_3_5, -0.0_8_0_5, -0.0_6_0_8, 0.0_3_8_1, 0.2_1_7_2,
    -0.0_2_8_0, 0.1_3_2_7, -0.0_2_9_9, -0.0_2_5_5, -0.0_0_5_0, -0.1_1_7_0, -0.1_0_4_6, 0.0_3_0_9,
    0.1_3_6_7, 0.1_7_2_8, -0.0_5_3_3, -0.0_7_4_8, -0.0_5_3_4, 0.1_6_2_4, 0.0_3_8_4, -0.1_8_0_5,
    -0.0_7_0_7, 0.0_6_4_2, 0.0_2_2_0, -0.0_1_3_4, -0.1_3_3_3, -0.1_5_0_5
])
_lowerCamelCase       :				Dict       =			torch.tensor([
    0.1_3_2_1, 0.1_3_3_7, 0.0_4_4_0, 0.0_6_2_2, -0.0_5_9_1, -0.0_3_7_0, 0.0_5_0_3, 0.2_1_3_3,
    -0.0_1_7_7, 0.1_4_1_5, -0.0_1_1_6, -0.0_1_1_2, 0.0_0_4_4, -0.0_9_8_0, -0.0_7_8_9, 0.0_3_9_5,
    0.1_5_0_2, 0.1_7_8_5, -0.0_4_8_8, -0.0_5_1_4, -0.0_4_0_4, 0.1_5_3_9, 0.0_4_5_4, -0.1_5_5_9,
    -0.0_6_6_5, 0.0_6_5_9, 0.0_3_8_3, -0.0_0_0_5, -0.1_2_6_6, -0.1_3_8_6
])
_lowerCamelCase       :				List[Any]       =			torch.tensor([
    0.1_1_5_4, 0.1_2_1_8, 0.0_3_0_7, 0.0_5_2_6, -0.0_7_1_1, -0.0_5_4_1, 0.0_3_6_6, 0.2_0_7_8,
    -0.0_2_6_7, 0.1_3_1_7, -0.0_2_2_6, -0.0_1_9_3, -0.0_0_1_4, -0.1_0_5_5, -0.0_9_0_2, 0.0_3_3_0,
    0.1_3_9_1, 0.1_7_0_9, -0.0_5_6_2, -0.0_6_9_3, -0.0_5_6_0, 0.1_4_8_2, 0.0_3_8_1, -0.1_6_8_3,
    -0.0_6_8_1, 0.0_6_6_1, 0.0_3_3_1, -0.0_0_4_6, -0.1_2_6_8, -0.1_4_3_1
])
_lowerCamelCase       :				Dict       =			torch.tensor([
    0.1_1_9_2, 0.1_2_4_0, 0.0_4_1_4, 0.0_6_0_6, -0.0_5_5_7, -0.0_4_1_2, 0.0_4_3_0, 0.2_0_4_2,
    -0.0_2_0_0, 0.1_3_8_5, -0.0_1_1_5, -0.0_1_3_2, 0.0_0_1_7, -0.0_9_6_5, -0.0_8_0_2, 0.0_3_9_8,
    0.1_4_3_3, 0.1_7_4_7, -0.0_4_5_8, -0.0_5_3_3, -0.0_4_0_7, 0.1_5_4_5, 0.0_4_1_9, -0.1_5_7_4,
    -0.0_6_4_5, 0.0_6_2_6, 0.0_3_4_1, -0.0_0_1_0, -0.1_1_9_9, -0.1_3_9_0
])
_lowerCamelCase       :				int       =			torch.tensor([
    0.1_0_7_5, 0.1_0_7_4, 0.0_2_0_5, 0.0_4_3_1, -0.0_7_7_4, -0.0_6_0_7, 0.0_2_9_8, 0.2_0_4_2,
    -0.0_3_2_0, 0.1_2_6_7, -0.0_2_8_1, -0.0_2_5_0, -0.0_0_6_4, -0.1_0_9_1, -0.0_9_4_6, 0.0_2_9_0,
    0.1_3_2_8, 0.1_6_5_0, -0.0_5_8_0, -0.0_7_3_8, -0.0_5_8_6, 0.1_4_4_0, 0.0_3_3_7, -0.1_7_4_6,
    -0.0_7_1_2, 0.0_6_0_5, 0.0_2_5_0, -0.0_0_9_9, -0.1_3_1_6, -0.1_4_7_3
])
_lowerCamelCase       :				int       =			torch.tensor([
    -1.4_5_7_2, -2.0_4_8_1, -0.0_4_1_4, -0.6_0_0_5, 1.4_1_3_6, 0.5_8_4_8, 0.4_0_2_8, -2.7_3_3_0,
    1.2_2_1_2, -2.1_2_2_8, 0.2_1_5_5, 0.4_0_3_9, 0.7_6_6_2, 2.0_5_3_5, 0.7_4_7_7, -0.3_2_4_3,
    -2.1_7_5_8, -2.7_6_4_8, 1.6_9_4_7, 0.7_0_2_6, 1.2_3_3_8, -1.6_0_7_8, -0.8_6_8_2, 2.2_8_1_0,
    1.8_5_7_4, -0.5_7_1_8, -0.5_5_8_6, -0.0_1_8_6, 2.3_4_1_5, 2.1_2_5_1])
_lowerCamelCase       :				Tuple       =			torch.tensor([
    -1.3_6_9_0, -1.9_7_2_0, -0.4_0_9_0, -0.6_9_6_6, 1.4_6_6_0, 0.9_9_3_8, -0.1_3_8_5, -2.7_3_2_4,
    0.7_7_3_6, -1.8_9_1_7, 0.2_9_2_3, 0.4_2_9_3, 0.1_6_9_3, 1.4_1_1_2, 1.1_8_8_7, -0.3_1_8_1,
    -2.2_1_6_0, -2.6_3_8_1, 1.3_1_7_0, 0.8_1_6_3, 0.9_2_4_0, -1.6_5_4_4, -0.6_0_9_9, 2.5_2_5_9,
    1.6_4_3_0, -0.9_0_9_0, -0.9_3_9_2, -0.0_1_2_6, 2.4_2_6_8, 2.3_2_6_6
])
_lowerCamelCase       :				List[str]       =			torch.tensor([
    -1.3_5_2_5, -1.9_6_2_8, -0.3_9_5_6, -0.6_8_6_0, 1.4_6_6_4, 1.0_0_1_4, -0.1_2_5_9, -2.7_2_1_2,
    0.7_7_7_2, -1.8_8_1_1, 0.2_9_9_6, 0.4_3_8_8, 0.1_7_0_4, 1.4_0_2_9, 1.1_7_0_1, -0.3_0_2_7,
    -2.2_0_5_3, -2.6_2_8_7, 1.3_3_5_0, 0.8_1_3_1, 0.9_2_7_4, -1.6_2_9_2, -0.6_0_9_8, 2.5_1_3_1,
    1.6_5_0_5, -0.8_9_5_8, -0.9_2_9_8, -0.0_1_5_1, 2.4_2_5_7, 2.3_3_5_5
])
_lowerCamelCase       :				int       =			torch.tensor([
    -2.0_5_8_5, -2.7_8_9_7, -0.2_8_5_0, -0.8_9_4_0, 1.9_0_5_2, 0.5_7_0_2, 0.6_3_4_5, -3.8_9_5_9,
    1.5_9_3_2, -3.2_3_1_9, 0.1_9_7_4, 0.0_2_8_7, 1.7_5_6_6, 2.6_5_4_3, 0.8_3_8_7, -0.5_3_5_1,
    -3.2_7_3_6, -4.3_3_7_5, 2.9_0_2_9, 1.6_3_9_0, 1.4_6_4_0, -2.1_7_0_1, -1.9_0_1_3, 2.9_3_4_1,
    3.4_9_8_1, -0.6_2_5_5, -1.1_6_4_4, -0.1_5_9_1, 3.7_0_9_7, 3.2_0_6_6
])
_lowerCamelCase       :				Tuple       =			torch.tensor([
    -2.3_1_3_9, -2.5_5_9_4, -0.0_1_9_7, -0.6_7_8_5, 1.7_0_0_1, 1.1_6_0_6, 0.3_0_7_5, -2.1_7_4_0,
    1.8_0_7_1, -2.5_6_3_0, -0.0_9_2_6, -0.3_8_1_1, 1.2_1_1_6, 2.6_2_4_6, 1.2_7_3_1, -0.5_3_9_8,
    -2.8_1_5_3, -3.6_1_4_0, 2.3_8_9_3, 1.3_2_6_2, 1.6_2_5_8, -2.1_8_5_6, -1.3_2_6_7, 2.8_3_9_5,
    2.3_7_7_9, -1.0_6_2_3, -1.2_4_6_8, 0.8_9_5_9, 3.3_3_6_7, 3.2_2_4_3
])
_lowerCamelCase       :				int       =			torch.tensor([
    -2.0_6_2_8, -2.7_6_6_7, -0.2_0_8_9, -0.8_2_6_3, 2.0_5_3_9, 0.5_9_9_2, 0.6_4_9_5, -3.8_3_3_6,
    1.6_0_2_5, -3.2_8_1_7, 0.1_7_2_1, -0.0_6_3_3, 1.7_5_1_6, 2.7_0_3_9, 0.8_1_0_0, -0.5_9_0_8,
    -3.2_1_1_3, -4.4_3_4_3, 2.9_2_5_7, 1.3_6_3_2, 1.5_5_6_2, -2.1_4_8_9, -1.9_8_9_4, 3.0_5_6_0,
    3.3_3_9_6, -0.7_3_2_8, -1.0_4_1_7, 0.0_3_8_3, 3.7_0_9_3, 3.2_3_4_3
])
_lowerCamelCase       :				List[Any]       =			torch.tensor([
    -1.4_5_7_4, -2.0_5_6_9, -0.0_4_7_3, -0.6_1_1_7, 1.4_0_1_8, 0.5_7_6_9, 0.4_1_2_9, -2.7_3_4_4,
    1.2_2_4_1, -2.1_3_9_7, 0.2_0_0_0, 0.3_9_3_7, 0.7_6_1_6, 2.0_4_5_3, 0.7_3_2_4, -0.3_3_9_1,
    -2.1_7_4_6, -2.7_7_4_4, 1.6_9_6_3, 0.6_9_2_1, 1.2_1_8_7, -1.6_1_7_2, -0.8_8_7_7, 2.2_4_3_9,
    1.8_4_7_1, -0.5_8_3_9, -0.5_6_0_5, -0.0_4_6_4, 2.3_2_5_0, 2.1_2_1_9
])
# fmt: on

_lowerCamelCase       :				List[str]       =			api.list_models(filter='''diffusers''')
for mod in models:
			if "google" in mod.author or mod.modelId == "CompVis/ldm-celebahq-256":
						_lowerCamelCase       :				Any       =			'''/home/patrick/google_checkpoints/''' + mod.modelId.split('''/''')[-1]

						print(F'Started running {mod.modelId}!!!')

						if mod.modelId.startswith('''CompVis'''):
									_lowerCamelCase       :				Optional[Any]       =			UNetaDModel.from_pretrained(local_checkpoint, subfolder='''unet''')
						else:
									_lowerCamelCase       :				int       =			UNetaDModel.from_pretrained(local_checkpoint)

						torch.manual_seed(0)
						random.seed(0)

						_lowerCamelCase       :				Union[str, Any]       =			torch.randn(1, model.config.in_channels, model.config.sample_size, model.config.sample_size)
						_lowerCamelCase       :				int       =			torch.tensor([10] * noise.shape[0])
						with torch.no_grad():
									_lowerCamelCase       :				int       =			model(noise, time_step).sample

						assert torch.allclose(
						    logits[0, 0, 0, :30], results['''_'''.join('''_'''.join(mod.modelId.split('''/''')).split('''-'''))], atol=1E-3
						)
						print(F'{mod.modelId} has passed successfully!!!')