



from dataclasses import dataclass
from typing import List, Optional, Union

import numpy as np
import PIL
from PIL import Image

from ...utils import (
    BaseOutput,
    OptionalDependencyNotAvailable,
    is_flax_available,
    is_k_diffusion_available,
    is_k_diffusion_version,
    is_onnx_available,
    is_torch_available,
    is_transformers_available,
    is_transformers_version,
)







@dataclass
class   _UpperCamelCase  (       A_  ):







					'''simple docstring'''

					lowerCamelCase     :     Union[List[PIL.Image.Image], np.ndarray]
					lowerCamelCase     :     Optional[List[bool]]


try:
				if not (is_transformers_available() and is_torch_available()):
								raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
				from ...utils.dummy_torch_and_transformers_objects import *  # noqa F403
else:
				from .pipeline_cycle_diffusion import CycleDiffusionPipeline
				from .pipeline_stable_diffusion import StableDiffusionPipeline
				from .pipeline_stable_diffusion_attend_and_excite import StableDiffusionAttendAndExcitePipeline
				from .pipeline_stable_diffusion_imgaimg import StableDiffusionImgaImgPipeline
				from .pipeline_stable_diffusion_inpaint import StableDiffusionInpaintPipeline
				from .pipeline_stable_diffusion_inpaint_legacy import StableDiffusionInpaintPipelineLegacy
				from .pipeline_stable_diffusion_instruct_pixapix import StableDiffusionInstructPixaPixPipeline
				from .pipeline_stable_diffusion_latent_upscale import StableDiffusionLatentUpscalePipeline
				from .pipeline_stable_diffusion_ldmad import StableDiffusionLDMaDPipeline
				from .pipeline_stable_diffusion_model_editing import StableDiffusionModelEditingPipeline
				from .pipeline_stable_diffusion_panorama import StableDiffusionPanoramaPipeline
				from .pipeline_stable_diffusion_paradigms import StableDiffusionParadigmsPipeline
				from .pipeline_stable_diffusion_sag import StableDiffusionSAGPipeline
				from .pipeline_stable_diffusion_upscale import StableDiffusionUpscalePipeline
				from .pipeline_stable_unclip import StableUnCLIPPipeline
				from .pipeline_stable_unclip_imgaimg import StableUnCLIPImgaImgPipeline
				from .safety_checker import StableDiffusionSafetyChecker
				from .stable_unclip_image_normalizer import StableUnCLIPImageNormalizer

try:
				if not (is_transformers_available() and is_torch_available() and is_transformers_version(""">=""", """4.25.0""")):
								raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
				from ...utils.dummy_torch_and_transformers_objects import StableDiffusionImageVariationPipeline
else:
				from .pipeline_stable_diffusion_image_variation import StableDiffusionImageVariationPipeline


try:
				if not (is_transformers_available() and is_torch_available() and is_transformers_version(""">=""", """4.26.0""")):
								raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
				from ...utils.dummy_torch_and_transformers_objects import (
				    StableDiffusionDepthaImgPipeline,
				    StableDiffusionDiffEditPipeline,
				    StableDiffusionPixaPixZeroPipeline,
				)
else:
				from .pipeline_stable_diffusion_depthaimg import StableDiffusionDepthaImgPipeline
				from .pipeline_stable_diffusion_diffedit import StableDiffusionDiffEditPipeline
				from .pipeline_stable_diffusion_pixapix_zero import StableDiffusionPixaPixZeroPipeline


try:
				if not (
				    is_torch_available()
				    and is_transformers_available()
				    and is_k_diffusion_available()
				    and is_k_diffusion_version(""">=""", """0.0.12""")
				):
								raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
				from ...utils.dummy_torch_and_transformers_and_k_diffusion_objects import *  # noqa F403
else:
				from .pipeline_stable_diffusion_k_diffusion import StableDiffusionKDiffusionPipeline

try:
				if not (is_transformers_available() and is_onnx_available()):
								raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
				from ...utils.dummy_onnx_objects import *  # noqa F403
else:
				from .pipeline_onnx_stable_diffusion import OnnxStableDiffusionPipeline, StableDiffusionOnnxPipeline
				from .pipeline_onnx_stable_diffusion_imgaimg import OnnxStableDiffusionImgaImgPipeline
				from .pipeline_onnx_stable_diffusion_inpaint import OnnxStableDiffusionInpaintPipeline
				from .pipeline_onnx_stable_diffusion_inpaint_legacy import OnnxStableDiffusionInpaintPipelineLegacy
				from .pipeline_onnx_stable_diffusion_upscale import OnnxStableDiffusionUpscalePipeline

