


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    UpperCAmelCase_	(							_SCREAMING_SNAKE_CASE,     _SCREAMING_SNAKE_CASE,     unittest.TestCase):
       '''simple docstring'''
       __UpperCamelCase      :     Optional[int]							=					IFImgaImgSuperResolutionPipeline
       __UpperCamelCase      :     Union[str, Any]							=					TEXT_GUIDED_IMAGE_VARIATION_PARAMS - {"width", "height"}
       __UpperCamelCase      :     List[str]							=					TEXT_GUIDED_IMAGE_VARIATION_BATCH_PARAMS.union({"original_image"})
       __UpperCamelCase      :     Any							=					PipelineTesterMixin.required_optional_params - {"latents"}






       def  _lowercase   (     self						):




              """simple docstring"""




              return self._get_superresolution_dummy_components()






       def  _lowercase   (     self ,					__SCREAMING_SNAKE_CASE ,					__SCREAMING_SNAKE_CASE=0						):




              """simple docstring"""




              if str(A_						).startswith('''mps'''						):
                     UpperCamelCase    :	List[str]   	=		torch.manual_seed(A_						)
              else:
                     UpperCamelCase    :	List[Any]   	=		torch.Generator(device=A_						).manual_seed(A_						)

              UpperCamelCase    :	Optional[Any]   	=		floats_tensor((1, 3, 32, 32) ,					rng=random.Random(A_						)						).to(A_						)
              UpperCamelCase    :	Any   	=		floats_tensor((1, 3, 16, 16) ,					rng=random.Random(A_						)						).to(A_						)

              UpperCamelCase    :	str   	=		{
                  '''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  _lowercase   (     self						):




              """simple docstring"""




              self._test_xformers_attention_forwardGenerator_pass(expected_max_diff=1e-3						)






       def  _lowercase   (     self						):




              """simple docstring"""




              self._test_save_load_optional_components()






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




              """simple docstring"""




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






       def  _lowercase   (     self						):




              """simple docstring"""




              self._test_attention_slicing_forward_pass(expected_max_diff=1e-2						)






       def  _lowercase   (     self						):




              """simple docstring"""




              self._test_save_load_local()






       def  _lowercase   (     self						):




              """simple docstring"""




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










from collections import OrderedDict
from typing import Mapping

from packaging import version

from ...configuration_utils import PretrainedConfig
from ...onnx import OnnxConfig
from ...utils import logging


__UpperCAmelCase : str 			=				logging.get_logger(__name__)

__UpperCAmelCase : Dict 			=				{
    "hustvl/yolos-small": "https://huggingface.co/hustvl/yolos-small/resolve/main/config.json",
    # See all YOLOS models at https://huggingface.co/models?filter=yolos
}



class    UpperCAmelCase_	(							_a):
       '''simple docstring'''
       __UpperCamelCase      :     Optional[int]							=					"yolos"






       def __init__(     self ,					__SCREAMING_SNAKE_CASE=768 ,					__SCREAMING_SNAKE_CASE=12 ,					__SCREAMING_SNAKE_CASE=12 ,					__SCREAMING_SNAKE_CASE=3_072 ,					__SCREAMING_SNAKE_CASE="gelu" ,					__SCREAMING_SNAKE_CASE=0.0 ,					__SCREAMING_SNAKE_CASE=0.0 ,					__SCREAMING_SNAKE_CASE=0.02 ,					__SCREAMING_SNAKE_CASE=1e-12 ,					__SCREAMING_SNAKE_CASE=[512, 864] ,					__SCREAMING_SNAKE_CASE=16 ,					__SCREAMING_SNAKE_CASE=3 ,					__SCREAMING_SNAKE_CASE=True ,					__SCREAMING_SNAKE_CASE=100 ,					__SCREAMING_SNAKE_CASE=True ,					__SCREAMING_SNAKE_CASE=False ,					__SCREAMING_SNAKE_CASE=1 ,					__SCREAMING_SNAKE_CASE=5 ,					__SCREAMING_SNAKE_CASE=2 ,					__SCREAMING_SNAKE_CASE=5 ,					__SCREAMING_SNAKE_CASE=2 ,					__SCREAMING_SNAKE_CASE=0.1 ,					**__SCREAMING_SNAKE_CASE ,					):




              """simple docstring"""




              super().__init__(**__SCREAMING_SNAKE_CASE						)

              UpperCamelCase    :	Tuple   	=		hidden_size
              UpperCamelCase    :	List[Any]   	=		num_hidden_layers
              UpperCamelCase    :	int   	=		num_attention_heads
              UpperCamelCase    :	Dict   	=		intermediate_size
              UpperCamelCase    :	Dict   	=		hidden_act
              UpperCamelCase    :	int   	=		hidden_dropout_prob
              UpperCamelCase    :	Any   	=		attention_probs_dropout_prob
              UpperCamelCase    :	Optional[Any]   	=		initializer_range
              UpperCamelCase    :	List[Any]   	=		layer_norm_eps
              UpperCamelCase    :	int   	=		image_size
              UpperCamelCase    :	Any   	=		patch_size
              UpperCamelCase    :	str   	=		num_channels
              UpperCamelCase    :	str   	=		qkv_bias
              UpperCamelCase    :	Tuple   	=		num_detection_tokens
              UpperCamelCase    :	List[Any]   	=		use_mid_position_embeddings
              UpperCamelCase    :	Dict   	=		auxiliary_loss
              # Hungarian matcher
              UpperCamelCase    :	Optional[Any]   	=		class_cost
              UpperCamelCase    :	Union[str, Any]   	=		bbox_cost
              UpperCamelCase    :	Any   	=		giou_cost
              # Loss coefficients
              UpperCamelCase    :	List[Any]   	=		bbox_loss_coefficient
              UpperCamelCase    :	Union[str, Any]   	=		giou_loss_coefficient
              UpperCamelCase    :	Dict   	=		eos_coefficient




class    UpperCAmelCase_	(							_a):
       '''simple docstring'''
       __UpperCamelCase      :     List[str]							=					version.parse("1.11")






       @property
       def  _lowercase   (     self						):




              """simple docstring"""




              return OrderedDict(
                  [
                      ('''pixel_values''', {0: '''batch''', 1: '''num_channels''', 2: '''height''', 3: '''width'''}),
                  ]						)






       @property
       def  _lowercase   (     self						):




              """simple docstring"""




              return 1e-4






       @property
       def  _lowercase   (     self						):




              """simple docstring"""




              return 12

