

from dataclasses import dataclass
from enum import Enum
from typing import List, Optional, Union

import numpy as np
import PIL
from PIL import Image

from ...utils import BaseOutput, is_torch_available, is_transformers_available


@dataclass
class      lowerCamelCase_ (			_lowerCAmelCase):
 _lowerCAmelCase									=	{
     '''sld_warmup_steps''': 15,
     '''sld_guidance_scale''': 20,
     '''sld_threshold''': 0.0,
     '''sld_momentum_scale''': 0.0,
     '''sld_mom_beta''': 0.0,
 }
 _lowerCAmelCase									=	{
     '''sld_warmup_steps''': 10,
     '''sld_guidance_scale''': 10_00,
     '''sld_threshold''': 0.01,
     '''sld_momentum_scale''': 0.3,
     '''sld_mom_beta''': 0.4,
 }
 _lowerCAmelCase									=	{
     '''sld_warmup_steps''': 7,
     '''sld_guidance_scale''': 20_00,
     '''sld_threshold''': 0.0_25,
     '''sld_momentum_scale''': 0.5,
     '''sld_mom_beta''': 0.7,
 }
 _lowerCAmelCase									=	{
     '''sld_warmup_steps''': 0,
     '''sld_guidance_scale''': 50_00,
     '''sld_threshold''': 1.0,
     '''sld_momentum_scale''': 0.5,
     '''sld_mom_beta''': 0.7,
 }



@dataclass
class      lowerCamelCase_ (			_lowerCAmelCase):
 _lowerCAmelCase									=	42
 _lowerCAmelCase									=	42
 _lowerCAmelCase									=	42
 _lowerCAmelCase									=	42


if is_transformers_available() and is_torch_available():
      from .pipeline_stable_diffusion_safe import StableDiffusionPipelineSafe
      from .safety_checker import SafeStableDiffusionSafetyChecker







import unittest

import torch

from diffusers import DDIMScheduler, TextToVideoZeroPipeline
from diffusers.utils import load_pt, require_torch_gpu, slow

from ..test_pipelines_common import assert_mean_pixel_difference







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




							def 					A__ (							self):
												lowercase		      =		'''runwayml/stable-diffusion-v1-5'''
												lowercase		      =		TextToVideoZeroPipeline.from_pretrained(A__  ,torch_dtype=torch.floataa).to('''cuda''')
												lowercase		      =		DDIMScheduler.from_config(pipe.scheduler.config)
												lowercase		      =		torch.Generator(device='''cuda''').manual_seed(0)

												lowercase		      =		'''A bear is playing a guitar on Times Square'''
												lowercase		      =		pipe(prompt=A__  ,generator=A__).images

												lowercase		      =		load_pt(
												    '''https://huggingface.co/datasets/hf-internal-testing/diffusers-images/resolve/main/text-to-video/A bear is playing a guitar on Times Square.pt''')

												assert_mean_pixel_difference(A__  ,A__)




