"""simple docstring"""


import random
import unittest

import torch

from diffusers import IFSuperResolutionPipeline
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						(     __lowerCAmelCase				,				__lowerCAmelCase				,				unittest.TestCase     ):
				A__				:       Any  							=	IFSuperResolutionPipeline
				A__				:       Tuple  							=	TEXT_GUIDED_IMAGE_VARIATION_PARAMS - {'''width''', '''height'''}
				A__				:       Optional[int]  							=	TEXT_GUIDED_IMAGE_VARIATION_BATCH_PARAMS
				A__				:       List[Any]  							=	PipelineTesterMixin.required_optional_params - {'''latents'''}

				def 		_a     (				self				):
										return self._get_superresolution_dummy_components()

				def 		_a     (				self     ,			_lowerCamelCase     ,			_lowerCamelCase=0				):
										if str(_lowerCamelCase				).startswith("mps"				):
																lowerCamelCase__ =torch.manual_seed(_lowerCamelCase				)
										else:
																lowerCamelCase__ =torch.Generator(device=_lowerCamelCase				).manual_seed(_lowerCamelCase				)

										lowerCamelCase__ =floats_tensor((1, 3, 32, 32)     ,			rng=random.Random(_lowerCamelCase				)				).to(_lowerCamelCase				)

										lowerCamelCase__ ={
										    "prompt": "A painting of a squirrel eating a burger",
										    "image": 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 		_a     (				self				):
										self._test_xformers_attention_forwardGenerator_pass(expected_max_diff=1E-3				)

				def 		_a     (				self				):
										self._test_save_load_optional_components()

				@unittest.skipIf(torch_device != "cuda"     ,			reason="float16 requires CUDA"				)
				def 		_a     (				self				):
										# Due to non-determinism in save load of the hf-internal-testing/tiny-random-t5 text encoder
										super().test_save_load_floataa(expected_max_diff=1E-1				)

				def 		_a     (				self				):
										self._test_attention_slicing_forward_pass(expected_max_diff=1E-2				)

				def 		_a     (				self				):
										self._test_save_load_local()






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



"""simple docstring"""


from typing import TYPE_CHECKING

from ...utils import (
    OptionalDependencyNotAvailable,
    _LazyModule,
    is_tf_available,
    is_tokenizers_available,
    is_torch_available,
)


a							={
    'configuration_openai': ['OPENAI_GPT_PRETRAINED_CONFIG_ARCHIVE_MAP', 'OpenAIGPTConfig'],
    'tokenization_openai': ['OpenAIGPTTokenizer'],
}

try:
	if not is_tokenizers_available():
		raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
	pass
else:
	a							=['OpenAIGPTTokenizerFast']

try:
	if not is_torch_available():
		raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
	pass
else:
	a							=[
	    'OPENAI_GPT_PRETRAINED_MODEL_ARCHIVE_LIST',
	    'OpenAIGPTDoubleHeadsModel',
	    'OpenAIGPTForSequenceClassification',
	    'OpenAIGPTLMHeadModel',
	    'OpenAIGPTModel',
	    'OpenAIGPTPreTrainedModel',
	    'load_tf_weights_in_openai_gpt',
	]

try:
	if not is_tf_available():
		raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
	pass
else:
	a							=[
	    'TF_OPENAI_GPT_PRETRAINED_MODEL_ARCHIVE_LIST',
	    'TFOpenAIGPTDoubleHeadsModel',
	    'TFOpenAIGPTForSequenceClassification',
	    'TFOpenAIGPTLMHeadModel',
	    'TFOpenAIGPTMainLayer',
	    'TFOpenAIGPTModel',
	    'TFOpenAIGPTPreTrainedModel',
	]


if TYPE_CHECKING:
	from .configuration_openai import OPENAI_GPT_PRETRAINED_CONFIG_ARCHIVE_MAP, OpenAIGPTConfig
	from .tokenization_openai import OpenAIGPTTokenizer

	try:
		if not is_tokenizers_available():
			raise OptionalDependencyNotAvailable()
	except OptionalDependencyNotAvailable:
		pass
	else:
		from .tokenization_openai_fast import OpenAIGPTTokenizerFast

	try:
		if not is_torch_available():
			raise OptionalDependencyNotAvailable()
	except OptionalDependencyNotAvailable:
		pass
	else:
		from .modeling_openai import (
		    OPENAI_GPT_PRETRAINED_MODEL_ARCHIVE_LIST,
		    OpenAIGPTDoubleHeadsModel,
		    OpenAIGPTForSequenceClassification,
		    OpenAIGPTLMHeadModel,
		    OpenAIGPTModel,
		    OpenAIGPTPreTrainedModel,
		    load_tf_weights_in_openai_gpt,
		)

	try:
		if not is_tf_available():
			raise OptionalDependencyNotAvailable()
	except OptionalDependencyNotAvailable:
		pass
	else:
		from .modeling_tf_openai import (
		    TF_OPENAI_GPT_PRETRAINED_MODEL_ARCHIVE_LIST,
		    TFOpenAIGPTDoubleHeadsModel,
		    TFOpenAIGPTForSequenceClassification,
		    TFOpenAIGPTLMHeadModel,
		    TFOpenAIGPTMainLayer,
		    TFOpenAIGPTModel,
		    TFOpenAIGPTPreTrainedModel,
		)

else:
	import sys

	a							=_LazyModule(__name__, globals()['__file__'], _import_structure, module_spec=__spec__)


