
    +hE                     z    S SK rS SKrS SKJr  S SKJrJrJr  SSK	J
r
  \
R                  " \5      r " S S\5      rg)    N)
CLIPConfigCLIPVisionModelWithProjectionPreTrainedModel   )loggingc                   l   ^  \ rS rSr\rS/rS\4U 4S jjr\R                  " 5       SS j5       r
SrU =r$ )IFSafetyChecker   CLIPEncoderLayerconfigc                   > [         TU ]  U5        [        UR                  5      U l        [
        R                  " UR                  R                  S5      U l        [
        R                  " UR                  R                  S5      U l	        g )N   )
super__init__r   vision_configvision_modelnnLinearprojection_dimp_headw_head)selfr   	__class__s     i/home/james-whalen/.local/lib/python3.13/site-packages/diffusers/pipelines/deepfloyd_if/safety_checker.pyr   IFSafetyChecker.__init__   s_     9&:N:NOii 4 4 C CQGii 4 4 C CQG    c                    U R                  U5      S   nU R                  U5      nUR                  5       nXc:  nUR                  5       n[	        U5      (       a  [
        R                  S5        [        U5       H2  u  pxU(       d  M  [        R                  " X'   R                  5      X''   M4     U R                  U5      n	U	R                  5       n	X:  n	U	R                  5       n	[	        U	5      (       a  [
        R                  S5        [        U	5       H2  u  pzU
(       d  M  [        R                  " X'   R                  5      X''   M4     X&U	4$ )Nr   zPotential 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.zPotential 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.)r   r   flattentolistanyloggerwarning	enumeratenpzerosshaper   )r   
clip_inputimagesp_thresholdw_thresholdimage_embedsnsfw_detectedidxnsfw_detected_watermark_detectedwatermark_detected_s              r   forwardIFSafetyChecker.forward   s/   ((4Q7L1%--/%3%,,.}NNB
 $-]#;C~ hhv{'8'89 $< "[[6/779/=/668!""NNB
 )22D(E$C"" hhv{'8'89 )F &888r   )r   r   r   )      ?r3   )__name__
__module____qualname____firstlineno__r   config_class_no_split_modulesr   torchno_gradr1   __static_attributes____classcell__)r   s   @r   r	   r	      s9    L+,Hz H ]]_!9 !9r   r	   )numpyr$   r:   torch.nnr   transformersr   r   r   utilsr   
get_loggerr4   r!   r	    r   r   <module>rD      s5       S S  
		H	%/9o /9r   