




import os
import shutil
import sys
import tempfile
import unittest
from pathlib import Path

import pytest

import transformers
from transformers import (
    BERT_PRETRAINED_CONFIG_ARCHIVE_MAP,
    GPT2_PRETRAINED_CONFIG_ARCHIVE_MAP,
    AutoTokenizer,
    BertConfig,
    BertTokenizer,
    BertTokenizerFast,
    CTRLTokenizer,
    GPTaTokenizer,
    GPTaTokenizerFast,
    PreTrainedTokenizerFast,
    RobertaTokenizer,
    RobertaTokenizerFast,
    is_tokenizers_available,
)
from transformers.models.auto.configuration_auto import CONFIG_MAPPING, AutoConfig
from transformers.models.auto.tokenization_auto import (
    TOKENIZER_MAPPING,
    get_tokenizer_config,
    tokenizer_class_from_name,
)
from transformers.models.roberta.configuration_roberta import RobertaConfig
from transformers.testing_utils import (
    DUMMY_DIFF_TOKENIZER_IDENTIFIER,
    DUMMY_UNKNOWN_IDENTIFIER,
    SMALL_MODEL_IDENTIFIER,
    RequestCounter,
    require_tokenizers,
    slow,
)


sys.path.append(str(Path(__file__).parent.parent.parent.parent / """utils"""))

from test_module.custom_configuration import CustomConfig  # noqa E402
from test_module.custom_tokenization import CustomTokenizer  # noqa E402


if is_tokenizers_available():
		from test_module.custom_tokenization_fast import CustomTokenizerFast


