
'''simple docstring'''

import unittest

from diffusers.models.unet_ad_blocks import *  # noqa F403
from diffusers.utils import torch_device

from .test_unet_blocks_common import UNetBlockTesterMixin


class  _UpperCAmelCase ( lowerCAmelCase__	,unittest.TestCase    ):

     """simple docstring"""

     a_    	=					DownBlockaD  # noqa F405
     a_    	=					"down"


     def 							_lowerCAmelCase  (      self ):

       '''simple docstring'''

       a_      :	str      =							[-0.0232, -0.9869, 0.8054, -0.0637, -0.1688, -1.4264, 0.4470, -1.3394, 0.0904]
       super().test_output(lowerCAmelCase_ )







class  _UpperCAmelCase ( lowerCAmelCase__	,unittest.TestCase    ):

     """simple docstring"""

     a_    	=					ResnetDownsampleBlockaD  # noqa F405
     a_    	=					"down"


     def 							_lowerCAmelCase  (      self ):

       '''simple docstring'''

       a_      :	Dict      =							[0.0710, 0.2410, -0.7320, -1.0757, -1.1343, 0.3540, -0.0133, -0.2576, 0.0948]
       super().test_output(lowerCAmelCase_ )







class  _UpperCAmelCase ( lowerCAmelCase__	,unittest.TestCase    ):

     """simple docstring"""

     a_    	=					AttnDownBlockaD  # noqa F405
     a_    	=					"down"


     def 							_lowerCAmelCase  (      self ):

       '''simple docstring'''

       a_      :	Any      =							[0.0636, 0.8964, -0.6234, -1.0131, 0.0844, 0.4935, 0.3437, 0.0911, -0.2957]
       super().test_output(lowerCAmelCase_ )







class  _UpperCAmelCase ( lowerCAmelCase__	,unittest.TestCase    ):

     """simple docstring"""

     a_    	=					CrossAttnDownBlockaD  # noqa F405
     a_    	=					"down"


     def 							_lowerCAmelCase  (      self ):

       '''simple docstring'''

       a_      , a_      :	Optional[int]      =							super().prepare_init_args_and_inputs_for_common()
       a_      :	Union[str, Any]      =							32
       return init_dict, inputs_dict






     def 							_lowerCAmelCase  (      self ):

       '''simple docstring'''

       a_      :	Union[str, Any]      =							[0.2238, -0.7396, -0.2255, -0.3829, 0.1925, 1.1665, 0.0603, -0.7295, 0.1983]
       super().test_output(lowerCAmelCase_ )







class  _UpperCAmelCase ( lowerCAmelCase__	,unittest.TestCase    ):

     """simple docstring"""

     a_    	=					SimpleCrossAttnDownBlockaD  # noqa F405
     a_    	=					"down"


     @property
     def 							_lowerCAmelCase  (      self ):

       '''simple docstring'''

       return super().get_dummy_input(include_encoder_hidden_states=lowerCAmelCase_ )


     def 							_lowerCAmelCase  (      self ):

       '''simple docstring'''

       a_      , a_      :	List[Any]      =							super().prepare_init_args_and_inputs_for_common()
       a_      :	List[Any]      =							32
       return init_dict, inputs_dict






     @unittest.skipIf(torch_device == """mps"""							,		"""MPS result is not consistent""" )
     def 							_lowerCAmelCase  (      self ):

       '''simple docstring'''

       a_      :	Any      =							[0.7921, -0.0992, -0.1962, -0.7695, -0.4242, 0.7804, 0.4737, 0.2765, 0.3338]
       super().test_output(lowerCAmelCase_ )







class  _UpperCAmelCase ( lowerCAmelCase__	,unittest.TestCase    ):

     """simple docstring"""

     a_    	=					SkipDownBlockaD  # noqa F405
     a_    	=					"down"


     @property
     def 							_lowerCAmelCase  (      self ):

       '''simple docstring'''

       return super().get_dummy_input(include_skip_sample=lowerCAmelCase_ )






     def 							_lowerCAmelCase  (      self ):

       '''simple docstring'''

       a_      :	Optional[int]      =							[-0.0845, -0.2087, -0.2465, 0.0971, 0.1900, -0.0484, 0.2664, 0.4179, 0.5069]
       super().test_output(lowerCAmelCase_ )







