code: 
  
  
  
  
  
  '''simple docstring'''
  
  
  from typing import TYPE_CHECKING
  
  from ...utils import (
      OptionalDependencyNotAvailable,
      _LazyModule,
      is_flax_available,
      is_tf_available,
      is_tokenizers_available,
      is_torch_available,
  )
  
  
  _lowerCamelCase				:	List[Any]				    =       {
      'configuration_bart': ['BART_PRETRAINED_CONFIG_ARCHIVE_MAP', 'BartConfig', 'BartOnnxConfig'],
      'tokenization_bart': ['BartTokenizer'],
  }
  
  try:
  				if not is_tokenizers_available():
  								raise OptionalDependencyNotAvailable()
  except OptionalDependencyNotAvailable:
  				pass
  else:
  				_lowerCamelCase				:	int				    =       ['BartTokenizerFast']
  
  try:
  				if not is_torch_available():
  								raise OptionalDependencyNotAvailable()
  except OptionalDependencyNotAvailable:
  				pass
  else:
  				_lowerCamelCase				:	Dict				    =       [
  				    'BART_PRETRAINED_MODEL_ARCHIVE_LIST',
  				    'BartForCausalLM',
  				    'BartForConditionalGeneration',
  				    'BartForQuestionAnswering',
  				    'BartForSequenceClassification',
  				    'BartModel',
  				    'BartPretrainedModel',
  				    'PretrainedBartModel',
  				]
  
  try:
  				if not is_tf_available():
  								raise OptionalDependencyNotAvailable()
  except OptionalDependencyNotAvailable:
  				pass
  else:
  				_lowerCamelCase				:	int				    =       [
  				    'TFBartForConditionalGeneration',
  				    'TFBartForSequenceClassification',
  				    'TFBartModel',
  				    'TFBartPretrainedModel',
  				]
  
  try:
  				if not is_flax_available():
  								raise OptionalDependencyNotAvailable()
  except OptionalDependencyNotAvailable:
  				pass
  else:
  				_lowerCamelCase				:	List[str]				    =       [
  				    'FlaxBartDecoderPreTrainedModel',
  				    'FlaxBartForCausalLM',
  				    'FlaxBartForConditionalGeneration',
  				    'FlaxBartForQuestionAnswering',
  				    'FlaxBartForSequenceClassification',
  				    'FlaxBartModel',
  				    'FlaxBartPreTrainedModel',
  				]
  
  if TYPE_CHECKING:
  				from .configuration_bart import BART_PRETRAINED_CONFIG_ARCHIVE_MAP, BartConfig, BartOnnxConfig
  				from .tokenization_bart import BartTokenizer
  
  				try:
  								if not is_tokenizers_available():
  												raise OptionalDependencyNotAvailable()
  				except OptionalDependencyNotAvailable:
  								pass
  				else:
  								from .tokenization_bart_fast import BartTokenizerFast
  
  				try:
  								if not is_torch_available():
  												raise OptionalDependencyNotAvailable()
  				except OptionalDependencyNotAvailable:
  								pass
  				else:
  								from .modeling_bart import (
  								    BART_PRETRAINED_MODEL_ARCHIVE_LIST,
  								    BartForCausalLM,
  								    BartForConditionalGeneration,
  								    BartForQuestionAnswering,
  								    BartForSequenceClassification,
  								    BartModel,
  								    BartPretrainedModel,
  								    PretrainedBartModel,
  								)
  
  				try:
  								if not is_tf_available():
  												raise OptionalDependencyNotAvailable()
  				except OptionalDependencyNotAvailable:
  								pass
  				else:
  								from .modeling_tf_bart import (
  								    TFBartForConditionalGeneration,
  								    TFBartForSequenceClassification,
  								    TFBartModel,
  								    TFBartPretrainedModel,
  								)
  
  				try:
  								if not is_flax_available():
  												raise OptionalDependencyNotAvailable()
  				except OptionalDependencyNotAvailable:
  								pass
  				else:
  								from .modeling_flax_bart import (
  								    FlaxBartDecoderPreTrainedModel,
  								    FlaxBartForCausalLM,
  								    FlaxBartForConditionalGeneration,
  								    FlaxBartForQuestionAnswering,
  								    FlaxBartForSequenceClassification,
  								    FlaxBartModel,
  								    FlaxBartPreTrainedModel,
  								)
  
  else:
  				import sys
  
  				_lowerCamelCase				:	Optional[Any]				    =       _LazyModule(__name__, globals()['__file__'], _import_structure, module_spec=__spec__)
  
  
