


'''simple docstring'''




import numpy as np
import torch
from imwatermark import WatermarkEncoder


# Copied from https://github.com/Stability-AI/generative-models/blob/613af104c6b85184091d42d374fef420eddb356d/scripts/demo/streamlit_helpers.py#L66
_a   :   Dict												=   0B10_11_00_11_11_10_11_00_10_01_00_00_01_11_10_11_10_11_00_01_10_01_11_10
# bin(x)[2:] gives bits of x as str, use int to convert them to 0/1
_a   :   Tuple												=   [int(bit) for bit in bin(WATERMARK_MESSAGE)[2:]]




class 			_lowercase :
   def __init__(						self       :      List[Any]      ) ->							int:
        __snake_case           =						WATERMARK_BITS
        __snake_case           =						WatermarkEncoder()

        self.encoder.set_watermark('bits'       ,   self.watermark      )





   def a  (						self       :      Tuple       ,   SCREAMING_SNAKE_CASE_       :      torch.FloatTensor      ) ->							Dict:
        # can't encode images that are smaller than 256
        if images.shape[-1] < 256:
             return images

        __snake_case           =						(255 * (images / 2 + 0.5)).cpu().permute(0       ,   2       ,   3       ,   1      ).float().numpy()

        __snake_case           =						[self.encoder.encode(SCREAMING_SNAKE_CASE_       ,   'dwtDct'      ) for image in images]

        __snake_case           =						torch.from_numpy(np.array(SCREAMING_SNAKE_CASE_      )      ).permute(0       ,   3       ,   1       ,   2      )

        __snake_case           =						torch.clamp(2 * (images / 255 - 0.5)       ,   min=-1.0       ,   max=1.0      )
        return images










"""simple docstring"""

from typing import TYPE_CHECKING

from ..utils import _LazyModule


a							      =     {
    '''config''': [
        '''EXTERNAL_DATA_FORMAT_SIZE_LIMIT''',
        '''OnnxConfig''',
        '''OnnxConfigWithPast''',
        '''OnnxSeq2SeqConfigWithPast''',
        '''PatchingSpec''',
    ],
    '''convert''': ['''export''', '''validate_model_outputs'''],
    '''features''': ['''FeaturesManager'''],
    '''utils''': ['''ParameterFormat''', '''compute_serialized_parameters_size'''],
}


if TYPE_CHECKING:
       from .config import (
           EXTERNAL_DATA_FORMAT_SIZE_LIMIT,
           OnnxConfig,
           OnnxConfigWithPast,
           OnnxSeqaSeqConfigWithPast,
           PatchingSpec,
       )
       from .convert import export, validate_model_outputs
       from .features import FeaturesManager
       from .utils import ParameterFormat, compute_serialized_parameters_size

else:
       import sys

       a							      =     _LazyModule(__name__, globals()['''__file__'''], _import_structure, module_spec=__spec__)

