


from typing import TYPE_CHECKING

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


__UpperCamelCase:  Any   =   {
    """configuration_unispeech_sat""": ["""UNISPEECH_SAT_PRETRAINED_CONFIG_ARCHIVE_MAP""", """UniSpeechSatConfig"""],
}

try:
			if not is_torch_available():
						raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
			pass
else:
			__UpperCamelCase:  Union[str, Any]   =   [
			    """UNISPEECH_SAT_PRETRAINED_MODEL_ARCHIVE_LIST""",
			    """UniSpeechSatForAudioFrameClassification""",
			    """UniSpeechSatForCTC""",
			    """UniSpeechSatForPreTraining""",
			    """UniSpeechSatForSequenceClassification""",
			    """UniSpeechSatForXVector""",
			    """UniSpeechSatModel""",
			    """UniSpeechSatPreTrainedModel""",
			]

if TYPE_CHECKING:
			from .configuration_unispeech_sat import UNISPEECH_SAT_PRETRAINED_CONFIG_ARCHIVE_MAP, UniSpeechSatConfig

			try:
						if not is_torch_available():
									raise OptionalDependencyNotAvailable()
			except OptionalDependencyNotAvailable:
						pass
			else:
						from .modeling_unispeech_sat import (
						    UNISPEECH_SAT_PRETRAINED_MODEL_ARCHIVE_LIST,
						    UniSpeechSatForAudioFrameClassification,
						    UniSpeechSatForCTC,
						    UniSpeechSatForPreTraining,
						    UniSpeechSatForSequenceClassification,
						    UniSpeechSatForXVector,
						    UniSpeechSatModel,
						    UniSpeechSatPreTrainedModel,
						)

else:
			import sys

			__UpperCamelCase:  List[Any]   =   _LazyModule(__name__, globals()["""__file__"""], _import_structure, module_spec=__spec__)









from typing import List

import PIL
import torch
from PIL import Image

from ...configuration_utils import ConfigMixin
from ...models.modeling_utils import ModelMixin
from ...utils import PIL_INTERPOLATION


class 			__lowerCAmelCase				(					_UpperCamelCase      ,						_UpperCamelCase			):


	'''simple docstring'''





	def __init__(	self:	Union[str, Any] ):
			super().__init__()

			self.register_buffer('watermark_image',				torch.zeros((62, 62, 4) ) )
			lowercase__				:			int            =		None





	def       snake_case__(	self:	Optional[int],				lowerCamelCase_:	List[PIL.Image.Image],				lowerCamelCase_:	Dict=None ):
			# copied from https://github.com/deep-floyd/IF/blob/b77482e36ca2031cb94dbca1001fc1e6400bf4ab/deepfloyd_if/modules/base.py#L287

			lowercase__				:			str            =		images[0].height
			lowercase__				:			Optional[Any]            =		images[0].width

			lowercase__				:			List[Any]            =		sample_size or h

			lowercase__				:			Any            =		min(h / sample_size,				w / sample_size )
			lowercase__      ,							lowercase__				:			Optional[int]            =		(int(h / coef ), int(w / coef )) if coef < 1 else (h, w)

			lowercase__      ,							lowercase__				:			Any            =		1024**2, img_w * img_h
			lowercase__				:			Union[str, Any]            =		(Sa / Sa) ** 0.5
			lowercase__      ,							lowercase__      ,							lowercase__				:			Optional[int]            =		int(K * 62 ), img_w - int(14 * K ), img_h - int(14 * K )

			if self.watermark_image_as_pil is None:
					lowercase__				:			Tuple            =		self.watermark_image.to(torch.uinta ).cpu().numpy()
					lowercase__				:			str            =		Image.fromarray(lowerCamelCase_,				mode='RGBA' )
					lowercase__				:			Tuple            =		watermark_image

			lowercase__				:			Optional[int]            =		self.watermark_image_as_pil.resize(
			    (wm_size, wm_size),				PIL_INTERPOLATION['bicubic'],				reducing_gap=lowerCamelCase_ )

			for pil_img in images:
					pil_img.paste(lowerCamelCase_,				box=(wm_x - wm_size, wm_y - wm_size, wm_x, wm_y),				mask=wm_img.split()[-1] )

			return images


