
import unittest

from transformers import DonutProcessor


lowercase__	:Optional[int]										=					"naver-clova-ix/donut-base"







class        lowercase	(      unittest.TestCase	):




		def 				A__   (       self):
							lowercase					=		DonutProcessor.from_pretrained(A__)





		def 				A__   (       self):
							lowercase					=		{
							    '''name''': '''John Doe''',
							    '''age''': '''99''',
							    '''city''': '''Atlanta''',
							    '''state''': '''GA''',
							    '''zip''': '''30301''',
							    '''phone''': '''123-4567''',
							    '''nicknames''': [{'''nickname''': '''Johnny'''}, {'''nickname''': '''JD'''}],
							}

							lowercase					=		(
							    '''<s_name>John Doe</s_name><s_age>99</s_age><s_city>Atlanta</s_city>'''
							    '''<s_state>GA</s_state><s_zip>30301</s_zip><s_phone>123-4567</s_phone>'''
							    '''<s_nicknames><s_nickname>Johnny</s_nickname>'''
							    '''<sep/><s_nickname>JD</s_nickname></s_nicknames>'''
							)
							lowercase					=		self.processor.tokenajson(A__)

							self.assertDictEqual(A__     ,A__)






import numpy as np
import torch
import torch.nn as nn
from transformers import CLIPConfig, CLIPVisionModelWithProjection, PreTrainedModel

from ...utils import logging


lowercase__	:Union[str, Any]										=					logging.get_logger(__name__)







class        lowercase	(      SCREAMING_SNAKE_CASE__	):
							lowercase_ : Union[str, Any]       =CLIPConfig

							lowercase_ : str       =['''CLIPEncoderLayer''']




							def __init__(       self     ,A__):
												super().__init__(A__)

												lowercase					=		CLIPVisionModelWithProjection(config.vision_config)

												lowercase					=		nn.Linear(config.vision_config.projection_dim     ,1)
												lowercase					=		nn.Linear(config.vision_config.projection_dim     ,1)





							@torch.no_grad()
							def 				A__   (       self     ,A__     ,A__     ,A__=0.5     ,A__=0.5):
												lowercase					=		self.vision_model(A__)[0]

												lowercase					=		self.p_head(A__)
												lowercase					=		nsfw_detected.flatten()
												lowercase					=		nsfw_detected > p_threshold
												lowercase					=		nsfw_detected.tolist()

												if any(A__):
																	logger.warning(
																	    '''Potential NSFW content was detected in one or more images. A black image will be returned instead.'''
																	    ''' Try again with a different prompt and/or seed.''')

												for idx, nsfw_detected_ in enumerate(A__):
																	if nsfw_detected_:
																						lowercase					=		np.zeros(images[idx].shape)

												lowercase					=		self.w_head(A__)
												lowercase					=		watermark_detected.flatten()
												lowercase					=		watermark_detected > w_threshold
												lowercase					=		watermark_detected.tolist()

												if any(A__):
																	logger.warning(
																	    '''Potential watermarked content was detected in one or more images. A black image will be returned instead.'''
																	    ''' Try again with a different prompt and/or seed.''')

												for idx, watermark_detected_ in enumerate(A__):
																	if watermark_detected_:
																						lowercase					=		np.zeros(images[idx].shape)

												return images, nsfw_detected, watermark_detected




