






'''simple docstring'''



import json
import os
import pickle
import shutil
import tempfile
from unittest import TestCase
from unittest.mock import patch

import numpy as np
from datasets import Dataset

from transformers import is_faiss_available
from transformers.models.bart.configuration_bart import BartConfig
from transformers.models.bart.tokenization_bart import BartTokenizer
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.dpr.tokenization_dpr import DPRContextEncoderTokenizer, DPRQuestionEncoderTokenizer
from transformers.models.rag.configuration_rag import RagConfig
from transformers.models.rag.retrieval_rag import CustomHFIndex, RagRetriever
from transformers.models.roberta.tokenization_roberta import VOCAB_FILES_NAMES as BART_VOCAB_FILES_NAMES
from transformers.testing_utils import require_faiss, require_sentencepiece, require_tokenizers, require_torch


if is_faiss_available():
 import faiss
@require_faiss
class 							__SCREAMING_SNAKE_CASE       (							_lowerCAmelCase     ):




      def  __UpperCamelCase							(  self      )							->Optional[Any]:



         '''simple docstring'''
         __a				     =    tempfile.mkdtemp()
         __a				     =    8

         # DPR tok
         __a				     =    [
             '[UNK]',
             '[CLS]',
             '[SEP]',
             '[PAD]',
             '[MASK]',
             'want',
             '##want',
             '##ed',
             'wa',
             'un',
             'runn',
             '##ing',
             ',',
             'low',
             'lowest',
         ]
         __a				     =    os.path.join(self.tmpdirname ,   'dpr_tokenizer'      )
         os.makedirs(lowerCamelCase ,   exist_ok=lowerCamelCase      )
         __a				     =    os.path.join(lowerCamelCase ,   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
         __a				     =    [
             'l',
             'o',
             'w',
             'e',
             'r',
             's',
             't',
             'i',
             'd',
             'n',
             '\u0120',
             '\u0120l',
             '\u0120n',
             '\u0120lo',
             '\u0120low',
             'er',
             '\u0120lowest',
             '\u0120newer',
             '\u0120wider',
             '<unk>',
         ]
         __a				     =    dict(zip(lowerCamelCase ,   range(len(lowerCamelCase      )      )      )      )
         __a				     =    ['#version: 0.2', '\u0120 l', '\u0120l o', '\u0120lo w', 'e r', '']
         __a				     =    {'unk_token': '<unk>'}

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




      def  __UpperCamelCase							(  self      )							->DPRQuestionEncoderTokenizer:



         '''simple docstring'''
         return DPRQuestionEncoderTokenizer.from_pretrained(os.path.join(self.tmpdirname ,   'dpr_tokenizer'      )      )




      def  __UpperCamelCase							(  self      )							->DPRContextEncoderTokenizer:



         '''simple docstring'''
         return DPRContextEncoderTokenizer.from_pretrained(os.path.join(self.tmpdirname ,   'dpr_tokenizer'      )      )




      def  __UpperCamelCase							(  self      )							->BartTokenizer:



         '''simple docstring'''
         return BartTokenizer.from_pretrained(os.path.join(self.tmpdirname ,   'bart_tokenizer'      )      )




      def  __UpperCamelCase							(  self      )							->Optional[Any]:



         '''simple docstring'''
         shutil.rmtree(self.tmpdirname      )




      def  __UpperCamelCase							(  self      )							->List[Any]:



         '''simple docstring'''
         __a				     =    Dataset.from_dict(
             {
                 'id': ['0', '1'],
                 'text': ['foo', 'bar'],
                 'title': ['Foo', 'Bar'],
                 'embeddings': [np.ones(self.retrieval_vector_size      ), 2 * np.ones(self.retrieval_vector_size      )],
             }      )
         dataset.add_faiss_index('embeddings' ,   string_factory='Flat' ,   metric_type=faiss.METRIC_INNER_PRODUCT      )
         return dataset




      def  __UpperCamelCase							(  self      )							->Dict:



         '''simple docstring'''
         __a				     =    self.get_dummy_dataset()
         __a				     =    RagConfig(
             retrieval_vector_size=self.retrieval_vector_size ,   question_encoder=DPRConfig().to_dict() ,   generator=BartConfig().to_dict() ,   )
         with patch('transformers.models.rag.retrieval_rag.load_dataset'      ) as mock_load_dataset:
            __a				     =    dataset
            __a				     =    RagRetriever(
                lowerCamelCase ,   question_encoder_tokenizer=self.get_dpr_tokenizer() ,   generator_tokenizer=self.get_bart_tokenizer() ,   )
         return retriever




      def  __UpperCamelCase							(  self ,   lowerCamelCase      )							->int:



         '''simple docstring'''
         __a				     =    self.get_dummy_dataset()
         __a				     =    RagConfig(
             retrieval_vector_size=self.retrieval_vector_size ,   question_encoder=DPRConfig().to_dict() ,   generator=BartConfig().to_dict() ,   index_name='custom' ,   )
         if from_disk:
            __a				     =    os.path.join(self.tmpdirname ,   'dataset'      )
            __a				     =    os.path.join(self.tmpdirname ,   'index.faiss'      )
            dataset.get_index('embeddings'      ).save(os.path.join(self.tmpdirname ,   'index.faiss'      )      )
            dataset.drop_index('embeddings'      )
            dataset.save_to_disk(os.path.join(self.tmpdirname ,   'dataset'      )      )
            del dataset
            __a				     =    RagRetriever(
                lowerCamelCase ,   question_encoder_tokenizer=self.get_dpr_tokenizer() ,   generator_tokenizer=self.get_bart_tokenizer() ,   )
         else:
            __a				     =    RagRetriever(
                lowerCamelCase ,   question_encoder_tokenizer=self.get_dpr_tokenizer() ,   generator_tokenizer=self.get_bart_tokenizer() ,   index=CustomHFIndex(config.retrieval_vector_size ,   lowerCamelCase      ) ,   )
         return retriever




      def  __UpperCamelCase							(  self      )							->List[str]:



         '''simple docstring'''
         __a				     =    Dataset.from_dict(
             {
                 'id': ['0', '1'],
                 'text': ['foo', 'bar'],
                 'title': ['Foo', 'Bar'],
                 'embeddings': [np.ones(self.retrieval_vector_size + 1      ), 2 * np.ones(self.retrieval_vector_size + 1      )],
             }      )
         dataset.add_faiss_index('embeddings' ,   string_factory='Flat' ,   metric_type=faiss.METRIC_INNER_PRODUCT      )

         __a				     =    os.path.join(self.tmpdirname ,   'hf_bert_base.hnswSQ8_correct_phi_128.c_index'      )
         dataset.save_faiss_index('embeddings' ,   index_file_name + '.index.dpr'      )
         pickle.dump(dataset['id'] ,   open(index_file_name + '.index_meta.dpr' ,   'wb'      )      )

         __a				     =    os.path.join(self.tmpdirname ,   'psgs_w100.tsv.pkl'      )
         __a				     =    {sample['id']: [sample['text'], sample['title']] for sample in dataset}
         pickle.dump(lowerCamelCase ,   open(lowerCamelCase ,   'wb'      )      )

         __a				     =    RagConfig(
             retrieval_vector_size=self.retrieval_vector_size ,   question_encoder=DPRConfig().to_dict() ,   generator=BartConfig().to_dict() ,   index_name='legacy' ,   index_path=self.tmpdirname ,   )
         __a				     =    RagRetriever(
             lowerCamelCase ,   question_encoder_tokenizer=self.get_dpr_tokenizer() ,   generator_tokenizer=self.get_bart_tokenizer()      )
         return retriever




      def  __UpperCamelCase							(  self      )							->List[Any]:



         '''simple docstring'''
         __a				     =    1
         __a				     =    self.get_dummy_canonical_hf_index_retriever()
         __a				     =    np.array(
             [np.ones(self.retrieval_vector_size      ), -np.ones(self.retrieval_vector_size      )] ,   dtype=np.floataa      )
         __a     ,			__a     ,			__a				     =    retriever.retrieve(lowerCamelCase ,   n_docs=lowerCamelCase      )
         self.assertEqual(retrieved_doc_embeds.shape ,   (2, n_docs, self.retrieval_vector_size)      )
         self.assertEqual(len(lowerCamelCase      ) ,   2      )
         self.assertEqual(sorted(doc_dicts[0]      ) ,   ['embeddings', 'id', 'text', 'title']      )
         self.assertEqual(len(doc_dicts[0]['id']      ) ,   lowerCamelCase      )
         self.assertEqual(doc_dicts[0]['id'][0] ,   '1'      )  # max inner product is reached with second doc
         self.assertEqual(doc_dicts[1]['id'][0] ,   '0'      )  # max inner product is reached with first doc
         self.assertListEqual(doc_ids.tolist() ,   [[1], [0]]      )




      def  __UpperCamelCase							(  self      )							->Optional[int]:



         '''simple docstring'''
         __a				     =    self.get_dummy_canonical_hf_index_retriever()
         with tempfile.TemporaryDirectory() as tmp_dirname:
            with patch('transformers.models.rag.retrieval_rag.load_dataset'      ) as mock_load_dataset:
               __a				     =    self.get_dummy_dataset()
               retriever.save_pretrained(lowerCamelCase      )
               __a				     =    RagRetriever.from_pretrained(lowerCamelCase      )
               self.assertIsInstance(lowerCamelCase ,   lowerCamelCase      )
               __a				     =    np.array(
                   [np.ones(self.retrieval_vector_size      ), -np.ones(self.retrieval_vector_size      )] ,   dtype=np.floataa      )
               __a				     =    retriever.retrieve(lowerCamelCase ,   n_docs=1      )
               self.assertTrue(out is not None      )




      def  __UpperCamelCase							(  self      )							->str:



         '''simple docstring'''
         __a				     =    1
         __a				     =    self.get_dummy_custom_hf_index_retriever(from_disk=lowerCamelCase      )
         __a				     =    np.array(
             [np.ones(self.retrieval_vector_size      ), -np.ones(self.retrieval_vector_size      )] ,   dtype=np.floataa      )
         __a     ,			__a     ,			__a				     =    retriever.retrieve(lowerCamelCase ,   n_docs=lowerCamelCase      )
         self.assertEqual(retrieved_doc_embeds.shape ,   (2, n_docs, self.retrieval_vector_size)      )
         self.assertEqual(len(lowerCamelCase      ) ,   2      )
         self.assertEqual(sorted(doc_dicts[0]      ) ,   ['embeddings', 'id', 'text', 'title']      )
         self.assertEqual(len(doc_dicts[0]['id']      ) ,   lowerCamelCase      )
         self.assertEqual(doc_dicts[0]['id'][0] ,   '1'      )  # max inner product is reached with second doc
         self.assertEqual(doc_dicts[1]['id'][0] ,   '0'      )  # max inner product is reached with first doc
         self.assertListEqual(doc_ids.tolist() ,   [[1], [0]]      )




      def  __UpperCamelCase							(  self      )							->Tuple:



         '''simple docstring'''
         __a				     =    self.get_dummy_custom_hf_index_retriever(from_disk=lowerCamelCase      )
         with tempfile.TemporaryDirectory() as tmp_dirname:
            retriever.save_pretrained(lowerCamelCase      )
            __a				     =    RagRetriever.from_pretrained(lowerCamelCase      )
            self.assertIsInstance(lowerCamelCase ,   lowerCamelCase      )
            __a				     =    np.array(
                [np.ones(self.retrieval_vector_size      ), -np.ones(self.retrieval_vector_size      )] ,   dtype=np.floataa      )
            __a				     =    retriever.retrieve(lowerCamelCase ,   n_docs=1      )
            self.assertTrue(out is not None      )




      def  __UpperCamelCase							(  self      )							->Any:



         '''simple docstring'''
         __a				     =    1
         __a				     =    self.get_dummy_custom_hf_index_retriever(from_disk=lowerCamelCase      )
         __a				     =    np.array(
             [np.ones(self.retrieval_vector_size      ), -np.ones(self.retrieval_vector_size      )] ,   dtype=np.floataa      )
         __a     ,			__a     ,			__a				     =    retriever.retrieve(lowerCamelCase ,   n_docs=lowerCamelCase      )
         self.assertEqual(retrieved_doc_embeds.shape ,   (2, n_docs, self.retrieval_vector_size)      )
         self.assertEqual(len(lowerCamelCase      ) ,   2      )
         self.assertEqual(sorted(doc_dicts[0]      ) ,   ['embeddings', 'id', 'text', 'title']      )
         self.assertEqual(len(doc_dicts[0]['id']      ) ,   lowerCamelCase      )
         self.assertEqual(doc_dicts[0]['id'][0] ,   '1'      )  # max inner product is reached with second doc
         self.assertEqual(doc_dicts[1]['id'][0] ,   '0'      )  # max inner product is reached with first doc
         self.assertListEqual(doc_ids.tolist() ,   [[1], [0]]      )




      def  __UpperCamelCase							(  self      )							->Optional[int]:



         '''simple docstring'''
         __a				     =    self.get_dummy_custom_hf_index_retriever(from_disk=lowerCamelCase      )
         with tempfile.TemporaryDirectory() as tmp_dirname:
            retriever.save_pretrained(lowerCamelCase      )
            __a				     =    RagRetriever.from_pretrained(lowerCamelCase      )
            self.assertIsInstance(lowerCamelCase ,   lowerCamelCase      )
            __a				     =    np.array(
                [np.ones(self.retrieval_vector_size      ), -np.ones(self.retrieval_vector_size      )] ,   dtype=np.floataa      )
            __a				     =    retriever.retrieve(lowerCamelCase ,   n_docs=1      )
            self.assertTrue(out is not None      )




      def  __UpperCamelCase							(  self      )							->Union[str, Any]:



         '''simple docstring'''
         __a				     =    1
         __a				     =    self.get_dummy_legacy_index_retriever()
         __a				     =    np.array(
             [np.ones(self.retrieval_vector_size      ), -np.ones(self.retrieval_vector_size      )] ,   dtype=np.floataa      )
         __a     ,			__a     ,			__a				     =    retriever.retrieve(lowerCamelCase ,   n_docs=lowerCamelCase      )
         self.assertEqual(retrieved_doc_embeds.shape ,   (2, n_docs, self.retrieval_vector_size)      )
         self.assertEqual(len(lowerCamelCase      ) ,   2      )
         self.assertEqual(sorted(doc_dicts[0]      ) ,   ['text', 'title']      )
         self.assertEqual(len(doc_dicts[0]['text']      ) ,   lowerCamelCase      )
         self.assertEqual(doc_dicts[0]['text'][0] ,   'bar'      )  # max inner product is reached with second doc
         self.assertEqual(doc_dicts[1]['text'][0] ,   'foo'      )  # max inner product is reached with first doc
         self.assertListEqual(doc_ids.tolist() ,   [[1], [0]]      )




      def  __UpperCamelCase							(  self      )							->Optional[int]:



         '''simple docstring'''
         __a				     =    self.get_dummy_legacy_index_retriever()
         with tempfile.TemporaryDirectory() as tmp_dirname:
            retriever.save_pretrained(lowerCamelCase      )
            __a				     =    RagRetriever.from_pretrained(lowerCamelCase      )
            self.assertIsInstance(lowerCamelCase ,   lowerCamelCase      )
            __a				     =    np.array(
                [np.ones(self.retrieval_vector_size      ), -np.ones(self.retrieval_vector_size      )] ,   dtype=np.floataa      )
            __a				     =    retriever.retrieve(lowerCamelCase ,   n_docs=1      )
            self.assertTrue(out is not None      )




      @require_torch
      @require_tokenizers
      @require_sentencepiece
      def  __UpperCamelCase							(  self      )							->Union[str, Any]:



         '''simple docstring'''
         import torch

         __a				     =    1
         __a				     =    self.get_dummy_canonical_hf_index_retriever()
         __a				     =    [[5, 7], [10, 11]]
         __a				     =    np.array(
             [np.ones(self.retrieval_vector_size      ), -np.ones(self.retrieval_vector_size      )] ,   dtype=np.floataa      )
         __a				     =    retriever(lowerCamelCase ,   lowerCamelCase ,   prefix=retriever.config.generator.prefix ,   n_docs=lowerCamelCase      )
         __a     ,			__a     ,			__a				     =    (
             out['context_input_ids'],
             out['context_attention_mask'],
             out['retrieved_doc_embeds'],
         )
         self.assertEqual(retrieved_doc_embeds.shape ,   (2, n_docs, self.retrieval_vector_size)      )
         self.assertIsInstance(lowerCamelCase ,   lowerCamelCase      )
         self.assertIsInstance(lowerCamelCase ,   lowerCamelCase      )
         self.assertIsInstance(lowerCamelCase ,   np.ndarray      )

         __a				     =    retriever(
             lowerCamelCase ,   lowerCamelCase ,   prefix=retriever.config.generator.prefix ,   n_docs=lowerCamelCase ,   return_tensors='pt' ,   )
         __a     ,			__a     ,			__a     ,			__a				     =    (  # noqa: F841
             out['context_input_ids'],
             out['context_attention_mask'],
             out['retrieved_doc_embeds'],
             out['doc_ids'],
         )
         self.assertEqual(retrieved_doc_embeds.shape ,   (2, n_docs, self.retrieval_vector_size)      )
         self.assertIsInstance(lowerCamelCase ,   torch.Tensor      )
         self.assertIsInstance(lowerCamelCase ,   torch.Tensor      )
         self.assertIsInstance(lowerCamelCase ,   torch.Tensor      )






      @require_torch
      @require_tokenizers
      @require_sentencepiece
      def  __UpperCamelCase							(  self      )							->str:



         '''simple docstring'''
         __a				     =    self.get_dpr_ctx_encoder_tokenizer()
         __a				     =    1
         __a				     =    self.get_dummy_custom_hf_index_retriever(from_disk=lowerCamelCase      )
         retriever.set_ctx_encoder_tokenizer(lowerCamelCase      )

         __a				     =    [[5, 7], [10, 11]]
         __a				     =    np.array(
             [np.ones(self.retrieval_vector_size      ), -np.ones(self.retrieval_vector_size      )] ,   dtype=np.floataa      )
         __a				     =    retriever(lowerCamelCase ,   lowerCamelCase ,   prefix=retriever.config.generator.prefix ,   n_docs=lowerCamelCase      )

         self.assertEqual(
             len(lowerCamelCase      ) ,   6      )  # check whether the retriever output consist of 6 attributes including tokenized docs
         self.assertEqual(
             all(k in out for k in ('tokenized_doc_ids', 'tokenized_doc_attention_mask')      ) ,   lowerCamelCase      )  # check for doc token related keys in dictionary.







'''simple docstring'''



__UpperCamelCase      :       Tuple      			=      """0.18.2"""

from .configuration_utils import ConfigMixin
from .utils import (
    OptionalDependencyNotAvailable,
    is_flax_available,
    is_inflect_available,
    is_invisible_watermark_available,
    is_k_diffusion_available,
    is_k_diffusion_version,
    is_librosa_available,
    is_note_seq_available,
    is_onnx_available,
    is_scipy_available,
    is_torch_available,
    is_torchsde_available,
    is_transformers_available,
    is_transformers_version,
    is_unidecode_available,
    logging,
)


try:
 if not is_onnx_available():
  raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
 from .utils.dummy_onnx_objects import *  # noqa F403
else:
 from .pipelines import OnnxRuntimeModel

try:
 if not is_torch_available():
  raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
 from .utils.dummy_pt_objects import *  # noqa F403
else:
 from .models import (
     AutoencoderKL,
     ControlNetModel,
     ModelMixin,
     PriorTransformer,
     TaFilmDecoder,
     TransformeraDModel,
     UNetaDModel,
     UNetaDConditionModel,
     UNetaDModel,
     UNetaDConditionModel,
     VQModel,
 )
 from .optimization import (
     get_constant_schedule,
     get_constant_schedule_with_warmup,
     get_cosine_schedule_with_warmup,
     get_cosine_with_hard_restarts_schedule_with_warmup,
     get_linear_schedule_with_warmup,
     get_polynomial_decay_schedule_with_warmup,
     get_scheduler,
 )
 from .pipelines import (
     AudioPipelineOutput,
     ConsistencyModelPipeline,
     DanceDiffusionPipeline,
     DDIMPipeline,
     DDPMPipeline,
     DiffusionPipeline,
     DiTPipeline,
     ImagePipelineOutput,
     KarrasVePipeline,
     LDMPipeline,
     LDMSuperResolutionPipeline,
     PNDMPipeline,
     RePaintPipeline,
     ScoreSdeVePipeline,
 )
 from .schedulers import (
     CMStochasticIterativeScheduler,
     DDIMInverseScheduler,
     DDIMParallelScheduler,
     DDIMScheduler,
     DDPMParallelScheduler,
     DDPMScheduler,
     DEISMultistepScheduler,
     DPMSolverMultistepInverseScheduler,
     DPMSolverMultistepScheduler,
     DPMSolverSinglestepScheduler,
     EulerAncestralDiscreteScheduler,
     EulerDiscreteScheduler,
     HeunDiscreteScheduler,
     IPNDMScheduler,
     KarrasVeScheduler,
     KDPMaAncestralDiscreteScheduler,
     KDPMaDiscreteScheduler,
     PNDMScheduler,
     RePaintScheduler,
     SchedulerMixin,
     ScoreSdeVeScheduler,
     UnCLIPScheduler,
     UniPCMultistepScheduler,
     VQDiffusionScheduler,
 )
 from .training_utils import EMAModel

try:
 if not (is_torch_available() and is_scipy_available()):
  raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
 from .utils.dummy_torch_and_scipy_objects import *  # noqa F403
else:
 from .schedulers import LMSDiscreteScheduler

try:
 if not (is_torch_available() and is_torchsde_available()):
  raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
 from .utils.dummy_torch_and_torchsde_objects import *  # noqa F403
else:
 from .schedulers import DPMSolverSDEScheduler

try:
 if not (is_torch_available() and is_transformers_available()):
  raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
 from .utils.dummy_torch_and_transformers_objects import *  # noqa F403
else:
 from .pipelines import (
     AltDiffusionImgaImgPipeline,
     AltDiffusionPipeline,
     AudioLDMPipeline,
     CycleDiffusionPipeline,
     IFImgaImgPipeline,
     IFImgaImgSuperResolutionPipeline,
     IFInpaintingPipeline,
     IFInpaintingSuperResolutionPipeline,
     IFPipeline,
     IFSuperResolutionPipeline,
     ImageTextPipelineOutput,
     KandinskyImgaImgPipeline,
     KandinskyInpaintPipeline,
     KandinskyPipeline,
     KandinskyPriorPipeline,
     KandinskyVaaControlnetImgaImgPipeline,
     KandinskyVaaControlnetPipeline,
     KandinskyVaaImgaImgPipeline,
     KandinskyVaaInpaintPipeline,
     KandinskyVaaPipeline,
     KandinskyVaaPriorEmbaEmbPipeline,
     KandinskyVaaPriorPipeline,
     LDMTextToImagePipeline,
     PaintByExamplePipeline,
     SemanticStableDiffusionPipeline,
     ShapEImgaImgPipeline,
     ShapEPipeline,
     StableDiffusionAttendAndExcitePipeline,
     StableDiffusionControlNetImgaImgPipeline,
     StableDiffusionControlNetInpaintPipeline,
     StableDiffusionControlNetPipeline,
     StableDiffusionDepthaImgPipeline,
     StableDiffusionDiffEditPipeline,
     StableDiffusionImageVariationPipeline,
     StableDiffusionImgaImgPipeline,
     StableDiffusionInpaintPipeline,
     StableDiffusionInpaintPipelineLegacy,
     StableDiffusionInstructPixaPixPipeline,
     StableDiffusionLatentUpscalePipeline,
     StableDiffusionLDMaDPipeline,
     StableDiffusionModelEditingPipeline,
     StableDiffusionPanoramaPipeline,
     StableDiffusionParadigmsPipeline,
     StableDiffusionPipeline,
     StableDiffusionPipelineSafe,
     StableDiffusionPixaPixZeroPipeline,
     StableDiffusionSAGPipeline,
     StableDiffusionUpscalePipeline,
     StableUnCLIPImgaImgPipeline,
     StableUnCLIPPipeline,
     TextToVideoSDPipeline,
     TextToVideoZeroPipeline,
     UnCLIPImageVariationPipeline,
     UnCLIPPipeline,
     UniDiffuserModel,
     UniDiffuserPipeline,
     UniDiffuserTextDecoder,
     VersatileDiffusionDualGuidedPipeline,
     VersatileDiffusionImageVariationPipeline,
     VersatileDiffusionPipeline,
     VersatileDiffusionTextToImagePipeline,
     VideoToVideoSDPipeline,
     VQDiffusionPipeline,
 )

try:
 if not (is_torch_available() and is_transformers_available() and is_invisible_watermark_available()):
  raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
 from .utils.dummy_torch_and_transformers_and_invisible_watermark_objects import *  # noqa F403
else:
 from .pipelines import StableDiffusionXLImgaImgPipeline, StableDiffusionXLPipeline

try:
 if not (is_torch_available() and is_transformers_available() and is_k_diffusion_available()):
  raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
 from .utils.dummy_torch_and_transformers_and_k_diffusion_objects import *  # noqa F403
else:
 from .pipelines import StableDiffusionKDiffusionPipeline

try:
 if not (is_torch_available() and is_transformers_available() and is_onnx_available()):
  raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
 from .utils.dummy_torch_and_transformers_and_onnx_objects import *  # noqa F403
else:
 from .pipelines import (
     OnnxStableDiffusionImgaImgPipeline,
     OnnxStableDiffusionInpaintPipeline,
     OnnxStableDiffusionInpaintPipelineLegacy,
     OnnxStableDiffusionPipeline,
     OnnxStableDiffusionUpscalePipeline,
     StableDiffusionOnnxPipeline,
 )

try:
 if not (is_torch_available() and is_librosa_available()):
  raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
 from .utils.dummy_torch_and_librosa_objects import *  # noqa F403
else:
 from .pipelines import AudioDiffusionPipeline, Mel

try:
 if not (is_transformers_available() and is_torch_available() and is_note_seq_available()):
  raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
 from .utils.dummy_transformers_and_torch_and_note_seq_objects import *  # noqa F403
else:
 from .pipelines import SpectrogramDiffusionPipeline

try:
 if not is_flax_available():
  raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
 from .utils.dummy_flax_objects import *  # noqa F403
else:
 from .models.controlnet_flax import FlaxControlNetModel
 from .models.modeling_flax_utils import FlaxModelMixin
 from .models.unet_ad_condition_flax import FlaxUNetaDConditionModel
 from .models.vae_flax import FlaxAutoencoderKL
 from .pipelines import FlaxDiffusionPipeline
 from .schedulers import (
     FlaxDDIMScheduler,
     FlaxDDPMScheduler,
     FlaxDPMSolverMultistepScheduler,
     FlaxKarrasVeScheduler,
     FlaxLMSDiscreteScheduler,
     FlaxPNDMScheduler,
     FlaxSchedulerMixin,
     FlaxScoreSdeVeScheduler,
 )


try:
 if not (is_flax_available() and is_transformers_available()):
  raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
 from .utils.dummy_flax_and_transformers_objects import *  # noqa F403
else:
 from .pipelines import (
     FlaxStableDiffusionControlNetPipeline,
     FlaxStableDiffusionImgaImgPipeline,
     FlaxStableDiffusionInpaintPipeline,
     FlaxStableDiffusionPipeline,
 )

try:
 if not (is_note_seq_available()):
  raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
 from .utils.dummy_note_seq_objects import *  # noqa F403
else:
 from .pipelines import MidiProcessor