if is_transformers_available() and is_flax_available():
				import flax







				@flax.struct.dataclass
				class   _UpperCamelCase  (       A_  ):







									'''simple docstring'''

									lowerCamelCase     :     np.ndarray
									lowerCamelCase     :     List[bool]


				from ...schedulers.scheduling_pndm_flax import PNDMSchedulerState
				from .pipeline_flax_stable_diffusion import FlaxStableDiffusionPipeline
				from .pipeline_flax_stable_diffusion_imgaimg import FlaxStableDiffusionImgaImgPipeline
				from .pipeline_flax_stable_diffusion_inpaint import FlaxStableDiffusionInpaintPipeline
				from .safety_checker_flax import FlaxStableDiffusionSafetyChecker









import json
import os
import shutil
import tempfile
from unittest import TestCase

from transformers import BartTokenizer, BartTokenizerFast, DPRQuestionEncoderTokenizer, DPRQuestionEncoderTokenizerFast
from transformers.models.bart.configuration_bart import BartConfig
from transformers.models.bert.tokenization_bert import VOCAB_FILES_NAMES as DPR_VOCAB_FILES_NAMES
from transformers.models.dpr.configuration_dpr import DPRConfig
from transformers.models.roberta.tokenization_roberta import VOCAB_FILES_NAMES as BART_VOCAB_FILES_NAMES
from transformers.testing_utils import require_faiss, require_tokenizers, require_torch, slow
from transformers.utils import is_datasets_available, is_faiss_available, is_torch_available


if is_torch_available() and is_datasets_available() and is_faiss_available():
				from transformers.models.rag.configuration_rag import RagConfig
				from transformers.models.rag.tokenization_rag import RagTokenizer







