"""simple docstring"""




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      UpperCamelCase__(      __A			):
						lowerCAmelCase__	:    Union[List[PIL.Image.Image], np.ndarray]






class      UpperCamelCase__(      unittest.TestCase			):





						def 					snake_case__						(							self  )       ->					Union[str, Any]:
													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		,__UpperCAmelCase  )
													assert isinstance(outputs.images[0]		,PIL.Image.Image  )
													assert isinstance(outputs['images']		,__UpperCAmelCase  )
													assert isinstance(outputs['images'][0]		,PIL.Image.Image  )
													assert isinstance(outputs[0]		,__UpperCAmelCase  )
													assert isinstance(outputs[0][0]		,PIL.Image.Image  )





						def 					snake_case__						(							self  )       ->					str:
													# test output reinitialization with a `dict` for compatibility with `accelerate`
													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		,__UpperCAmelCase  )
													assert isinstance(outputs.images[0]		,PIL.Image.Image  )
													assert isinstance(outputs['images']		,__UpperCAmelCase  )
													assert isinstance(outputs['images'][0]		,PIL.Image.Image  )
													assert isinstance(outputs[0]		,__UpperCAmelCase  )
													assert isinstance(outputs[0][0]		,PIL.Image.Image  )






"""simple docstring"""




from typing import TYPE_CHECKING

from ...utils import (
    OptionalDependencyNotAvailable,
    _LazyModule,
    is_tf_available,
    is_tokenizers_available,
    is_torch_available,
)


__lowerCamelCase									=	{
    "configuration_layoutlm": ["LAYOUTLM_PRETRAINED_CONFIG_ARCHIVE_MAP", "LayoutLMConfig", "LayoutLMOnnxConfig"],
    "tokenization_layoutlm": ["LayoutLMTokenizer"],
}

try:
				if not is_tokenizers_available():
								raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
				pass
else:
				__lowerCamelCase									=	["LayoutLMTokenizerFast"]

try:
				if not is_torch_available():
								raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
				pass
else:
				__lowerCamelCase									=	[
				    "LAYOUTLM_PRETRAINED_MODEL_ARCHIVE_LIST",
				    "LayoutLMForMaskedLM",
				    "LayoutLMForSequenceClassification",
				    "LayoutLMForTokenClassification",
				    "LayoutLMForQuestionAnswering",
				    "LayoutLMModel",
				    "LayoutLMPreTrainedModel",
				]

try:
				if not is_tf_available():
								raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
				pass
else:
				__lowerCamelCase									=	[
				    "TF_LAYOUTLM_PRETRAINED_MODEL_ARCHIVE_LIST",
				    "TFLayoutLMForMaskedLM",
				    "TFLayoutLMForSequenceClassification",
				    "TFLayoutLMForTokenClassification",
				    "TFLayoutLMForQuestionAnswering",
				    "TFLayoutLMMainLayer",
				    "TFLayoutLMModel",
				    "TFLayoutLMPreTrainedModel",
				]


if TYPE_CHECKING:
				from .configuration_layoutlm import LAYOUTLM_PRETRAINED_CONFIG_ARCHIVE_MAP, LayoutLMConfig, LayoutLMOnnxConfig
				from .tokenization_layoutlm import LayoutLMTokenizer

				try:
								if not is_tokenizers_available():
												raise OptionalDependencyNotAvailable()
				except OptionalDependencyNotAvailable:
								pass
				else:
								from .tokenization_layoutlm_fast import LayoutLMTokenizerFast

				try:
								if not is_torch_available():
												raise OptionalDependencyNotAvailable()
				except OptionalDependencyNotAvailable:
								pass
				else:
								from .modeling_layoutlm import (
								    LAYOUTLM_PRETRAINED_MODEL_ARCHIVE_LIST,
								    LayoutLMForMaskedLM,
								    LayoutLMForQuestionAnswering,
								    LayoutLMForSequenceClassification,
								    LayoutLMForTokenClassification,
								    LayoutLMModel,
								    LayoutLMPreTrainedModel,
								)
				try:
								if not is_tf_available():
												raise OptionalDependencyNotAvailable()
				except OptionalDependencyNotAvailable:
								pass
				else:
								from .modeling_tf_layoutlm import (
								    TF_LAYOUTLM_PRETRAINED_MODEL_ARCHIVE_LIST,
								    TFLayoutLMForMaskedLM,
								    TFLayoutLMForQuestionAnswering,
								    TFLayoutLMForSequenceClassification,
								    TFLayoutLMForTokenClassification,
								    TFLayoutLMMainLayer,
								    TFLayoutLMModel,
								    TFLayoutLMPreTrainedModel,
								)

else:
				import sys

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





