





import pytest

import datasets.config
from datasets.utils.info_utils import is_small_dataset
@pytest.mark.parametrize("dataset_size"       ,       [None, 400 * 2**20, 600 * 2**20]						)
@pytest.mark.parametrize("input_in_memory_max_size"       ,       ["default", 0, 100 * 2**20, 900 * 2**20]						)
def      _A       (		SCREAMING_SNAKE_CASE     :   Union[str, Any]       ,       SCREAMING_SNAKE_CASE     :   Optional[Any]       ,       SCREAMING_SNAKE_CASE     :   Any						):





  """simple docstring"""



  if input_in_memory_max_size != "default":
    monkeypatch.setattr(datasets.config       ,       "IN_MEMORY_MAX_SIZE"       ,       SCREAMING_SNAKE_CASE						)
  a__	:					Union[str, Any]										=datasets.config.IN_MEMORY_MAX_SIZE
  if input_in_memory_max_size == "default":
    assert in_memory_max_size == 0
  else:
    assert in_memory_max_size == input_in_memory_max_size
  if dataset_size and in_memory_max_size:
    a__	:					List[str]										=dataset_size < in_memory_max_size
  else:
    a__	:					Any										=False
  a__	:					List[str]										=is_small_dataset(SCREAMING_SNAKE_CASE						)
  assert result == expected







"""simple docstring"""






import gc
import tempfile
import unittest

import numpy as np
import torch

from diffusers import VersatileDiffusionTextToImagePipeline
from diffusers.utils.testing_utils import nightly, require_torch_gpu, torch_device


__A			   = False


class     UpperCAmelCase						(unittest.TestCase  ):



    """simple docstring"""

    pass



@nightly
@require_torch_gpu
class     UpperCAmelCase						(unittest.TestCase  ):



    """simple docstring"""

    def _snake_case			(   self							):
       # clean up the VRAM after each test
       super().tearDown()
       gc.collect()
       torch.cuda.empty_cache()






    def _snake_case			(   self							):
       lowercase__:   Dict					=      VersatileDiffusionTextToImagePipeline.from_pretrained('''shi-labs/versatile-diffusion'''							)
       # remove text_unet
       pipe.remove_unused_weights()
       pipe.to(_UpperCAmelCase							)
       pipe.set_progress_bar_config(disable=_UpperCAmelCase							)

       lowercase__:   List[str]					=      '''A painting of a squirrel eating a burger '''
       lowercase__:   str					=      torch.manual_seed(0							)
       lowercase__:   Union[str, Any]					=      pipe(
           prompt=_UpperCAmelCase    ,			generator=_UpperCAmelCase    ,			guidance_scale=7.5    ,			num_inference_steps=2    ,			output_type='''numpy'''							).images

       with tempfile.TemporaryDirectory() as tmpdirname:
          pipe.save_pretrained(_UpperCAmelCase							)
          lowercase__:   Optional[Any]					=      VersatileDiffusionTextToImagePipeline.from_pretrained(_UpperCAmelCase							)
       pipe.to(_UpperCAmelCase							)
       pipe.set_progress_bar_config(disable=_UpperCAmelCase							)

       lowercase__:   Optional[int]					=      generator.manual_seed(0							)
       lowercase__:   List[str]					=      pipe(
           prompt=_UpperCAmelCase    ,			generator=_UpperCAmelCase    ,			guidance_scale=7.5    ,			num_inference_steps=2    ,			output_type='''numpy'''							).images

       assert np.abs(image - new_image							).sum() < 1e-5, "Models don't have the same forward pass"






    def _snake_case			(   self							):
       lowercase__:   Dict					=      VersatileDiffusionTextToImagePipeline.from_pretrained(
           '''shi-labs/versatile-diffusion'''    ,			torch_dtype=torch.floataa							)
       pipe.to(_UpperCAmelCase							)
       pipe.set_progress_bar_config(disable=_UpperCAmelCase							)

       lowercase__:   Tuple					=      '''A painting of a squirrel eating a burger '''
       lowercase__:   Optional[Any]					=      torch.manual_seed(0							)
       lowercase__:   Tuple					=      pipe(
           prompt=_UpperCAmelCase    ,			generator=_UpperCAmelCase    ,			guidance_scale=7.5    ,			num_inference_steps=50    ,			output_type='''numpy'''							).images

       lowercase__:   Union[str, Any]					=      image[0, 253:256, 253:256, -1]

       assert image.shape == (1, 512, 512, 3)
       lowercase__:   Any					=      np.array([0.3_367, 0.3_169, 0.2_656, 0.3_870, 0.4_790, 0.3_796, 0.4_009, 0.4_878, 0.4_778]							)

       assert np.abs(image_slice.flatten() - expected_slice							).max() < 1e-2