class  _UpperCAmelCase ( lowerCAmelCase__	,unittest.TestCase    ):

     """simple docstring"""

     a_    	=					AttnSkipDownBlockaD  # noqa F405
     a_    	=					"down"


     @property
     def 							_lowerCAmelCase  (      self ):

       '''simple docstring'''

       return super().get_dummy_input(include_skip_sample=lowerCAmelCase_ )






     def 							_lowerCAmelCase  (      self ):

       '''simple docstring'''

       a_      :	List[Any]      =							[0.5539, 0.1609, 0.4924, 0.0537, -0.1995, 0.4050, 0.0979, -0.2721, -0.0642]
       super().test_output(lowerCAmelCase_ )







class  _UpperCAmelCase ( lowerCAmelCase__	,unittest.TestCase    ):

     """simple docstring"""

     a_    	=					DownEncoderBlockaD  # noqa F405
     a_    	=					"down"


     @property
     def 							_lowerCAmelCase  (      self ):

       '''simple docstring'''

       return super().get_dummy_input(include_temb=lowerCAmelCase_ )


     def 							_lowerCAmelCase  (      self ):

       '''simple docstring'''

       a_      :	Any      =							{
           """in_channels""": 32,
           """out_channels""": 32,
       }
       a_      :	Optional[int]      =							self.dummy_input
       return init_dict, inputs_dict






     def 							_lowerCAmelCase  (      self ):

       '''simple docstring'''

       a_      :	Any      =							[1.1102, 0.5302, 0.4872, -0.0023, -0.8042, 0.0483, -0.3489, -0.5632, 0.7626]
       super().test_output(lowerCAmelCase_ )







class  _UpperCAmelCase ( lowerCAmelCase__	,unittest.TestCase    ):

     """simple docstring"""

     a_    	=					AttnDownEncoderBlockaD  # noqa F405
     a_    	=					"down"


     @property
     def 							_lowerCAmelCase  (      self ):

       '''simple docstring'''

       return super().get_dummy_input(include_temb=lowerCAmelCase_ )


     def 							_lowerCAmelCase  (      self ):

       '''simple docstring'''

       a_      :	List[str]      =							{
           """in_channels""": 32,
           """out_channels""": 32,
       }
       a_      :	List[Any]      =							self.dummy_input
       return init_dict, inputs_dict






     def 							_lowerCAmelCase  (      self ):

       '''simple docstring'''

       a_      :	List[Any]      =							[0.8966, -0.1486, 0.8568, 0.8141, -0.9046, -0.1342, -0.0972, -0.7417, 0.1538]
       super().test_output(lowerCAmelCase_ )







class  _UpperCAmelCase ( lowerCAmelCase__	,unittest.TestCase    ):

     """simple docstring"""

     a_    	=					UNetMidBlockaD  # noqa F405
     a_    	=					"mid"


     def 							_lowerCAmelCase  (      self ):

       '''simple docstring'''

       a_      :	Optional[int]      =							{
           """in_channels""": 32,
           """temb_channels""": 1_28,
       }
       a_      :	str      =							self.dummy_input
       return init_dict, inputs_dict






     def 							_lowerCAmelCase  (      self ):

       '''simple docstring'''

       a_      :	Optional[int]      =							[-0.1062, 1.7248, 0.3494, 1.4569, -0.0910, -1.2421, -0.9984, 0.6736, 1.0028]
       super().test_output(lowerCAmelCase_ )







class  _UpperCAmelCase ( lowerCAmelCase__	,unittest.TestCase    ):

     """simple docstring"""

     a_    	=					UNetMidBlockaDCrossAttn  # noqa F405
     a_    	=					"mid"


     def 							_lowerCAmelCase  (      self ):

       '''simple docstring'''

       a_      , a_      :	Optional[int]      =							super().prepare_init_args_and_inputs_for_common()
       a_      :	int      =							32
       return init_dict, inputs_dict






     def 							_lowerCAmelCase  (      self ):

       '''simple docstring'''

       a_      :	int      =							[0.0187, 2.4220, 0.4484, 1.1203, -0.6121, -1.5122, -0.8270, 0.7851, 1.8335]
       super().test_output(lowerCAmelCase_ )







