+
     i1#  c                  s    ^ RI Ht ^ RIt^ RIHt ^ RIHt ^RIHtH	t	H
t
Ht Rt]'       d   ^RIHt  ! R R	4      tR
 R ltR R ltR R ltRR R lltRR R lltRR R lltRR R lltR R ltR# )    )annotationsN)Sequence)IO)GimpGradientFileGimpPaletteFile
ImageColorPaletteFileF)Imagec                  s    ] tR t^tRtRR R llt]R R l4       t]P                  R R l4       t]R	 R
 l4       t	]	P                  R R l4       t	R R lt
R R ltR R lt]tRR R lltRR R lltR R ltRtR# )ImagePalettea  
Color palette for palette mapped images

:param mode: The mode to use for the palette. See:
    :ref:`concept-modes`. Defaults to "RGB"
:param palette: An optional palette. If given, it must be a bytearray,
    an array or a list of ints between 0-255. The list must consist of
    all channels for one color followed by the next color (e.g. RGBRGBRGB).
    Defaults to an empty palette.
Nc               $    V ^8  d   QhRRRRRR/# )   modestrpalettez(Sequence[int] | bytes | bytearray | NonereturnNone Zformat   "7/usr/lib64/python3.14/site-packages/PIL/ImagePalette.py__annotate__ImagePalette.__annotate__+   s(     & && :& 
	&    c                	s`    Wn         R V n        T;'       g    \        4       V n        R V n        R # N)r   rawmode	bytearrayr   dirty)selfr   r   s   &&&r   __init__ZImagePalette.__init__+   s(    
 	#'--)+!%
r   c                   V ^8  d   QhRR/# )r   r   !Sequence[int] | bytes | bytearrayr   r   r   r   r   r   6   s      : r   c                	s    V P                   # r   )_paletter      &r   r   ImagePalette.palette5   s    }}r   c                    V ^8  d   QhRRRR/# )r   r   r   r   r   r   r   r   r   r   r   :   s        @  T  r   c                	s     R V n         Wn        R # r   )_colorsr    )r   r      &&r   r   r#   9   s    :>r   c               r   )r   r   dict[tuple[int, ...], int]r   r   r   r   r   r   ?   s     	 	2 	r   c                	sF   V P                   f   \        V P                  4      p/ V n         \        ^ \        V P                  4      V4       FH  p\        V P                  W"V,            4      pW0P                   9   d   K3  W!,          V P                   V&   KJ  	  V P                   # r   )r%   lenr   ranger   tuple)r   Zmode_lenicolor   &   r   colorsImagePalette.colors>   s|    <<499~HDL1c$,,/:dll18|<=LL(&'mU#	 ;
 ||r   c               r$   )r   r.   r'   r   r   r   r   r   r   r   r   K   s      7 D r   c                	s    Wn         R # r   )r%   )r   r.   r&   r   r.   r/   J   s    r   c               r   )r   r   r	   r   r   r   r   r   r   N   s     	 	l 	r   c                	s    \        4       pV P                  Vn        V P                  Vn        V P                  e   V P                  R,          Vn        V P                  Vn        V# )N:NNN)r	   r   r   r   r   )r   Znew   & r   copyZImagePalette.copyN   sH    n99ll<<#,,q/CKJJ	
r   c               r   )r   r   z-tuple[str, Sequence[int] | bytes | bytearray]r   r   r   r   r   r   Y   s     	) 	)F 	)r   c                s    V P                   '       d   V P                   V P                  3# V P                  V P                  4       3# )z
Get palette contents in format suitable for the low-level
``im.putpalette`` primitive.

.. warning:: This method is experimental.
)r   r   r   tobytesr!   r"   r   getdataZImagePalette.getdataY   s5     <<<<<--yy$,,.((r   c               r   )r   r   bytesr   r   r   r   r   r   d   s       r   c                s    V P                   '       d   Rp\        V4      h\        V P                  \        4      '       d   V P                  # \
        P
                  ! RV P                  4      pVP                  4       # )zEConvert palette to bytes.

.. warning:: This method is experimental.
!palette contains raw palette dataZB)r   
ValueError
isinstancer   r4   arrayr2   )r   msgZarr   &  r   r2   ZImagePalette.tobytesd   sW    
 <<<5CS/!dllE**<<kk#t||,{{}r   c               r
   )r   imageImage.Image | NoneezException | Noner   intr   r   r   r   r   r   t   s$      '3C	r   c                	s*   \        V P                  \        4      '       g   \        V P                  4      V n        \	        V P                  4      ^,          pRpV'       dH   VP
                  P                  R4      VP
                  P                  R4      3pW49   d   V^,          pK  VR8  de   V'       dH   \        \        \        VP                  4       4      4      4       F  w  rVV^ 8X  g   K  WT9  g   K  Tp M	  VR8  d   Rp\        V4      VhV# )   Z
backgroundZtransparency   z$cannot allocate more than 256 colorsr   )r7   r   r   r    r(   ZinfoZgetZreversedlistZ	enumerateZ	histogramr6   )r   r;   r=   indexZspecial_colorsr+   Zcountr9   s   &&&     r   _new_color_indexZImagePalette._new_color_indext   s     $,,	22%dll3DMDLL!Q&CE

|,

~.N )
C< (i8I.J)K LHAza&= ! !M |< o1,r   c               r
   )r   r,   ztuple[int, ...]r;   r<   r   r>   r   r   r   r   r   r      s(     )" )")" ")" 
	)"r   c                s   V P                   '       d   Rp\        V4      h\        V\        4      '       d   V P                  R8X  d6   \        V4      ^8X  d%   V^,          ^8w  d   Rp\        V4      hVR,          pM*V P                  R8X  d   \        V4      ^8X  d
   VR,          p V P                  V,          # R\        V4       2p\        V4      h  \         d   pT P                  Y$4      p\        T P                  \        4      '       g   Q hYPP                  T&   T^,          \        T P                  4      8  dO   T P                  RT^,           \        T4      ,           T P                  T^,          ^,           R ,           T n	        M"T ;P                  \        T4      ,          un	        ^T n        Tu Rp?# Rp?ii ; i)	zWGiven an rgb tuple, allocate palette entry.

.. warning:: This method is experimental.
r5   RGBz/cannot add non-opaque RGBA color to RGB palette:Nr?   NZRGBANzunknown color specifier: )i   )r   r6   r7   r*   r   r(   r.   ZKeyErrorrC   r    r   r   r4   r   Zrepr)r   r,   r;   r9   r=   rB   s   &&&   r   getcolorZImagePalette.getcolor   sn    <<<5CS/!eU##yyE!u:?Qx3O(o-!"IEf$u:?VOE{{5))" .d5k];CS/!#  --e7!$--;;;;%*E"19s4<<00k	2,'--	A89 M MMU5\1M
s   'C GCF>8G>Gc               r$   )r   fpzstr | IO[str]r   r   r   r   r   r   r   r      s      }  r   c                s   V P                   '       d   Rp\        V4      h\        V\        4      '       d   \	        VR4      pVP                  R4       VP                  RV P                   R24       \        R4       F  pVP                  V 4       \        V\        V P                  4      ,          V^,           \        V P                  4      ,          4       F)  p VP                  RV P                  V,           24       K+  	  VP                  R4       K  	  VP                  4        R	#   \         d    TP                  R4        Ks  i ; i)
zFSave palette to text file.

.. warning:: This method is experimental.
r5   Zwz
# Palette
z# Mode: Z
r@   Z z 0N)r   r6   r7   r   openZwriter   r)   r(   r   Z
IndexErrorZclose)r   rF   r9   r+   Zjs   &&   r   saveZImagePalette.save   s    
 <<<5CS/!b#b#B

8DII;b)*sAHHs1s499~-ATYY/GH#HHqa 123 I
 HHTN  	
 " #HHTN#s   %D--EE)r%   r    r   r   r   r   )rD   N)NNr   )Z__name__Z
__module__Z__qualname__Z__firstlineno__Z__doc__r   Zpropertyr   Zsetterr.   r1   r3   r2   ZtostringrC   rE   rH   Z__static_attributes__r   r   r   r	   r	      s    	&   ^^    	 	 ]] 		) H4)"V r   r	   c               r
   )r   r   r   datar   r   r	   r   r   r   r   r   r      s"       = , r   c                s@    \        4       pWn        Wn        ^Vn        V# )i   )r	   r   r   r   )r   rI   r   s   && r   rawrJ      s    nGOOGMNr   c               r
   )r   blackr>   whitefloatr   	list[int]r   r   r   r   r   r      s!     # #3 #u # #r   c                s    V ^ 8X  d2   \        R4       Uu. uF  p\        W,          ^,          4      NK  	  up# Rp\        V4      hu upi )r    r@   z"unavailable when black is non-zero)r)   r>   ZNotImplementedError)rK   rL   r+   r9   s   &&  r   make_linear_lutrO      sC    z/4Sz:z!EI$%z::
.C
c
"" ;s   !Ac               r$   )r   exprM   r   rN   r   r   r   r   r   r      s     I I I) Ir   c                s    \        R 4       Uu. uF*  p\        VR,          V ,          R,          R,           4      NK,  	  up# u upi )r@   g     o@g      ?)r)   r>   )rP   r+   r0   r   make_gamma_lutrQ      s6    =B3ZHZC!e)#u,s23ZHHHs   0Ac               r$   r   r   r   r   r	   r   r   r   r   r   r      s     A A3 A< Ar   c           
     s    \        \        R \        V 4      ,          4      4      pVP                  4        \	        Y Uu. uF  q"\        V 4      ,          NK  	  up4      # u upi r@   )rA   r)   r(   Zreverser	   r   r   r+   r:   r   negativerU      sJ    5s4y)*GOOw?w!CI~~w?@@?s   A
c               r$   rR   r   r   r   r   r   r      s     ' ' ' 'r   c                s    ^ RI Hp \        R\        V 4      ,          4       Uu. uF  q!! ^ ^4      NK  	  pp\	        W4      # u upi )r    )randintr@   )randomrV   r)   r(   r	   )r   rV   Z_r   r-   r   rW   rW      s?    (-cCIo(>?(>1wq#(>G?&& @s   Ac               r$   )r   rL   r   r   r	   r   r   r   r   r   r      s     O O O\ Or   c           	     s    \         P                  ! V 4       Uu. uF  p\        ^ V4      NK  	  pp\        R\	        R4       Uu. uF   q2V^,          ,          V^,          ,          NK"  	  up4      # u upi u upi )r    rD   i   )r   ZgetrgbrO   r	   r)   )rL   ZbandZbandsr+   r-   r   sepiarX      se    2<2C2CE2JK2J$_Q%2JEKeGnMna!eQ!V 4 4nMNN LMs   A0&A5
c               r$   rR   r   r   r   r   r   r      s     A A A Ar   c           
     s    \        \        R \        V 4      ,          4      4      p\        Y Uu. uF  q"\        V 4      ,          NK  	  up4      # u upi rS   )rA   r)   r(   r	   rT   r:   r   wedgerY      s@    5s4y)*Gw?w!CI~~w?@@?s   A
c               r$   )r   filenamer   r   ztuple[bytes, str]r   r   r   r   r   r     s      3 , r   c                s   \        V R 4      ;_uu_ 4       p\        P                  \        P                  \        P                  .pV F5  p VP	                  ^ 4       V! V4      P                  4       pV'       d    MK7  	  Rp\        V4      h RRR4       V#   \        \        3 d     Ke  i ; i  + '       g   i     X# ; i)Zrbzcannot load paletteN)	rG   r   r   r   ZseekZ
getpaletteZSyntaxErrorr6   ZOSError)rZ   rF   ZpaletteHandlersZpaletteHandlerZlutr9   s   &     r   loadr[     s     
h		 ++--##
 	 .N
$R(335 	 . (C#, # 
0 J  , % 
	0 Js/   5B0/B:B0B-	)B0,B-	-B00C	)rD   )z#fff0c0)Z
__future__r   r8   Zcollections.abcr   Ztypingr   Z r   r   r   r   ZTYPE_CHECKINGr   r	   rJ   rO   rQ   rU   rW   rX   rY   r[   r   r   r   <module>r\      s]   $ #  $  H Hn nj#IA'O
A
r   