class 							__UpperCamelCase			( unittest.TestCase  ):





				'''simple docstring'''



				def       __snake_case		( self						):
											lowerCAmelCase   =			0



				@slow
				def       __snake_case		( self						):
											for model_name in (x for x in BERT_PRETRAINED_CONFIG_ARCHIVE_MAP.keys() if "japanese" not in x):
																		lowerCAmelCase   =			AutoTokenizer.from_pretrained(UpperCAmelCase_						)
																		self.assertIsNotNone(UpperCAmelCase_						)
																		self.assertIsInstance(UpperCAmelCase_       , (BertTokenizer, BertTokenizerFast)						)
																		self.assertGreater(len(UpperCAmelCase_						)       , 0						)

											for model_name in GPT2_PRETRAINED_CONFIG_ARCHIVE_MAP.keys():
																		lowerCAmelCase   =			AutoTokenizer.from_pretrained(UpperCAmelCase_						)
																		self.assertIsNotNone(UpperCAmelCase_						)
																		self.assertIsInstance(UpperCAmelCase_       , (GPTaTokenizer, GPTaTokenizerFast)						)
																		self.assertGreater(len(UpperCAmelCase_						)       , 0						)



				def       __snake_case		( self						):
											lowerCAmelCase   =			AutoTokenizer.from_pretrained(UpperCAmelCase_						)
											self.assertIsInstance(UpperCAmelCase_       , (BertTokenizer, BertTokenizerFast)						)
											self.assertEqual(tokenizer.vocab_size       , 12						)



				def       __snake_case		( self						):
											lowerCAmelCase   =			AutoTokenizer.from_pretrained(UpperCAmelCase_						)
											self.assertIsInstance(UpperCAmelCase_       , (RobertaTokenizer, RobertaTokenizerFast)						)
											self.assertEqual(tokenizer.vocab_size       , 20						)



				def       __snake_case		( self						):
											lowerCAmelCase   =			AutoConfig.from_pretrained(UpperCAmelCase_						)
											self.assertIsInstance(UpperCAmelCase_       , UpperCAmelCase_						)
											# Check that tokenizer_type ≠ model_type
											lowerCAmelCase   =			AutoTokenizer.from_pretrained(UpperCAmelCase_       , config=UpperCAmelCase_						)
											self.assertIsInstance(UpperCAmelCase_       , (BertTokenizer, BertTokenizerFast)						)
											self.assertEqual(tokenizer.vocab_size       , 12						)



				def       __snake_case		( self						):
											with tempfile.TemporaryDirectory() as tmp_dir:
																		shutil.copy('''./tests/fixtures/vocab.txt'''       , os.path.join(UpperCAmelCase_       , '''vocab.txt'''						)						)

																		lowerCAmelCase   =			AutoTokenizer.from_pretrained(UpperCAmelCase_       , tokenizer_type='''bert'''       , use_fast=UpperCAmelCase_						)
																		self.assertIsInstance(UpperCAmelCase_       , UpperCAmelCase_						)

											with tempfile.TemporaryDirectory() as tmp_dir:
																		shutil.copy('''./tests/fixtures/vocab.json'''       , os.path.join(UpperCAmelCase_       , '''vocab.json'''						)						)
																		shutil.copy('''./tests/fixtures/merges.txt'''       , os.path.join(UpperCAmelCase_       , '''merges.txt'''						)						)

																		lowerCAmelCase   =			AutoTokenizer.from_pretrained(UpperCAmelCase_       , tokenizer_type='''gpt2'''       , use_fast=UpperCAmelCase_						)
																		self.assertIsInstance(UpperCAmelCase_       , UpperCAmelCase_						)



				@require_tokenizers
				def       __snake_case		( self						):
											with tempfile.TemporaryDirectory() as tmp_dir:
																		shutil.copy('''./tests/fixtures/vocab.txt'''       , os.path.join(UpperCAmelCase_       , '''vocab.txt'''						)						)

																		lowerCAmelCase   =			AutoTokenizer.from_pretrained(UpperCAmelCase_       , tokenizer_type='''bert'''						)
																		self.assertIsInstance(UpperCAmelCase_       , UpperCAmelCase_						)

											with tempfile.TemporaryDirectory() as tmp_dir:
																		shutil.copy('''./tests/fixtures/vocab.json'''       , os.path.join(UpperCAmelCase_       , '''vocab.json'''						)						)
																		shutil.copy('''./tests/fixtures/merges.txt'''       , os.path.join(UpperCAmelCase_       , '''merges.txt'''						)						)

																		lowerCAmelCase   =			AutoTokenizer.from_pretrained(UpperCAmelCase_       , tokenizer_type='''gpt2'''						)
																		self.assertIsInstance(UpperCAmelCase_       , UpperCAmelCase_						)



				def       __snake_case		( self						):
											with pytest.raises(UpperCAmelCase_						):
																		AutoTokenizer.from_pretrained('''./'''       , tokenizer_type='''xxx'''						)



				@require_tokenizers
				def       __snake_case		( self						):
											for tokenizer_class in [BertTokenizer, BertTokenizerFast, AutoTokenizer]:
																		lowerCAmelCase   =			tokenizer_class.from_pretrained('''wietsedv/bert-base-dutch-cased'''						)
																		self.assertIsInstance(UpperCAmelCase_       , (BertTokenizer, BertTokenizerFast)						)

																		if isinstance(UpperCAmelCase_       , UpperCAmelCase_						):
																									self.assertEqual(tokenizer.basic_tokenizer.do_lower_case       , UpperCAmelCase_						)
																		else:
																									self.assertEqual(tokenizer.do_lower_case       , UpperCAmelCase_						)

																		self.assertEqual(tokenizer.model_max_length       , 5_12						)



				@require_tokenizers
				def       __snake_case		( self						):
											for tokenizer_class in [BertTokenizer, BertTokenizerFast, AutoTokenizer]:
																		with self.assertRaisesRegex(
																		    UpperCAmelCase_       , '''julien-c/herlolip-not-exists is not a local folder and is not a valid model identifier'''       , ):
																									lowerCAmelCase   =			tokenizer_class.from_pretrained('''julien-c/herlolip-not-exists'''						)



				def       __snake_case		( self						):
											# tests: https://github.com/huggingface/transformers/pull/13251
											# 1. models with `-`, e.g. xlm-roberta -> xlm_roberta
											# 2. models that don't remap 1-1 from model-name to model file, e.g., openai-gpt -> openai
											lowerCAmelCase   =			TOKENIZER_MAPPING.values()
											lowerCAmelCase   =			[]

											for slow_tok, fast_tok in tokenizers:
																		if slow_tok is not None:
																									tokenizer_names.append(slow_tok.__name__						)

																		if fast_tok is not None:
																									tokenizer_names.append(fast_tok.__name__						)

											for tokenizer_name in tokenizer_names:
																		# must find the right class
																		tokenizer_class_from_name(UpperCAmelCase_						)



				@require_tokenizers
				def       __snake_case		( self						):
											self.assertIsInstance(AutoTokenizer.from_pretrained('''bert-base-cased'''       , use_fast=UpperCAmelCase_						)       , UpperCAmelCase_						)
											self.assertIsInstance(AutoTokenizer.from_pretrained('''bert-base-cased'''						)       , UpperCAmelCase_						)



				@require_tokenizers
				def       __snake_case		( self						):
											lowerCAmelCase   =			AutoTokenizer.from_pretrained('''distilbert-base-uncased'''       , do_lower_case=UpperCAmelCase_						)
											lowerCAmelCase   =			'''Hello, world. How are you?'''
											lowerCAmelCase   =			tokenizer.tokenize(UpperCAmelCase_						)
											self.assertEqual('''[UNK]'''       , tokens[0]						)

											lowerCAmelCase   =			AutoTokenizer.from_pretrained('''microsoft/mpnet-base'''       , do_lower_case=UpperCAmelCase_						)
											lowerCAmelCase   =			tokenizer.tokenize(UpperCAmelCase_						)
											self.assertEqual('''[UNK]'''       , tokens[0]						)



				@require_tokenizers
				def       __snake_case		( self						):
											lowerCAmelCase   =			AutoTokenizer.from_pretrained('''robot-test/dummy-tokenizer-fast-with-model-config'''						)
											self.assertEqual(type(UpperCAmelCase_						)       , UpperCAmelCase_						)
											self.assertEqual(tokenizer.model_max_length       , 5_12						)
											self.assertEqual(tokenizer.vocab_size       , 3_00_00						)
											self.assertEqual(tokenizer.unk_token       , '''[UNK]'''						)
											self.assertEqual(tokenizer.padding_side       , '''right'''						)
											self.assertEqual(tokenizer.truncation_side       , '''right'''						)



				def       __snake_case		( self						):
											lowerCAmelCase   =			AutoTokenizer.from_pretrained(UpperCAmelCase_						)
											self.assertIsInstance(UpperCAmelCase_       , (BertTokenizer, BertTokenizerFast)						)
											with tempfile.TemporaryDirectory() as tmp_dir:
																		tokenizer.save_pretrained(UpperCAmelCase_						)
																		lowerCAmelCase   =			AutoTokenizer.from_pretrained(UpperCAmelCase_						)

											self.assertIsInstance(UpperCAmelCase_       , tokenizer.__class__						)
											self.assertEqual(tokenizera.vocab_size       , 12						)



				def       __snake_case		( self						):
											lowerCAmelCase   =			AutoTokenizer.from_pretrained('''ctrl'''						)
											# There is no fast CTRL so this always gives us a slow tokenizer.
											self.assertIsInstance(UpperCAmelCase_       , UpperCAmelCase_						)



				def       __snake_case		( self						):
											# Check we can load the tokenizer config of an online model.
											lowerCAmelCase   =			get_tokenizer_config('''bert-base-cased'''						)
											lowerCAmelCase   =			config.pop('''_commit_hash'''       , UpperCAmelCase_						)
											# If we ever update bert-base-cased tokenizer config, this dict here will need to be updated.
											self.assertEqual(UpperCAmelCase_       , {'''do_lower_case''': False}						)

											# This model does not have a tokenizer_config so we get back an empty dict.
											lowerCAmelCase   =			get_tokenizer_config(UpperCAmelCase_						)
											self.assertDictEqual(UpperCAmelCase_       , {}						)

											# A tokenizer saved with `save_pretrained` always creates a tokenizer config.
											lowerCAmelCase   =			AutoTokenizer.from_pretrained(UpperCAmelCase_						)
											with tempfile.TemporaryDirectory() as tmp_dir:
																		tokenizer.save_pretrained(UpperCAmelCase_						)
																		lowerCAmelCase   =			get_tokenizer_config(UpperCAmelCase_						)

											# Check the class of the tokenizer was properly saved (note that it always saves the slow class).
											self.assertEqual(config['''tokenizer_class''']       , '''BertTokenizer'''						)



				def       __snake_case		( self						):
											try:
																		AutoConfig.register('''custom'''       , UpperCAmelCase_						)

																		AutoTokenizer.register(UpperCAmelCase_       , slow_tokenizer_class=UpperCAmelCase_						)
																		# Trying to register something existing in the Transformers library will raise an error
																		with self.assertRaises(UpperCAmelCase_						):
																									AutoTokenizer.register(UpperCAmelCase_       , slow_tokenizer_class=UpperCAmelCase_						)

																		lowerCAmelCase   =			CustomTokenizer.from_pretrained(UpperCAmelCase_						)
																		with tempfile.TemporaryDirectory() as tmp_dir:
																									tokenizer.save_pretrained(UpperCAmelCase_						)

																									lowerCAmelCase   =			AutoTokenizer.from_pretrained(UpperCAmelCase_						)
																									self.assertIsInstance(UpperCAmelCase_       , UpperCAmelCase_						)

											finally:
																		if "custom" in CONFIG_MAPPING._extra_content:
																									del CONFIG_MAPPING._extra_content["custom"]
																		if CustomConfig in TOKENIZER_MAPPING._extra_content:
																									del TOKENIZER_MAPPING._extra_content[CustomConfig]



				@require_tokenizers
				def       __snake_case		( self						):
											try:
																		AutoConfig.register('''custom'''       , UpperCAmelCase_						)

																		# Can register in two steps
																		AutoTokenizer.register(UpperCAmelCase_       , slow_tokenizer_class=UpperCAmelCase_						)
																		self.assertEqual(TOKENIZER_MAPPING[CustomConfig]       , (CustomTokenizer, None)						)
																		AutoTokenizer.register(UpperCAmelCase_       , fast_tokenizer_class=UpperCAmelCase_						)
																		self.assertEqual(TOKENIZER_MAPPING[CustomConfig]       , (CustomTokenizer, CustomTokenizerFast)						)

																		del TOKENIZER_MAPPING._extra_content[CustomConfig]
																		# Can register in one step
																		AutoTokenizer.register(
																		    UpperCAmelCase_       , slow_tokenizer_class=UpperCAmelCase_       , fast_tokenizer_class=UpperCAmelCase_						)
																		self.assertEqual(TOKENIZER_MAPPING[CustomConfig]       , (CustomTokenizer, CustomTokenizerFast)						)

																		# Trying to register something existing in the Transformers library will raise an error
																		with self.assertRaises(UpperCAmelCase_						):
																									AutoTokenizer.register(UpperCAmelCase_       , fast_tokenizer_class=UpperCAmelCase_						)

																		# We pass through a bert tokenizer fast cause there is no converter slow to fast for our new toknizer
																		# and that model does not have a tokenizer.json
																		with tempfile.TemporaryDirectory() as tmp_dir:
																									lowerCAmelCase   =			BertTokenizerFast.from_pretrained(UpperCAmelCase_						)
																									bert_tokenizer.save_pretrained(UpperCAmelCase_						)
																									lowerCAmelCase   =			CustomTokenizerFast.from_pretrained(UpperCAmelCase_						)

																		with tempfile.TemporaryDirectory() as tmp_dir:
																									tokenizer.save_pretrained(UpperCAmelCase_						)

																									lowerCAmelCase   =			AutoTokenizer.from_pretrained(UpperCAmelCase_						)
																									self.assertIsInstance(UpperCAmelCase_       , UpperCAmelCase_						)

																									lowerCAmelCase   =			AutoTokenizer.from_pretrained(UpperCAmelCase_       , use_fast=UpperCAmelCase_						)
																									self.assertIsInstance(UpperCAmelCase_       , UpperCAmelCase_						)

											finally:
																		if "custom" in CONFIG_MAPPING._extra_content:
																									del CONFIG_MAPPING._extra_content["custom"]
																		if CustomConfig in TOKENIZER_MAPPING._extra_content:
																									del TOKENIZER_MAPPING._extra_content[CustomConfig]



				def       __snake_case		( self						):
											# If remote code is not set, we will time out when asking whether to load the model.
											with self.assertRaises(UpperCAmelCase_						):
																		lowerCAmelCase   =			AutoTokenizer.from_pretrained('''hf-internal-testing/test_dynamic_tokenizer'''						)
											# If remote code is disabled, we can't load this config.
											with self.assertRaises(UpperCAmelCase_						):
																		lowerCAmelCase   =			AutoTokenizer.from_pretrained(
																		    '''hf-internal-testing/test_dynamic_tokenizer'''       , trust_remote_code=UpperCAmelCase_						)

											lowerCAmelCase   =			AutoTokenizer.from_pretrained('''hf-internal-testing/test_dynamic_tokenizer'''       , trust_remote_code=UpperCAmelCase_						)
											self.assertTrue(tokenizer.special_attribute_present						)
											# Test tokenizer can be reloaded.
											with tempfile.TemporaryDirectory() as tmp_dir:
																		tokenizer.save_pretrained(UpperCAmelCase_						)
																		lowerCAmelCase   =			AutoTokenizer.from_pretrained(UpperCAmelCase_       , trust_remote_code=UpperCAmelCase_						)
											self.assertTrue(reloaded_tokenizer.special_attribute_present						)

											if is_tokenizers_available():
																		self.assertEqual(tokenizer.__class__.__name__       , '''NewTokenizerFast'''						)
																		self.assertEqual(reloaded_tokenizer.__class__.__name__       , '''NewTokenizerFast'''						)

																		# Test we can also load the slow version
																		lowerCAmelCase   =			AutoTokenizer.from_pretrained(
																		    '''hf-internal-testing/test_dynamic_tokenizer'''       , trust_remote_code=UpperCAmelCase_       , use_fast=UpperCAmelCase_						)
																		self.assertTrue(tokenizer.special_attribute_present						)
																		self.assertEqual(tokenizer.__class__.__name__       , '''NewTokenizer'''						)
																		# Test tokenizer can be reloaded.
																		with tempfile.TemporaryDirectory() as tmp_dir:
																									tokenizer.save_pretrained(UpperCAmelCase_						)
																									lowerCAmelCase   =			AutoTokenizer.from_pretrained(UpperCAmelCase_       , trust_remote_code=UpperCAmelCase_       , use_fast=UpperCAmelCase_						)
																		self.assertEqual(reloaded_tokenizer.__class__.__name__       , '''NewTokenizer'''						)
																		self.assertTrue(reloaded_tokenizer.special_attribute_present						)
											else:
																		self.assertEqual(tokenizer.__class__.__name__       , '''NewTokenizer'''						)
																		self.assertEqual(reloaded_tokenizer.__class__.__name__       , '''NewTokenizer'''						)



				@require_tokenizers
				def       __snake_case		( self						):


											class 							__UpperCamelCase			( __UpperCAmelCase  ):





															'''simple docstring'''



															__a							: Any										=False




											class 							__UpperCamelCase			( __UpperCAmelCase  ):





															'''simple docstring'''



															__a							: List[str]										=NewTokenizer
															__a							: List[Any]										=False

											try:
																		AutoConfig.register('''custom'''       , UpperCAmelCase_						)
																		AutoTokenizer.register(UpperCAmelCase_       , slow_tokenizer_class=UpperCAmelCase_						)
																		AutoTokenizer.register(UpperCAmelCase_       , fast_tokenizer_class=UpperCAmelCase_						)
																		# If remote code is not set, the default is to use local
																		lowerCAmelCase   =			AutoTokenizer.from_pretrained('''hf-internal-testing/test_dynamic_tokenizer'''						)
																		self.assertEqual(tokenizer.__class__.__name__       , '''NewTokenizerFast'''						)
																		self.assertFalse(tokenizer.special_attribute_present						)
																		lowerCAmelCase   =			AutoTokenizer.from_pretrained('''hf-internal-testing/test_dynamic_tokenizer'''       , use_fast=UpperCAmelCase_						)
																		self.assertEqual(tokenizer.__class__.__name__       , '''NewTokenizer'''						)
																		self.assertFalse(tokenizer.special_attribute_present						)

																		# If remote code is disabled, we load the local one.
																		lowerCAmelCase   =			AutoTokenizer.from_pretrained(
																		    '''hf-internal-testing/test_dynamic_tokenizer'''       , trust_remote_code=UpperCAmelCase_						)
																		self.assertEqual(tokenizer.__class__.__name__       , '''NewTokenizerFast'''						)
																		self.assertFalse(tokenizer.special_attribute_present						)
																		lowerCAmelCase   =			AutoTokenizer.from_pretrained(
																		    '''hf-internal-testing/test_dynamic_tokenizer'''       , trust_remote_code=UpperCAmelCase_       , use_fast=UpperCAmelCase_						)
																		self.assertEqual(tokenizer.__class__.__name__       , '''NewTokenizer'''						)
																		self.assertFalse(tokenizer.special_attribute_present						)

																		# If remote is enabled, we load from the Hub
																		lowerCAmelCase   =			AutoTokenizer.from_pretrained(
																		    '''hf-internal-testing/test_dynamic_tokenizer'''       , trust_remote_code=UpperCAmelCase_						)
																		self.assertEqual(tokenizer.__class__.__name__       , '''NewTokenizerFast'''						)
																		self.assertTrue(tokenizer.special_attribute_present						)
																		lowerCAmelCase   =			AutoTokenizer.from_pretrained(
																		    '''hf-internal-testing/test_dynamic_tokenizer'''       , trust_remote_code=UpperCAmelCase_       , use_fast=UpperCAmelCase_						)
																		self.assertEqual(tokenizer.__class__.__name__       , '''NewTokenizer'''						)
																		self.assertTrue(tokenizer.special_attribute_present						)

											finally:
																		if "custom" in CONFIG_MAPPING._extra_content:
																									del CONFIG_MAPPING._extra_content["custom"]
																		if CustomConfig in TOKENIZER_MAPPING._extra_content:
																									del TOKENIZER_MAPPING._extra_content[CustomConfig]



				def       __snake_case		( self						):
											lowerCAmelCase   =			AutoTokenizer.from_pretrained(
											    '''hf-internal-testing/test_dynamic_tokenizer_legacy'''       , trust_remote_code=UpperCAmelCase_						)
											self.assertTrue(tokenizer.special_attribute_present						)
											if is_tokenizers_available():
																		self.assertEqual(tokenizer.__class__.__name__       , '''NewTokenizerFast'''						)

																		# Test we can also load the slow version
																		lowerCAmelCase   =			AutoTokenizer.from_pretrained(
																		    '''hf-internal-testing/test_dynamic_tokenizer_legacy'''       , trust_remote_code=UpperCAmelCase_       , use_fast=UpperCAmelCase_						)
																		self.assertTrue(tokenizer.special_attribute_present						)
																		self.assertEqual(tokenizer.__class__.__name__       , '''NewTokenizer'''						)
											else:
																		self.assertEqual(tokenizer.__class__.__name__       , '''NewTokenizer'''						)



				def       __snake_case		( self						):
											with self.assertRaisesRegex(
											    UpperCAmelCase_       , '''bert-base is not a local folder and is not a valid model identifier'''						):
																		lowerCAmelCase   =			AutoTokenizer.from_pretrained('''bert-base'''						)



				def       __snake_case		( self						):
											with self.assertRaisesRegex(
											    UpperCAmelCase_       , r'''aaaaaa is not a valid git identifier \(branch name, tag name or commit id\)'''						):
																		lowerCAmelCase   =			AutoTokenizer.from_pretrained(UpperCAmelCase_       , revision='''aaaaaa'''						)






				def       __snake_case		( self						):
											# Make sure we have cached the tokenizer.
											lowerCAmelCase   =			AutoTokenizer.from_pretrained('''hf-internal-testing/tiny-random-bert'''						)
											with RequestCounter() as counter:
																		lowerCAmelCase   =			AutoTokenizer.from_pretrained('''hf-internal-testing/tiny-random-bert'''						)
																		self.assertEqual(counter.get_request_count       , 0						)
																		self.assertEqual(counter.head_request_count       , 1						)
																		self.assertEqual(counter.other_request_count       , 0						)