class  _UpperCAmelCase ( lowerCAmelCase__	,unittest.TestCase    ):

     """simple docstring"""

     a_    	=					UNetMidBlockaDSimpleCrossAttn  # noqa F405
     a_    	=					"mid"


     @property
     def 							_lowerCAmelCase  (      self ):

       '''simple docstring'''

       return super().get_dummy_input(include_encoder_hidden_states=lowerCAmelCase_ )


     def 							_lowerCAmelCase  (      self ):

       '''simple docstring'''

       a_      , a_      :	List[Any]      =							super().prepare_init_args_and_inputs_for_common()
       a_      :	Optional[int]      =							32
       return init_dict, inputs_dict






     def 							_lowerCAmelCase  (      self ):

       '''simple docstring'''

       a_      :	Dict      =							[0.7143, 1.9974, 0.5448, 1.3977, 0.1282, -1.1237, -1.4238, 0.5530, 0.8880]
       super().test_output(lowerCAmelCase_ )







class  _UpperCAmelCase ( lowerCAmelCase__	,unittest.TestCase    ):

     """simple docstring"""

     a_    	=					UpBlockaD  # noqa F405
     a_    	=					"up"


     @property
     def 							_lowerCAmelCase  (      self ):

       '''simple docstring'''

       return super().get_dummy_input(include_res_hidden_states_tuple=lowerCAmelCase_ )






     def 							_lowerCAmelCase  (      self ):

       '''simple docstring'''

       a_      :	List[Any]      =							[-0.2041, -0.4165, -0.3022, 0.0041, -0.6628, -0.7053, 0.1928, -0.0325, 0.0523]
       super().test_output(lowerCAmelCase_ )







class  _UpperCAmelCase ( lowerCAmelCase__	,unittest.TestCase    ):

     """simple docstring"""

     a_    	=					ResnetUpsampleBlockaD  # noqa F405
     a_    	=					"up"


     @property
     def 							_lowerCAmelCase  (      self ):

       '''simple docstring'''

       return super().get_dummy_input(include_res_hidden_states_tuple=lowerCAmelCase_ )






     def 							_lowerCAmelCase  (      self ):

       '''simple docstring'''

       a_      :	Optional[Any]      =							[0.2287, 0.3549, -0.1346, 0.4797, -0.1715, -0.9649, 0.7305, -0.5864, -0.6244]
       super().test_output(lowerCAmelCase_ )







class  _UpperCAmelCase ( lowerCAmelCase__	,unittest.TestCase    ):

     """simple docstring"""

     a_    	=					CrossAttnUpBlockaD  # noqa F405
     a_    	=					"up"


     @property
     def 							_lowerCAmelCase  (      self ):

       '''simple docstring'''

       return super().get_dummy_input(include_res_hidden_states_tuple=lowerCAmelCase_ )


     def 							_lowerCAmelCase  (      self ):

       '''simple docstring'''

       a_      , a_      :	str      =							super().prepare_init_args_and_inputs_for_common()
       a_      :	List[Any]      =							32
       return init_dict, inputs_dict






     def 							_lowerCAmelCase  (      self ):

       '''simple docstring'''

       a_      :	Dict      =							[-0.1403, -0.3515, -0.0420, -0.1425, 0.3167, 0.5094, -0.2181, 0.5931, 0.5582]
       super().test_output(lowerCAmelCase_ )







class  _UpperCAmelCase ( lowerCAmelCase__	,unittest.TestCase    ):

     """simple docstring"""

     a_    	=					SimpleCrossAttnUpBlockaD  # noqa F405
     a_    	=					"up"


     @property
     def 							_lowerCAmelCase  (      self ):

       '''simple docstring'''

       return super().get_dummy_input(include_res_hidden_states_tuple=lowerCAmelCase_							,		include_encoder_hidden_states=lowerCAmelCase_ )


     def 							_lowerCAmelCase  (      self ):

       '''simple docstring'''

       a_      , a_      :	List[Any]      =							super().prepare_init_args_and_inputs_for_common()
       a_      :	Any      =							32
       return init_dict, inputs_dict






     def 							_lowerCAmelCase  (      self ):

       '''simple docstring'''

       a_      :	Tuple      =							[0.2645, 0.1480, 0.0909, 0.8044, -0.9758, -0.9083, 0.0994, -1.1453, -0.7402]
       super().test_output(lowerCAmelCase_ )







