


"""simple docstring"""


import gc
import unittest

from parameterized import parameterized

from diffusers import FlaxUNetaDConditionModel
from diffusers.utils import is_flax_available
from diffusers.utils.testing_utils import load_hf_numpy, require_flax, slow


if is_flax_available():
			import jax
			import jax.numpy as jnp
@slow
@require_flax
class snake_case      (  unittest.TestCase):







		def  a_ (					self      :       Optional[Any]    ,   a__      :       List[Any]    ,   a__      :       int		)       ->						Optional[Any]:





						'''simple docstring'''







						return F"""gaussian_noise_s={seed}_shape={'_'.join([str(a__		) for s in shape]		)}.npy"""







		def  a_ (					self      :       Tuple		)       ->						Dict:





						'''simple docstring'''







						super().tearDown()
						gc.collect()







		def  a_ (					self      :       Tuple    ,   a__      :       Dict=0    ,   a__      :       List[str]=(4, 4, 64, 64)    ,   a__      :       Union[str, Any]=False		)       ->						List[Any]:





						'''simple docstring'''







						_A					  =			jnp.bfloataa if fpaa else jnp.floataa
						_A					  =			jnp.array(load_hf_numpy(self.get_file_format(a__    ,   a__		)		)    ,   dtype=a__		)
						return image







		def  a_ (					self      :       List[str]    ,   a__      :       Tuple=False    ,   a__      :       Any="CompVis/stable-diffusion-v1-4"		)       ->						str:





						'''simple docstring'''







						_A					  =			jnp.bfloataa if fpaa else jnp.floataa
						_A					  =			"bf16" if fpaa else None

						_A  ,		_A					  =			FlaxUNetaDConditionModel.from_pretrained(
						    a__    ,   subfolder="unet"    ,   dtype=a__    ,   revision=a__		)
						return model, params







		def  a_ (					self      :       List[str]    ,   a__      :       Any=0    ,   a__      :       int=(4, 77, 7_68)    ,   a__      :       int=False		)       ->						Any:





						'''simple docstring'''







						_A					  =			jnp.bfloataa if fpaa else jnp.floataa
						_A					  =			jnp.array(load_hf_numpy(self.get_file_format(a__    ,   a__		)		)    ,   dtype=a__		)
						return hidden_states







		@parameterized.expand(
		    [
		        # fmt: off
		        [83, 4, [-0.2_3_2_3, -0.1_3_0_4, 0.0_8_1_3, -0.3_0_9_3, -0.0_9_1_9, -0.1_5_7_1, -0.1_1_2_5, -0.5_8_0_6]],
		        [17, 0.5_5, [-0.0_8_3_1, -0.2_4_4_3, 0.0_9_0_1, -0.0_9_1_9, 0.3_3_9_6, 0.0_1_0_3, -0.3_7_4_3, 0.0_7_0_1]],
		        [8, 0.8_9, [-0.4_8_6_3, 0.0_8_5_9, 0.0_8_7_5, -0.1_6_5_8, 0.9_1_9_9, -0.0_1_1_4, 0.4_8_3_9, 0.4_6_3_9]],
		        [3, 10_00, [-0.5_6_4_9, 0.2_4_0_2, -0.5_5_1_8, 0.1_2_4_8, 1.1_3_2_8, -0.2_4_4_3, -0.0_3_2_5, -1.0_0_7_8]],
		        # fmt: on
		    ]		)
		def  a_ (					self      :       Optional[Any]    ,   a__      :       Tuple    ,   a__      :       List[str]    ,   a__      :       List[str]		)       ->						Optional[int]:





						'''simple docstring'''







						_A  ,		_A					  =			self.get_unet_model(model_id="CompVis/stable-diffusion-v1-4"    ,   fpaa=a__		)
						_A					  =			self.get_latents(a__    ,   fpaa=a__		)
						_A					  =			self.get_encoder_hidden_states(a__    ,   fpaa=a__		)

						_A					  =			model.apply(
						    {"params": params}    ,   a__    ,   jnp.array(a__    ,   dtype=jnp.intaa		)    ,   encoder_hidden_states=a__    ,   ).sample

						assert sample.shape == latents.shape

						_A					  =			jnp.asarray(jax.device_get((sample[-1, -2:, -2:, :2].flatten())		)    ,   dtype=jnp.floataa		)
						_A					  =			jnp.array(a__    ,   dtype=jnp.floataa		)

						# Found torch (float16) and flax (bfloat16) outputs to be within this tolerance, in the same hardware
						assert jnp.allclose(a__    ,   a__    ,   atol=1E-2		)







		@parameterized.expand(
		    [
		        # fmt: off
		        [83, 4, [0.1_5_1_4, 0.0_8_0_7, 0.1_6_2_4, 0.1_0_1_6, -0.1_8_9_6, 0.0_2_6_3, 0.0_6_7_7, 0.2_3_1_0]],
		        [17, 0.5_5, [0.1_1_6_4, -0.0_2_1_6, 0.0_1_7_0, 0.1_5_8_9, -0.3_1_2_0, 0.1_0_0_5, -0.0_5_8_1, -0.1_4_5_8]],
		        [8, 0.8_9, [-0.1_7_5_8, -0.0_1_6_9, 0.1_0_0_4, -0.1_4_1_1, 0.1_3_1_2, 0.1_1_0_3, -0.1_9_9_6, 0.2_1_3_9]],
		        [3, 10_00, [0.1_2_1_4, 0.0_3_5_2, -0.0_7_3_1, -0.1_5_6_2, -0.0_9_9_4, -0.0_9_0_6, -0.2_3_4_0, -0.0_5_3_9]],
		        # fmt: on
		    ]		)
		def  a_ (					self      :       Optional[int]    ,   a__      :       List[Any]    ,   a__      :       Tuple    ,   a__      :       List[Any]		)       ->						str:





						'''simple docstring'''







						_A  ,		_A					  =			self.get_unet_model(model_id="stabilityai/stable-diffusion-2"    ,   fpaa=a__		)
						_A					  =			self.get_latents(a__    ,   shape=(4, 4, 96, 96)    ,   fpaa=a__		)
						_A					  =			self.get_encoder_hidden_states(a__    ,   shape=(4, 77, 10_24)    ,   fpaa=a__		)

						_A					  =			model.apply(
						    {"params": params}    ,   a__    ,   jnp.array(a__    ,   dtype=jnp.intaa		)    ,   encoder_hidden_states=a__    ,   ).sample

						assert sample.shape == latents.shape

						_A					  =			jnp.asarray(jax.device_get((sample[-1, -2:, -2:, :2].flatten())		)    ,   dtype=jnp.floataa		)
						_A					  =			jnp.array(a__    ,   dtype=jnp.floataa		)

						# Found torch (float16) and flax (bfloat16) outputs to be within this tolerance, on the same hardware
						assert jnp.allclose(a__    ,   a__    ,   atol=1E-2		)



"""simple docstring"""


from typing import TYPE_CHECKING

from ...utils import OptionalDependencyNotAvailable, _LazyModule, is_torch_available


a_       							=    {
    "configuration_upernet": ["UperNetConfig"],
}

try:
		if not is_torch_available():
				raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
		pass
else:
		a_       							=    [
		    "UperNetForSemanticSegmentation",
		    "UperNetPreTrainedModel",
		]


if TYPE_CHECKING:
		from .configuration_upernet import UperNetConfig

		try:
				if not is_torch_available():
						raise OptionalDependencyNotAvailable()
		except OptionalDependencyNotAvailable:
				pass
		else:
				from .modeling_upernet import UperNetForSemanticSegmentation, UperNetPreTrainedModel


else:
		import sys

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