
    g-                       d dl mZ d dlmZ d dlmZmZ ddlmZm	Z	 	 ddlm
Z
 dZdddd	Zddd
ZddddZddZ G d de	j                        ZddZddZ ej(                  ej*                  ee       er ej,                  ej*                  e       e
j.                  r ej0                  ej*                  e        ej2                  ej*                  d        ej4                  ej*                  d       yy# e$ r dZY w xY w)    )annotations)BytesIO)IOAny   )Image	ImageFile)_webpTF)RGBXRGBARGB)r   r   r   r   )s   VP8 s   VP8Xs   VP8Lc                X    | d d dk(  }| dd dk(  }| dd t         v }|r|r|r	t        s	 yyy	)
N   s   RIFF      s   WEBP   zEimage file could not be identified because WEBP support not installedTF)_VP8_MODES_BY_IDENTIFIER	SUPPORTED)prefixis_riff_file_formatis_webp_fileis_valid_vp8_modes       H/var/www/openai/venv/lib/python3.12/site-packages/PIL/WebPImagePlugin.py_acceptr      sP     !*/!B<7*Lr")AA|0AW     c                  r     e Zd ZdZdZdZdZddZddZddZ	dddZ
d Zdd	Z fd
ZddZd fdZ xZS )WebPImageFileWEBPz
WebP imager   c                F   t         j                  st        j                  | j                  j	                               \  }}}| _        }}|r|| j                  d<   |r|| j                  d<   ||f| _        t        |      | _        dd| j                  z   d| j                  fg| _        d| _        d| _        y t        j                  | j                  j	                               | _        | j                  j!                         \  }}}}}}	||f| _        || j                  d<   |d	z	  d
z  |dz	  d
z  |dz	  d
z  |d
z  f\  }
}}}||||
f| j                  d<   || _        | j                  dkD  | _        |	dk(  rdn|	| _        |	| _        g | _        | j                  j%                  d      }| j                  j%                  d      }| j                  j%                  d      }|r|| j                  d<   |r|| j                  d<   |r|| j                  d<   | j'                  d       y )Nicc_profileexifrawr   r   r   r   Floop      r   r   
backgroundr   r   ICCPEXIFzXMP xmp)reset)r
   HAVE_WEBPANIM