class  _UpperCAmelCase ( lowerCAmelCase__	,unittest.TestCase    ):

     """simple docstring"""

     a_    	=					AttnUpBlockaD  # noqa F405
     a_    	=					"up"


     @property
     def 							_lowerCAmelCase  (      self ):

       '''simple docstring'''

       return super().get_dummy_input(include_res_hidden_states_tuple=lowerCAmelCase_ )






     @unittest.skipIf(torch_device == """mps"""							,		"""MPS result is not consistent""" )
     def 							_lowerCAmelCase  (      self ):

       '''simple docstring'''

       a_      :	List[Any]      =							[0.0979, 0.1326, 0.0021, 0.0659, 0.2249, 0.0059, 0.1132, 0.5952, 0.1033]
       super().test_output(lowerCAmelCase_ )







class  _UpperCAmelCase ( lowerCAmelCase__	,unittest.TestCase    ):

     """simple docstring"""

     a_    	=					SkipUpBlockaD  # noqa F405
     a_    	=					"up"


     @property
     def 							_lowerCAmelCase  (      self ):

       '''simple docstring'''

       return super().get_dummy_input(include_res_hidden_states_tuple=lowerCAmelCase_ )






     def 							_lowerCAmelCase  (      self ):

       '''simple docstring'''

       a_      :	int      =							[-0.0893, -0.1234, -0.1506, -0.0332, 0.0123, -0.0211, 0.0566, 0.0143, 0.0362]
       super().test_output(lowerCAmelCase_ )







class  _UpperCAmelCase ( lowerCAmelCase__	,unittest.TestCase    ):

     """simple docstring"""

     a_    	=					AttnSkipUpBlockaD  # noqa F405
     a_    	=					"up"


     @property
     def 							_lowerCAmelCase  (      self ):

       '''simple docstring'''

       return super().get_dummy_input(include_res_hidden_states_tuple=lowerCAmelCase_ )






     def 							_lowerCAmelCase  (      self ):

       '''simple docstring'''

       a_      :	List[Any]      =							[0.0361, 0.0617, 0.2787, -0.0350, 0.0342, 0.3421, -0.0843, 0.0913, 0.3015]
       super().test_output(lowerCAmelCase_ )







class  _UpperCAmelCase ( lowerCAmelCase__	,unittest.TestCase    ):

     """simple docstring"""

     a_    	=					UpDecoderBlockaD  # noqa F405
     a_    	=					"up"


     @property
     def 							_lowerCAmelCase  (      self ):

       '''simple docstring'''

       return super().get_dummy_input(include_temb=lowerCAmelCase_ )


     def 							_lowerCAmelCase  (      self ):

       '''simple docstring'''

       a_      :	Dict      =							{"""in_channels""": 32, """out_channels""": 32}

       a_      :	Optional[int]      =							self.dummy_input
       return init_dict, inputs_dict






     def 							_lowerCAmelCase  (      self ):

       '''simple docstring'''

       a_      :	List[str]      =							[0.4404, 0.1998, -0.9886, -0.3320, -0.3128, -0.7034, -0.6955, -0.2338, -0.3137]
       super().test_output(lowerCAmelCase_ )







class  _UpperCAmelCase ( lowerCAmelCase__	,unittest.TestCase    ):

     """simple docstring"""

     a_    	=					AttnUpDecoderBlockaD  # noqa F405
     a_    	=					"up"


     @property
     def 							_lowerCAmelCase  (      self ):

       '''simple docstring'''

       return super().get_dummy_input(include_temb=lowerCAmelCase_ )


     def 							_lowerCAmelCase  (      self ):

       '''simple docstring'''

       a_      :	Dict      =							{"""in_channels""": 32, """out_channels""": 32}

       a_      :	Optional[Any]      =							self.dummy_input
       return init_dict, inputs_dict






     def 							_lowerCAmelCase  (      self ):

       '''simple docstring'''

       a_      :	Dict      =							[0.6738, 0.4491, 0.1055, 1.0710, 0.7316, 0.3339, 0.3352, 0.1023, 0.3568]
       super().test_output(lowerCAmelCase_ )




'''simple docstring'''

from typing import List, Optional, TypeVar

from .arrow_dataset import Dataset, _concatenate_map_style_datasets, _interleave_map_style_datasets
from .dataset_dict import DatasetDict, IterableDatasetDict
from .info import DatasetInfo
from .iterable_dataset import IterableDataset, _concatenate_iterable_datasets, _interleave_iterable_datasets
from .splits import NamedSplit
from .utils import logging
from .utils.py_utils import Literal


__snake_case:  Optional[Any]								=			logging.get_logger(__name__)