import random
import unittest

import torch

from diffusers import IFInpaintingSuperResolutionPipeline
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_INPAINTING_BATCH_PARAMS,
    TEXT_GUIDED_IMAGE_INPAINTING_PARAMS,
)
from ..test_pipelines_common import PipelineTesterMixin
from . import IFPipelineTesterMixin


@skip_mps
class 							__UpperCamelCase			( __UpperCAmelCase     ,					__UpperCAmelCase     ,					unittest.TestCase  ):





				'''simple docstring'''



				__a							: Tuple										=IFInpaintingSuperResolutionPipeline
				__a							: Dict										=TEXT_GUIDED_IMAGE_INPAINTING_PARAMS - {"""width""", """height"""}
				__a							: int										=TEXT_GUIDED_IMAGE_INPAINTING_BATCH_PARAMS.union({"""original_image"""}  )
				__a							: Union[str, Any]										=PipelineTesterMixin.required_optional_params - {"""latents"""}



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



				def       __snake_case		( self       , UpperCAmelCase_       , UpperCAmelCase_=0						):
											if str(UpperCAmelCase_						).startswith('''mps'''						):
																		lowerCAmelCase   =		torch.manual_seed(UpperCAmelCase_						)
											else:
																		lowerCAmelCase   =		torch.Generator(device=UpperCAmelCase_						).manual_seed(UpperCAmelCase_						)

											lowerCAmelCase   =		floats_tensor((1, 3, 16, 16)       , rng=random.Random(UpperCAmelCase_						)						).to(UpperCAmelCase_						)
											lowerCAmelCase   =		floats_tensor((1, 3, 32, 32)       , rng=random.Random(UpperCAmelCase_						)						).to(UpperCAmelCase_						)
											lowerCAmelCase   =		floats_tensor((1, 3, 32, 32)       , rng=random.Random(UpperCAmelCase_						)						).to(UpperCAmelCase_						)

											lowerCAmelCase   =		{
											    '''prompt''': '''A painting of a squirrel eating a burger''',
											    '''image''': image,
											    '''original_image''': original_image,
											    '''mask_image''': mask_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       __snake_case		( self						):
											self._test_xformers_attention_forwardGenerator_pass(expected_max_diff=1E-3						)



				def       __snake_case		( self						):
											self._test_save_load_optional_components()



				@unittest.skipIf(torch_device != '''cuda'''       , reason='''float16 requires CUDA'''						)
				def       __snake_case		( 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       __snake_case		( self						):
											self._test_attention_slicing_forward_pass(expected_max_diff=1E-2						)



				def       __snake_case		( self						):
											self._test_save_load_local()






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



