
"""simple docstring"""

import random
import unittest

import torch

from diffusers import IFImgaImgSuperResolutionPipeline
from diffusers.utils import floats_tensor
from diffusers.utils.import_utils import is_xformers_available
from diffusers.utils.testing_utils import skip_mps, torch_device

from ..pipeline_params import TEXT_GUIDED_IMAGE_VARIATION_BATCH_PARAMS, TEXT_GUIDED_IMAGE_VARIATION_PARAMS
from ..test_pipelines_common import PipelineTesterMixin
from . import IFPipelineTesterMixin

@skip_mps
class __lowerCAmelCase		(				__SCREAMING_SNAKE_CASE      ,  __SCREAMING_SNAKE_CASE      ,  unittest.TestCase      ):
     lowercase						       =						IFImgaImgSuperResolutionPipeline
     lowercase						       =						TEXT_GUIDED_IMAGE_VARIATION_PARAMS - {"width", "height"}
     lowercase						       =						TEXT_GUIDED_IMAGE_VARIATION_BATCH_PARAMS.union({"original_image"}      )
     lowercase						       =						PipelineTesterMixin.required_optional_params - {"latents"}





     def 						UpperCAmelCase (     self				):

      '''simple docstring'''




      return self._get_superresolution_dummy_components()





     def 						UpperCAmelCase (     self     ,					__UpperCAmelCase     ,					__UpperCAmelCase=0				):

      '''simple docstring'''




      if str(__UpperCAmelCase				).startswith('mps'				):
       __UpperCamelCase      =	torch.manual_seed(__UpperCAmelCase				)
      else:
       __UpperCamelCase      =	torch.Generator(device=__UpperCAmelCase				).manual_seed(__UpperCAmelCase				)

      __UpperCamelCase      =	floats_tensor((1, 3, 32, 32)     ,					rng=random.Random(__UpperCAmelCase				)				).to(__UpperCAmelCase				)
      __UpperCamelCase      =	floats_tensor((1, 3, 16, 16)     ,					rng=random.Random(__UpperCAmelCase				)				).to(__UpperCAmelCase				)

      __UpperCamelCase      =	{
          'prompt': 'A painting of a squirrel eating a burger',
          'image': image,
          'original_image': original_image,
          'generator': generator,
          'num_inference_steps': 2,
          'output_type': 'numpy',
      }

      return inputs





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

      '''simple docstring'''




      self._test_xformers_attention_forwardGenerator_pass(expected_max_diff=1E-3				)





     def 						UpperCAmelCase (     self				):

      '''simple docstring'''




      self._test_save_load_optional_components()





     @unittest.skipIf(torch_device != 'cuda'     ,					reason='float16 requires CUDA'				)
     def 						UpperCAmelCase (     self				):

      '''simple docstring'''




      super().test_save_load_floataa(expected_max_diff=1E-1				)





     def 						UpperCAmelCase (     self				):

      '''simple docstring'''




      self._test_attention_slicing_forward_pass(expected_max_diff=1E-2				)





     def 						UpperCAmelCase (     self				):

      '''simple docstring'''




      self._test_save_load_local()







     def 						UpperCAmelCase (     self				):

      '''simple docstring'''




      self._test_inference_batch_single_identical(
          expected_max_diff=1E-2     ,					)





"""simple docstring"""

import warnings

from ...utils import logging
from .image_processing_donut import DonutImageProcessor


UpperCamelCase     :    Optional[int]       =			logging.get_logger(__name__)

class __lowerCAmelCase		(				__SCREAMING_SNAKE_CASE      ):





     def __init__(     self     ,					*__UpperCAmelCase     ,					**__UpperCAmelCase				):

      '''simple docstring'''




      warnings.warn(
          'The class DonutFeatureExtractor is deprecated and will be removed in version 5 of Transformers. Please'
          ' use DonutImageProcessor instead.'     ,					__UpperCAmelCase     ,					)
      super().__init__(*__UpperCAmelCase     ,					**__UpperCAmelCase				)