__snake_case:  Tuple								=			TypeVar("DatasetType", Dataset, IterableDataset)






def 	_snake_case						(      A_       :    List[DatasetType]     ,		A_       :    Optional[List[float]] = None     ,		A_       :    Optional[int] = None     ,		A_       :    Optional[DatasetInfo] = None     ,		A_       :    Optional[NamedSplit] = None     ,		A_       :    Literal["first_exhausted", "all_exhausted"] = "first_exhausted"     ,		):
  """simple docstring"""







  from .arrow_dataset import Dataset
  from .iterable_dataset import IterableDataset

  if not datasets:
    raise ValueError("""Unable to interleave an empty list of datasets."""   )
  for i, dataset in enumerate(A_   ):
    if not isinstance(A_     ,		(Dataset, IterableDataset)   ):
      if isinstance(A_     ,		(DatasetDict, IterableDatasetDict)   ):
        if not dataset:
          raise ValueError(
              f'''Expected a list of Dataset objects or a list of IterableDataset objects, but element at position {i} '''
              """is an empty dataset dictionary."""   )
        raise ValueError(
            f'''Dataset at position {i} has at least one split: {list(A_   )}\n'''
            f'''Please pick one to interleave with the other datasets, for example: dataset[\'{next(iter(A_   )   )}\']'''   )
      raise ValueError(
          f'''Expected a list of Dataset objects or a list of IterableDataset objects, but element at position {i} is a {type(A_   ).__name__}.'''   )
    if i == 0:
      a_      , a_      :	Union[str, Any]      =							(
          (Dataset, IterableDataset) if isinstance(A_     ,		A_   ) else (IterableDataset, Dataset)
      )
    elif not isinstance(A_     ,		A_   ):
      raise ValueError(
          f'''Unable to interleave a {dataset_type.__name__} (at position 0) with a {other_type.__name__} (at position {i}). Expected a list of Dataset objects or a list of IterableDataset objects.'''   )
  if stopping_strategy not in ["first_exhausted", "all_exhausted"]:
    raise ValueError(f'''{stopping_strategy} is not supported. Please enter a valid stopping_strategy.'''   )
  if dataset_type is Dataset:
    return _interleave_map_style_datasets(
        A_     ,		A_     ,		A_     ,		info=A_     ,		split=A_     ,		stopping_strategy=A_   )
  else:
    return _interleave_iterable_datasets(
        A_     ,		A_     ,		A_     ,		info=A_     ,		split=A_     ,		stopping_strategy=A_   )






def 	_snake_case						(      A_       :    List[DatasetType]     ,		A_       :    Optional[DatasetInfo] = None     ,		A_       :    Optional[NamedSplit] = None     ,		A_       :    int = 0     ,		):
  """simple docstring"""







  if not dsets:
    raise ValueError("""Unable to concatenate an empty list of datasets."""   )
  for i, dataset in enumerate(A_   ):
    if not isinstance(A_     ,		(Dataset, IterableDataset)   ):
      if isinstance(A_     ,		(DatasetDict, IterableDatasetDict)   ):
        if not dataset:
          raise ValueError(
              f'''Expected a list of Dataset objects or a list of IterableDataset objects, but element at position {i} '''
              """is an empty dataset dictionary."""   )
        raise ValueError(
            f'''Dataset at position {i} has at least one split: {list(A_   )}\n'''
            f'''Please pick one to interleave with the other datasets, for example: dataset[\'{next(iter(A_   )   )}\']'''   )
      raise ValueError(
          f'''Expected a list of Dataset objects or a list of IterableDataset objects, but element at position {i} is a {type(A_   ).__name__}.'''   )
    if i == 0:
      a_      , a_      :	str      =							(
          (Dataset, IterableDataset) if isinstance(A_     ,		A_   ) else (IterableDataset, Dataset)
      )
    elif not isinstance(A_     ,		A_   ):
      raise ValueError(
          f'''Unable to interleave a {dataset_type.__name__} (at position 0) with a {other_type.__name__} (at position {i}). Expected a list of Dataset objects or a list of IterableDataset objects.'''   )
  if dataset_type is Dataset:
    return _concatenate_map_style_datasets(A_     ,		info=A_     ,		split=A_     ,		axis=A_   )
  else:
    return _concatenate_iterable_datasets(A_     ,		info=A_     ,		split=A_     ,		axis=A_   )