style_context: 
  
  
  
  
  
  '''simple docstring'''
  
  
  import tempfile
  import unittest
  
  import numpy as np
  import torch
  
  from diffusers import DiffusionPipeline
  from diffusers.models.attention_processor import Attention, AttnAddedKVProcessor
  
  
  
  class 							__UpperCAmelCase  (       unittest.TestCase						):
  
  
  
  
  
  
  
  		'''simple docstring'''
  
  
  
  
  
  
  
  		def        A     (self						:      Optional[int]      ,      _lowerCAmelCase						:      bool = False      ):
  			A							  =      10
  
  			if only_cross_attention:
  				A							  =      12
  			else:
  				# when only cross attention is not set, the cross attention dim must be the same as the query dim
  				A							  =      query_dim
  
  			return {
  			    "query_dim": query_dim,
  			    "cross_attention_dim": cross_attention_dim,
  			    "heads": 2,
  			    "dim_head": 4,
  			    "added_kv_proj_dim": 6,
  			    "norm_num_groups": 1,
  			    "only_cross_attention": only_cross_attention,
  			    "processor": AttnAddedKVProcessor(),
  			}
  
  
  
  
  
  
  
  		def        A     (self						:      Optional[int]      ,      _lowerCAmelCase						:      Dict      ,      _lowerCAmelCase						:      Any      ):
  			A							  =      2
  
  			A							  =      torch.rand(_lowerCAmelCase      ,      _lowerCAmelCase      ,      3      ,      2      )
  			A							  =      torch.rand(_lowerCAmelCase      ,      4      ,      _lowerCAmelCase      )
  			A							  =      None
  
  			return {
  			    "hidden_states": hidden_states,
  			    "encoder_hidden_states": encoder_hidden_states,
  			    "attention_mask": attention_mask,
  			}
  
  
  
  
  
  
  
  		def        A     (self						:      Optional[Any]      ):
  			# self and cross attention
  
  			torch.manual_seed(0      )
  
  			A							  =      self.get_constructor_arguments(only_cross_attention=_lowerCAmelCase      )
  			A							  =      Attention(**_lowerCAmelCase      )
  
  			self.assertTrue(attn.to_k is not None      )
  			self.assertTrue(attn.to_v is not None      )
  
  			A							  =      self.get_forward_arguments(
  			    query_dim=constructor_args["""query_dim"""]      ,      added_kv_proj_dim=constructor_args["""added_kv_proj_dim"""]      )
  
  			A							  =      attn(**_lowerCAmelCase      )
  
  			# only self attention
  
  			torch.manual_seed(0      )
  
  			A							  =      self.get_constructor_arguments(only_cross_attention=_lowerCAmelCase      )
  			A							  =      Attention(**_lowerCAmelCase      )
  
  			self.assertTrue(attn.to_k is None      )
  			self.assertTrue(attn.to_v is None      )
  
  			A							  =      self.get_forward_arguments(
  			    query_dim=constructor_args["""query_dim"""]      ,      added_kv_proj_dim=constructor_args["""added_kv_proj_dim"""]      )
  
  			A							  =      attn(**_lowerCAmelCase      )
  
  			self.assertTrue((only_cross_attn_out != self_and_cross_attn_out).all()      )
  
  
  
  
  
  
  class 							__UpperCAmelCase  (       unittest.TestCase						):
  
  
  
  
  
  
  
  		'''simple docstring'''
  
  
  
  
  
  
  
  		def        A     (self						:      Any      ):
  			A							  =      DiffusionPipeline.from_pretrained("""hf-internal-testing/tiny-stable-diffusion-pipe"""      ,      safety_checker=_lowerCAmelCase      )
  
  			A							  =      pipe(
  			    """foo"""      ,      num_inference_steps=2      ,      generator=torch.Generator("""cpu"""      ).manual_seed(0      )      ,      output_type="""np"""      ,      ).images
  
  			# the initial conversion succeeds
  			A							  =      DiffusionPipeline.from_pretrained(
  			    """hf-internal-testing/tiny-stable-diffusion-pipe"""      ,      device_map="""sequential"""      ,      safety_checker=_lowerCAmelCase      )
  
  			A							  =      pipe(
  			    """foo"""      ,      num_inference_steps=2      ,      generator=torch.Generator("""cpu"""      ).manual_seed(0      )      ,      output_type="""np"""      ,      ).images
  
  			with tempfile.TemporaryDirectory() as tmpdir:
  				# save the converted model
  				pipe.save_pretrained(_lowerCAmelCase      )
  
  				# can also load the converted weights
  				A							  =      DiffusionPipeline.from_pretrained(_lowerCAmelCase      ,      device_map="""sequential"""      ,      safety_checker=_lowerCAmelCase      )
  
  			A							  =      pipe(
  			    """foo"""      ,      num_inference_steps=2      ,      generator=torch.Generator("""cpu"""      ).manual_seed(0      )      ,      output_type="""np"""      ,      ).images
  
  			self.assertTrue(np.allclose(_lowerCAmelCase      ,      _lowerCAmelCase      ,      atol=1e-5      )      )
  			self.assertTrue(np.allclose(_lowerCAmelCase      ,      _lowerCAmelCase      ,      atol=1e-5      )      )
  
  