@require_faiss
@require_torch
class   _UpperCamelCase  (       A_  ):







					'''simple docstring'''

					def        SCREAMING_SNAKE_CASE							(						self    :  Optional[Any]		):






						'''simple docstring'''







						UpperCAmelCase_								=     tempfile.mkdtemp()
						UpperCAmelCase_								=     8

						# DPR tok
						UpperCAmelCase_								=     [
						    """[UNK]""",
						    """[CLS]""",
						    """[SEP]""",
						    """[PAD]""",
						    """[MASK]""",
						    """want""",
						    """##want""",
						    """##ed""",
						    """wa""",
						    """un""",
						    """runn""",
						    """##ing""",
						    """,""",
						    """low""",
						    """lowest""",
						]
						UpperCAmelCase_								=     os.path.join(self.tmpdirname ,					"""dpr_tokenizer"""		)
						os.makedirs(__lowercase ,					exist_ok=__lowercase		)
						UpperCAmelCase_								=     os.path.join(__lowercase ,					DPR_VOCAB_FILES_NAMES["""vocab_file"""]		)
						with open(self.vocab_file ,					"""w""" ,					encoding="""utf-8"""		) as vocab_writer:
							vocab_writer.write("""""".join([x + """\n""" for x in vocab_tokens]		)		)

						# BART tok
						UpperCAmelCase_								=     [
						    """l""",
						    """o""",
						    """w""",
						    """e""",
						    """r""",
						    """s""",
						    """t""",
						    """i""",
						    """d""",
						    """n""",
						    """\u0120""",
						    """\u0120l""",
						    """\u0120n""",
						    """\u0120lo""",
						    """\u0120low""",
						    """er""",
						    """\u0120lowest""",
						    """\u0120newer""",
						    """\u0120wider""",
						    """<unk>""",
						]
						UpperCAmelCase_								=     dict(zip(__lowercase ,					range(len(__lowercase		)		)		)		)
						UpperCAmelCase_								=     ["""#version: 0.2""", """\u0120 l""", """\u0120l o""", """\u0120lo w""", """e r""", """"""]
						UpperCAmelCase_								=     {"""unk_token""": """<unk>"""}

						UpperCAmelCase_								=     os.path.join(self.tmpdirname ,					"""bart_tokenizer"""		)
						os.makedirs(__lowercase ,					exist_ok=__lowercase		)
						UpperCAmelCase_								=     os.path.join(__lowercase ,					BART_VOCAB_FILES_NAMES["""vocab_file"""]		)
						UpperCAmelCase_								=     os.path.join(__lowercase ,					BART_VOCAB_FILES_NAMES["""merges_file"""]		)
						with open(self.vocab_file ,					"""w""" ,					encoding="""utf-8"""		) as fp:
							fp.write(json.dumps(__lowercase		) + """\n"""		)
						with open(self.merges_file ,					"""w""" ,					encoding="""utf-8"""		) as fp:
							fp.write("""\n""".join(__lowercase		)		)





					def        SCREAMING_SNAKE_CASE							(						self    :  Union[str, Any]		):






						'''simple docstring'''







						return DPRQuestionEncoderTokenizer.from_pretrained(os.path.join(self.tmpdirname ,					"""dpr_tokenizer"""		)		)





					def        SCREAMING_SNAKE_CASE							(						self    :  List[Any]		):






						'''simple docstring'''







						return BartTokenizer.from_pretrained(os.path.join(self.tmpdirname ,					"""bart_tokenizer"""		)		)





					def        SCREAMING_SNAKE_CASE							(						self    :  str		):






						'''simple docstring'''







						shutil.rmtree(self.tmpdirname		)





					@require_tokenizers
					def        SCREAMING_SNAKE_CASE							(						self    :  Union[str, Any]		):






						'''simple docstring'''







						UpperCAmelCase_								=     os.path.join(self.tmpdirname ,					"""rag_tokenizer"""		)
						UpperCAmelCase_								=     RagConfig(question_encoder=DPRConfig().to_dict() ,					generator=BartConfig().to_dict()		)
						UpperCAmelCase_								=     RagTokenizer(question_encoder=self.get_dpr_tokenizer() ,					generator=self.get_bart_tokenizer()		)
						rag_config.save_pretrained(__lowercase		)
						rag_tokenizer.save_pretrained(__lowercase		)
						UpperCAmelCase_								=     RagTokenizer.from_pretrained(__lowercase ,					config=__lowercase		)
						self.assertIsInstance(new_rag_tokenizer.question_encoder ,					__lowercase		)
						self.assertEqual(new_rag_tokenizer.question_encoder.get_vocab() ,					rag_tokenizer.question_encoder.get_vocab()		)
						self.assertIsInstance(new_rag_tokenizer.generator ,					__lowercase		)
						self.assertEqual(new_rag_tokenizer.generator.get_vocab() ,					rag_tokenizer.generator.get_vocab()		)





					@slow
					def        SCREAMING_SNAKE_CASE							(						self    :  List[Any]		):






						'''simple docstring'''







						UpperCAmelCase_								=     RagTokenizer.from_pretrained("""facebook/rag-token-nq"""		)
						UpperCAmelCase_								=     [
						    """who got the first nobel prize in physics""",
						    """when is the next deadpool movie being released""",
						    """which mode is used for short wave broadcast service""",
						    """who is the owner of reading football club""",
						    """when is the next scandal episode coming out""",
						    """when is the last time the philadelphia won the superbowl""",
						    """what is the most current adobe flash player version""",
						    """how many episodes are there in dragon ball z""",
						    """what is the first step in the evolution of the eye""",
						    """where is gall bladder situated in human body""",
						    """what is the main mineral in lithium batteries""",
						    """who is the president of usa right now""",
						    """where do the greasers live in the outsiders""",
						    """panda is a national animal of which country""",
						    """what is the name of manchester united stadium""",
						]
						UpperCAmelCase_								=     tokenizer(__lowercase		)
						self.assertIsNotNone(__lowercase		)





					@slow
					def        SCREAMING_SNAKE_CASE							(						self    :  List[str]		):






						'''simple docstring'''







						UpperCAmelCase_								=     RagTokenizer.from_pretrained("""facebook/rag-sequence-nq"""		)
						UpperCAmelCase_								=     [
						    """who got the first nobel prize in physics""",
						    """when is the next deadpool movie being released""",
						    """which mode is used for short wave broadcast service""",
						    """who is the owner of reading football club""",
						    """when is the next scandal episode coming out""",
						    """when is the last time the philadelphia won the superbowl""",
						    """what is the most current adobe flash player version""",
						    """how many episodes are there in dragon ball z""",
						    """what is the first step in the evolution of the eye""",
						    """where is gall bladder situated in human body""",
						    """what is the main mineral in lithium batteries""",
						    """who is the president of usa right now""",
						    """where do the greasers live in the outsiders""",
						    """panda is a national animal of which country""",
						    """what is the name of manchester united stadium""",
						]
						UpperCAmelCase_								=     tokenizer(__lowercase		)
						self.assertIsNotNone(__lowercase		)


