+
    UBi1#                        ^ 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                      ] 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 )formats   "5/usr/lib/python3.14/site-packages/PIL/ImagePalette.py__annotate__ImagePalette.__annotate__+   s(     & && :& 
	&    c                	`    Wn         R V n        T;'       g    \        4       V n        R V n        R # N)r   rawmode	bytearrayr   dirty)selfr   r   s   &&&r   __init__ImagePalette.__init__+   s(    
 	#'--)+!%
r   c                   V ^8  d   QhRR/# )r   r   !Sequence[int] | bytes | bytearrayr   )r   s   "r   r   r   6   s      : r   c                	    V P                   # r   )_paletter   s   &r   r   ImagePalette.palette5   s    }}r   c                    V ^8  d   QhRRRR/# )r   r   r#   r   r   r   )r   s   "r   r   r   :   s        @  T  r   c                	     R V n         Wn        R # r   )_colorsr%   )r   r   s   &&r   r   r'   9   s    :>r   c                   V ^8  d   QhRR/# )r   r   dict[tuple[int, ...], int]r   )r   s   "r   r   r   ?   s     	 	2 	r   c                	F   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   mode_lenicolors   &   r   colorsImagePalette.colors>   s|    <<499~HDL1c$,,/:dll18|<=LL(&'mU#	 ;
 ||r   c                    V ^8  d   QhRRRR/# )r   r4   r,   r   r   r   )r   s   "r   r   r   K   s      7 D r   c                	    Wn         R # r   )r*   )r   r4   s   &&r   r4   r5   J   s    r   c                   V ^8  d   QhRR/# )r   r   r   r   )r   s   "r   r   r   N   s     	 	l 	r   c                	    \        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   news   & r   copyImagePalette.copyN   sH    n99ll<<#,,q/CKJJ	
r   c                   V ^8  d   QhRR/# )r   r   z-tuple[str, Sequence[int] | bytes | bytearray]r   )r   s   "r   r   r   Y   s     	) 	)F 	)r   c                    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&   s   &r   getdataImagePalette.getdataY   s5     <<<<<--yy$,,.((r   c                   V ^8  d   QhRR/# )r   r   bytesr   )r   s   "r   r   r   d   s       r   c                    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 dataB)r   
ValueError
isinstancer   rC   arrayr?   )r   msgarrs   &  r   r?   ImagePalette.tobytesd   sW    
 <<<5CS/!dllE**<<kk#t||,{{}r   c               $    V ^8  d   QhRRRRRR/# )r   imageImage.Image | NoneezException | Noner   intr   )r   s   "r   r   r   t   s$      '3C	r   c                	*   \        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# )   
backgroundtransparency   z$cannot allocate more than 256 colorsr   )rH   r   r   r%   r.   infogetreversedlist	enumerate	histogramrG   )r   rN   rP   indexspecial_colorsr2   countrJ   s   &&&     r   _new_color_indexImagePalette._new_color_indext   s     $,,	22%dll3DMDLL!Q&CE

|,

~.N )
C< (i8I.J)K LHAza&= ! !M |< o1,r   c               $    V ^8  d   QhRRRRRR/# )r   r3   ztuple[int, ...]rN   rO   r   rQ   r   )r   s   "r   r   r      s(     )" )")" ")" 
	)"r   c                   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.
rE   RGBz/cannot add non-opaque RGBA color to RGB palette:NrS   NRGBANzunknown color specifier: )   )r   rG   rH   r0   r   r.   r4   KeyErrorr`   r%   r   r   rC   r   repr)r   r3   rN   rJ   rP   r]   s   &&&   r   getcolor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                    V ^8  d   QhRRRR/# )r   fpzstr | IO[str]r   r   r   )r   s   "r   r   r      s      }  r   c                   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.
rE   wz
# Palette
z# Mode: 
rV    z 0N)r   rG   rH   r   openwriter   r/   r.   r   
IndexErrorclose)r   rl   rJ   r2   js   &&   r   save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   )__name__
__module____qualname____firstlineno____doc__r    propertyr   setterr4   r;   r@   r?   tostringr`   ri   rv   __static_attributes__r   r   r   r   r      s    	&   ^^    	 	 ]] 		) H4)"V r   r   c               $    V ^8  d   QhRRRRRR/# )r   r   r   datar#   r   r   r   )r   s   "r   r   r      s"       = , r   c                @    \        4       pWn        Wn        ^Vn        V# )   )r   r   r   r   )r   r   r   s   && r   rawr      s    nGOOGMNr   c               $    V ^8  d   QhRRRRRR/# )r   blackrQ   whitefloatr   	list[int]r   )r   s   "r   r   r      s!     # #3 #u # #r   c                    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   rV   z"unavailable when black is non-zero)r/   rQ   NotImplementedError)r   r   r2   rJ   s   &&  r   make_linear_lutr      sC    z/4Sz:z!EI$%z::
.C
c
"" ;s   !Ac                    V ^8  d   QhRRRR/# )r   expr   r   r   r   )r   s   "r   r   r      s     I I I) Ir   c                    \        R 4       Uu. uF*  p\        VR,          V ,          R,          R,           4      NK,  	  up# u upi )rV   g     o@g      ?)r/   rQ   )r   r2   s   & r   make_gamma_lutr      s6    =B3ZHZC!e)#u,s23ZHHHs   0Ac                    V ^8  d   QhRRRR/# r   r   r   r   r   r   )r   s   "r   r   r      s     A A3 A< Ar   c           
         \        \        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 rV   )rZ   r/   r.   reverser   r   r   r2   s   &  r   negativer      sJ    5s4y)*GOOw?w!CI~~w?@@?s   A
c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   r      s     ' ' ' 'r   c                    ^ 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   )randintrV   )randomr   r/   r.   r   )r   r   _r   s   &   r   r   r      s?    (-cCIo(>?(>1wq#(>G?&& @s   Ac                    V ^8  d   QhRRRR/# )r   r   r   r   r   r   )r   s   "r   r   r      s     O O O\ Or   c           	         \         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   getrgbr   r   r/   )r   bandbandsr2   s   &   r   sepiar      se    2<2C2CE2JK2J$_Q%2JEKeGnMna!eQ!V 4 4nMNN LMs   A0&A5
c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   r      s     A A A Ar   c           
         \        \        R \        V 4      ,          4      4      p\        Y Uu. uF  q"\        V 4      ,          NK  	  up4      # u upi r   )rZ   r/   r.   r   r   s   &  r   wedger      s@    5s4y)*Gw?w!CI~~w?@@?s   A
c                    V ^8  d   QhRRRR/# )r   filenamer   r   ztuple[bytes, str]r   )r   s   "r   r   r     s      3 , r   c                   \        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)rbzcannot load paletteN)	rq   r   r   r	   seek
getpaletteSyntaxErrorrG   OSError)r   rl   paletteHandlerspaletteHandlerlutrJ   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)
__future__r   rI   collections.abcr   typingr    r   r   r   r	   TYPE_CHECKINGr
   r   r   r   r   r   r   r   r   r   r   r   r   <module>r      s]   $ #  $  H Hn nj#IA'O
A
r   