

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

import numpy as np
import PIL.Image

from diffusers.utils.outputs import BaseOutput

@dataclass
class    a__  (   snake_case     ):
			"""simple docstring"""







			__lowerCamelCase	    =    42

class    a__  (   unittest.TestCase     ):
			"""simple docstring"""







			def        UpperCamelCase						(      self    )					->  Tuple:
							'''simple docstring'''






							A__            =     CustomOutput(images=np.random.rand(1 , 3 , 4 , 4    )    )

							# check every way of getting the attribute
							assert isinstance(outputs.images , np.ndarray    )
							assert outputs.images.shape == (1, 3, 4, 4)
							assert isinstance(outputs["images"] , np.ndarray    )
							assert outputs["images"].shape == (1, 3, 4, 4)
							assert isinstance(outputs[0] , np.ndarray    )
							assert outputs[0].shape == (1, 3, 4, 4)

							# test with a non-tensor attribute
							A__            =     CustomOutput(images=[PIL.Image.new("RGB" , (4, 4)    )]    )

							# check every way of getting the attribute
							assert isinstance(outputs.images , lowercase    )
							assert isinstance(outputs.images[0] , PIL.Image.Image    )
							assert isinstance(outputs["images"] , lowercase    )
							assert isinstance(outputs["images"][0] , PIL.Image.Image    )
							assert isinstance(outputs[0] , lowercase    )
							assert isinstance(outputs[0][0] , PIL.Image.Image    )


			def        UpperCamelCase						(      self    )					->  Optional[int]:
							'''simple docstring'''






							A__            =     CustomOutput({"images": np.random.rand(1 , 3 , 4 , 4    )}    )

							# check every way of getting the attribute
							assert isinstance(outputs.images , np.ndarray    )
							assert outputs.images.shape == (1, 3, 4, 4)
							assert isinstance(outputs["images"] , np.ndarray    )
							assert outputs["images"].shape == (1, 3, 4, 4)
							assert isinstance(outputs[0] , np.ndarray    )
							assert outputs[0].shape == (1, 3, 4, 4)

							# test with a non-tensor attribute
							A__            =     CustomOutput({"images": [PIL.Image.new("RGB" , (4, 4)    )]}    )

							# check every way of getting the attribute
							assert isinstance(outputs.images , lowercase    )
							assert isinstance(outputs.images[0] , PIL.Image.Image    )
							assert isinstance(outputs["images"] , lowercase    )
							assert isinstance(outputs["images"][0] , PIL.Image.Image    )
							assert isinstance(outputs[0] , lowercase    )
							assert isinstance(outputs[0][0] , PIL.Image.Image    )




from typing import TYPE_CHECKING

from ...utils import OptionalDependencyNotAvailable, _LazyModule, is_torch_available


lowerCAmelCase__						=	{"""configuration_nat""": ["""NAT_PRETRAINED_CONFIG_ARCHIVE_MAP""", """NatConfig"""]}


try:
	if not is_torch_available():
		raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
	pass
else:
	lowerCAmelCase__						=	[
	    """NAT_PRETRAINED_MODEL_ARCHIVE_LIST""",
	    """NatForImageClassification""",
	    """NatModel""",
	    """NatPreTrainedModel""",
	    """NatBackbone""",
	]

if TYPE_CHECKING:
	from .configuration_nat import NAT_PRETRAINED_CONFIG_ARCHIVE_MAP, NatConfig

	try:
		if not is_torch_available():
			raise OptionalDependencyNotAvailable()
	except OptionalDependencyNotAvailable:
		pass
	else:
		from .modeling_nat import (
		    NAT_PRETRAINED_MODEL_ARCHIVE_LIST,
		    NatBackbone,
		    NatForImageClassification,
		    NatModel,
		    NatPreTrainedModel,
		)

else:
	import sys

	lowerCAmelCase__						=	_LazyModule(__name__, globals()["""__file__"""], _import_structure, module_spec=__spec__)