WebPDecodefpread_modeinfo_sizer   sizemodetilen_framesis_animatedWebPAnimDecoder_decoderget_inforawmode	get_chunk_reset)selfdatawidthheightr    r!   
loop_countbgcolorframe_countr4   bg_abg_rbg_gbg_br*   s                  r   _openzWebPImageFile._open/   s   ""AFAQAQB>D%[$ +6		-($(		&!DJdmDG$))!3Q		BCDIDM$D --dgglln= AE@V@V@X=vz7KF]
&		&]d"]d"\T!dN	"
dD$ $(tT":		,#==1,"fnU$
	 mm--f5}}&&v.mm%%f-'2DIIm$ $DIIf"DIIe 	% r   c                \    d| j                   vry | j                         j                         S )Nr!   )r1   getexif_get_merged_dict)r>   s    r   _getexifzWebPImageFile._getexifc   s&    "||~..00r   c                6    | j                  |      sy || _        y N)_seek_check_WebPImageFile__logical_framer>   frames     r   seekzWebPImageFile.seekh   s    &  %r   c                f    |r| j                   j                          d| _        d| _        d| _        y )Nr   )r9   r+   _WebPImageFile__physical_frame_WebPImageFile__loaded_WebPImageFile__timestamp)r>   r+   s     r   r=   zWebPImageFile._reseto   s,    MM! !r   c                
   | j                   j                         }| xj                  dz  c_        |.| j                          | j	                  d       d}t        |      |\  }}|| j                  z
  }|| _        ||z  }|||fS )Nr   r   z(failed to decode next frame in WebP file)r9   get_nextrW   r=   rT   EOFErrorrY   )r>   retmsgr?   	timestampdurations         r   	_get_nextzWebPImageFile._get_nextv   s    mm$$&" ;KKMIIaL<C3- it///$ 	X	Y((r   c                    | j                   |k(  ry || j                   k  r| j                          | j                   |k  r!| j                          | j                   |k  r y y rO   )rW   r=   ra   rR   s     r   _seekzWebPImageFile._seek   sR      E)4(((KKM##e+NN ##e+r   c                   t         j                  r| j                  | j                  k7  r| j	                  | j                         | j                         \  }}}|| j                  d<   || j                  d<   | j                  | _        | j                  r&| j                  r| j                  j                          t        |      | _        dd| j                  z   d| j                  fg| _        t        | =         S )Nr_   r`   r"   r#   r   )r
   r,   rX   rQ   rc   ra   r1   r.   _exclusive_fpcloser   r3   r;   r5   superload)r>   r?   r_   r`   	__class__s       r   rh   zWebPImageFile.load   s    }} 4 44

4//0 -1NN,<)i)2		+&(0		*% $ 4 4 77t11GGMMO!$-#Vdii%7DLLIJ	w|~r   c                     y rO    )r>   poss     r   	load_seekzWebPImageFile.load_seek   s    r   c                X    t         j                  st        |          S | j                  S rO   )r
   r,   rg   tellrQ   )r>   ri   s    r   ro   zWebPImageFile.tell   s$    ""7<>!###r   )returnNone)rp   zdict[str, Any] | None)rS   intrp   rq   )T)r+   boolrp   rq   )rl   rr   rp   rq   )rp   rr   )__name__
__module____qualname__formatformat_descriptionrX   rQ   rI   rM   rT   r=   ra   rc   rh   rm   ro   __classcell__)ri   s   @r   r   r   )   sK    F%HO2!h1
%)*&$ $r   r   c                (
   | j                   j                         }t        |j                  dg             }d}| g|z   D ]  }|t	        |dd      z  } |dk(  rt        | ||       y d}d|v r|d   }n^d| j                  v rP| j                  d   }t        |t              r1| j                         }|r||dz  |dz   dz   \  }	}
}|	|
|df}n|||df}| j                   j                  d	| j                  j                  d	d            }| j                   j                  d
d      }| j                   j                  dd      }| j                   j                  dd       }| j                   j                  dd       }| j                   j                  dd      }d}| j                   j                  dd      }| j                   j                  dd      }| j                   j                  dd      }| j                   j                  dd      }| j                   j                  d      xs d}| j                   j                  dd      }t        |t        j                        r|j                         }| j                   j                  dd      }|rd}||rdnd}||rdnd}t        |t        t        f      r t        |      dk7  st        d |D              sd| }t!        |      |\  }}}}|d z  |d!z  z  |d"z  z  |dz  z  }t#        j$                  | j&                  d   | j&                  d   |||||||	      }d} d}!| j)                         }"	 | g|z   D ]C  }t	        |dd      }#t+        |#      D ]$  }$|j-                  |$       |j/                          |}%|j0                  }&|j0                  t2        vrdd#|j0                  v xs= d$|j0                  v xs- |j0                  d%k(  xr d#|j4                  j7                         v }'|'rd&nd'}&|j9                  |&      }%|&d'k(  rd(}&|j;                  |%j                  d)|&      t=        |!      |%j&                  d   |%j&                  d   |&||||	       t        |t        t        f      r	|!||    z  }!n|!|z  }!| dz  } ' F 	 | j-                  |"       |j;                  d t=        |!      ddd|||d	       |j?                  |||      }(|(d*}t!        |      |jA                  |(       y # | j-                  |"       w xY w)+Nappend_imagesr   r6   r   )r   r   r   r   r'      r&   r`   r$   minimize_sizeFkminkmaxallow_mixedlosslessqualityP   alpha_qualityd   methodr     r!   r*   	         r   c              3  <   K   | ]  }d |cxk  xr dk  nc   yw)r      Nrk   ).0vs     r   	<genexpr>z_save_all.<locals>.<genexpr>   s     4A1<C<<s   z:Background color is not an RGBA tuple clamped to (0-255): r%   r   r   AaPr   r   r   r"   1cannot write file as WebP (encoder returned None))!encoderinfocopylistgetgetattr_saver1   
isinstancerr   
getpaletter   ExiftobytestuplelenallOSErrorr
   WebPAnimEncoderr3   ro   rangerT   rh   r4   _VALID_WEBP_MODESimgetpalettemodeconvertaddroundassemblewrite))r   r.   filenamer   r{   totalimsr'   palettergbr`   r$   r}   r~   r   r   verboser   r   r   r   r    r!   r*   r^   rF   rG   rH   rE   enc	frame_idxr_   cur_idxnfridxrS   r;   alphar?   s)                                            r   	_save_allr      s   ..%%'K"=>M Etm#j!,, $zb"h(4J{" .
		 WW\*
j#& mmoG!*q.JNa3GH1aAs^
(*j#F
~~!!*bggkk*a.HIH>>fa(DNN&&>M>>fd+D>>fd+D..$$]E:KG~~!!*e4Hnn  B/GNN&&<M^^!,F..$$]39rK>>fb)D$

#||~
..

UB
'C |q!|r1 zD%=1z?a444J:,Wcl (D$d"*,	:daiHJ 






C IIggiG.4-'C#z1-CSz
 ((88#44sxx P#((?PHHONsvv7L7L7N0N 
 ).f5GKK0Ee#$G MM%1)$JJqMJJqM!
 hu6)!44I)IQ	M "	 (Z 	 GGD%	"Aq"hPQR <<T3/D|AclHHTN 	s   	ES> >Tc                   | j                   j                  dd      }| j                   j                  dd      }| j                   j                  dd      }| j                   j                  d      xs d}| j                   j                  d	d
      }t        |t        j                        r|j                         }|j                  d      r|dd  }| j                   j                  dd      }| j                   j                  dd      }	| j                   j                  d      rdnd}
| j                  t        vr| j                  | j                  rdnd      } t        j                  | j                         | j                  d   | j                  d   |t        |      t        |      | j                  ||	|
||      }|d}t        |      |j!                  |       y )Nr   Fr   r   r   r   r    r   r!   r   s   Exif     r*   r   r   exactr   r   r   r   r   )r   r   r   r   r   r   
startswithr4   _VALID_WEBP_LEGACY_MODESr   has_transparency_datar
   
WebPEncoder3   floatr   r   )r   r.   r   r   r   r   r    r!   r*   r   r   r?   r^   s                r   r   r   ?  s   ~~!!*e4Hnn  B/GNN&&<M..$$]39rK>>fc*D$

#||~'ABx
..

UB
'C^^!,F##G,A!E	ww..ZZ"":":F






gm
D |AclHHTNr   z.webpz
image/webpN)r   bytesrp   z
bool | str)r   zImage.Imager.   z	IO[bytes]r   zstr | bytesrp   rq   )
__future__r   ior   typingr   r   r   r   r	   r
   r   ImportErrorr   r   r   r   r   r   r   register_openrw   register_saver,   register_save_allregister_extensionregister_mimerk   r   r   <module>r      s   "   I
 "4= #'6   D$I'' D$NL^#L   M((- AE,,e4 4 4i@E]117;E,,l; u
  Is   C: :DD