
    \hV/                        S SK r S SKJr  S SKJrJrJrJr  S SKr	S SK
r
S SKJrJrJr  SSKJr   S SKr\
R&                  R(                  S\S\4S	 j5       r\
R&                  R(                  S\S\\   4S
 j5       r\
R&                  R(                  S\S\\   4S j5       r\
R&                  R(                  S\S\4S j5       r\
R&                  R(                  S\R                  S\R                  4S j5       r\
R&                  R(                  S\R                  S\R                  4S j5       r\
R&                  R(                  S\R                  S\S\R                  4S j5       r\
R&                  R(                  S\R                  S\S\R                  4S j5       r \
R&                  R(                  S\R                  S\S\R                  4S j5       r!\
R&                  R(                  S\R                  S\S\R                  4S j5       r"\
R&                  R(                   S>S\R                  S\S\S\R                  4S jj5       r#\
R&                  R(                    S?S\R                  S\\\\   \$\S4   4   S\\\\\   \$\S4   4      S\S   S\R                  4
S jj5       r%\
R&                  R(                  S\R                  S \S!\S"\S#\S\R                  4S$ j5       r&\
R&                  R(                  \RN                  4S\R                  S%\\\   \4   S&\S\R                  4S' jj5       r(\
R&                  R(                   S@S\\\\\   \$\S4   4      S\R                  S(\)S\*\)\\\\\   \$\S4   4      4   4S) jj5       r+\
R&                  R(                  \RX                  S4S\R                  S*\\   S&\S\\\\\\   \\   4      S\R                  4
S+ jj5       r-\
R&                  R(                  \RX                  S,SS4S\R                  S-\S&\S.\S/\\$\\4      S\\\\\\   \\   4      S\R                  4S0 jj5       r.\
R&                  R(                  \R^                  S4S\R                  S1\\   S&\S\\\\\\   \\   4      S\R                  4
S2 jj5       r0\
R&                  R(                  S\R                  S3\S\R                  4S4 j5       r1\
R&                  R(                  S\R                  S\R                  4S5 j5       r2\
R&                  R(                  S\R                  S6\S\R                  4S7 j5       r3\
R&                  R(                  S\R                  S8\S\R                  4S9 j5       r4\
R&                  R(                  S\R                  S:\S\R                  4S; j5       r5\
R&                  R(                  S\R                  S\R                  4S< j5       r6\
R&                  R(                  S\R                  S\R                  4S= j5       r7g! \ a    Sr GNf = f)A    N)Sequence)AnyLiteralOptionalUnion)ImageImageEnhanceImageOps   )_Image_fromarrayimgreturnc                     [         b*  [        U [        R                  [         R                  45      $ [        U [        R                  5      $ N)accimage
isinstancer   r   s    `/var/www/fran/franai/venv/lib/python3.13/site-packages/torchvision/transforms/_functional_pil.py_is_pil_imager      s3    #X^^<==#u{{++    c                     [        U 5      (       aI  [        U S5      (       a  [        U R                  5       5      nOU R                  nU R
                  u  p#XU/$ [        S[        U 5       35      eNgetbandsUnexpected type )r   hasattrlenr   channelssize	TypeErrortype)r   r   widthheights       r   get_dimensionsr#      s`    S3
##3<<>*H||H%((
&tCyk2
33r   c                 z    [        U 5      (       a  [        U R                  5      $ [        S[	        U 5       35      e)Nr   )r   listr   r   r    r   s    r   get_image_sizer&   %   s2    SCHH~
&tCyk2
33r   c                     [        U 5      (       a6  [        U S5      (       a  [        U R                  5       5      $ U R                  $ [        S[        U 5       35      er   )r   r   r   r   r   r   r    r   s    r   get_image_num_channelsr(   ,   sL    S3
##s||~&&<<
&tCyk2
33r   c                     [        U 5      (       d  [        S[        U 5       35      eU R                  [        R
                  5      $ Nimg should be PIL Image. Got )r   r   r    	transposer   FLIP_LEFT_RIGHTr   s    r   hflipr.   6   9    7S	{CDD==..//r   c                     [        U 5      (       d  [        S[        U 5       35      eU R                  [        R
                  5      $ r*   )r   r   r    r,   r   FLIP_TOP_BOTTOMr   s    r   vflipr2   >   r/   r   brightness_factorc                     [        U 5      (       d  [        S[        U 5       35      e[        R                  " U 5      nUR                  U5      n U $ r*   )r   r   r    r	   
Brightnessenhance)r   r3   enhancers      r   adjust_brightnessr8   F   sJ    7S	{CDD&&s+H


,
-CJr   contrast_factorc                     [        U 5      (       d  [        S[        U 5       35      e[        R                  " U 5      nUR                  U5      n U $ r*   )r   r   r    r	   Contrastr6   )r   r9   r7   s      r   adjust_contrastr<   P   sI    7S	{CDD$$S)H


?
+CJr   saturation_factorc                     [        U 5      (       d  [        S[        U 5       35      e[        R                  " U 5      nUR                  U5      n U $ r*   )r   r   r    r	   Colorr6   )r   r=   r7   s      r   adjust_saturationr@   Z   sJ    7S	{CDD!!#&H


,
-CJr   
hue_factorc                    SUs=::  a  S::  d  O  [        SU S35      e[        U 5      (       d  [        S[        U 5       35      eU R                  nUS;   a  U $ U R                  S5      R                  5       u  p4n[        R                  " U[        R                  S9nU[        R                  " US	-  5      R                  [        R                  5      -  n[        US
5      n[        R                  " SX4U45      R                  U5      n U $ )Ng      g      ?zhue_factor (z) is not in [-0.5, 0.5].r+   >   1FILHSVdtype   rF   )
ValueErrorr   r   r    modeconvertsplitnparrayuint8int32astyper   r   merge)r   rA   
input_modehsvnp_hs          r   
adjust_huerZ   d   s    J%#%<
|3KLMM7S	{CDDJ))
kk% &&(GA!88ARXX&DBHHZ#%&--bhh77Ds#A
++eaAY
'
/
/

;CJr   gammagainc           
      t   [        U 5      (       d  [        S[        U 5       35      eUS:  a  [        S5      eU R                  nU R                  S5      n [        S5       Vs/ s H!  n[        SU-  [        US-  U5      -  5      PM#     snS-  nU R                  U5      n U R                  U5      n U $ s  snf )	Nr+   r   z*Gamma should be a non-negative real numberRGB   go@g     o@   )
r   r   r    rK   rL   rM   rangeintpowpoint)r   r[   r\   rU   ele	gamma_maps         r   adjust_gammarg   |   s     7S	{CDDqyEFFJ
++e
CSXY\S]^S]Cn,s3;/FFGS]^abbI
))I
C
++j
!CJ	 _s   #(B5padding.fillpadding_modeconstantedgereflect	symmetricc                    [        U 5      (       d  [        S[        U 5       35      e[        U[        R
                  [        [        45      (       d  [        S5      eUb5  [        U[        R
                  [        [        45      (       d  [        S5      e[        U[        5      (       d  [        S5      e[        U[        5      (       a  [        U5      n[        U[        5      (       a'  [        U5      S;  a  [        S[        U5       S35      e[        U[        5      (       a  [        U5      S:X  a  US	   nUS
;  a  [        S5      eUS:X  ao  [        X SS9nU R                  S:X  a<  U R                  5       n[        R                  " U 4SU0UD6nUR!                  U5        U$ [        R                  " U 4SU0UD6$ [        U["        5      (       a  U=n=n=p[        U[        5      (       a  [        U5      S:X  a  US	   =pxUS   =p[        U[        5      (       a#  [        U5      S:X  a  US	   nUS   n	US   nUS   n
WW	WW
/n[$        R&                  " US	5      * nUR)                  5       (       a4  Uu  pnnU R+                  XU R,                  U-
  U R.                  U-
  45      n [$        R0                  " US	5      u  pypU R                  S:X  ai  U R                  5       n[$        R2                  " U 5      n [$        R4                  " X	U
4Xx44US9n [6        R8                  " U 5      n U R!                  U5        U $ [$        R2                  " U 5      n [        U R:                  5      S:X  a  [$        R4                  " X	U
4Xx4S4U5      n [        U R:                  5      S:X  a  [$        R4                  " X	U
4Xx44U5      n [6        R8                  " U 5      $ )Nr+   zGot inappropriate padding argzGot inappropriate fill argz"Got inappropriate padding_mode arg)   r      z<Padding must be an int or a 1, 2, or 4 element tuple, not a z element tuplerq   r   rk   zBPadding mode should be either constant, edge, reflect or symmetricrl   ri   )namePborderr   rr   r`   )rL   )r   r   )r   r   r    r   numbersNumbertupler%   strr   rK   _parse_fillrL   
getpaletter
   expand
putpaletterb   rO   minimumanycropr!   r"   maximumasarraypadr   	fromarrayshape)r   rh   ri   rj   optspaletteimagepad_left	pad_rightpad_top
pad_bottompcropping	crop_leftcrop_top
crop_rightcrop_bottoms                    r   r   r      sW    7S	{CDDgt<==788
4'..%1N O O455lC((<=='4  .'5!!c'l)&CWX[\cXdWeestuu'5!!c'la&7!*GG]^^z!46288s?nn&GOOC@@4@EW%Ls;7;d;;gs##:AAHAyA7gu%%#g,!*;#*1:-H#*1:-Ggu%%#g,!*;qzHajG
I Jw	:6JJq!$$<<>>;C8I[((IZ1GVaIabcC35::a3C0988s?nn&G**S/C&&4x6KLS_`C//#&CNN7#Jjjosyy>Q&&4x6KVTVbcCsyy>Q&&4x6KLl[Cs##r   topleftr"   r!   c                     [        U 5      (       d  [        S[        U 5       35      eU R                  X!X$-   X-   45      $ r*   )r   r   r    r   )r   r   r   r"   r!   s        r   r   r      s@     7S	{CDD88Tcl;<<r   r   interpolationc                     [        U 5      (       d  [        S[        U 5       35      e[        U[        5      (       a  [        U5      S:X  d  [        SU 35      eU R                  [        US S S2   5      U5      $ )Nr+   r   zGot inappropriate size arg: )r   r   r    r   r%   r   resizerx   )r   r   r   s      r   r   r      sn     7S	{CDDtT""s4yA~6tf=>>::eD2J'77r   rs   c                    [        U5      nU c  Sn [        U [        [        45      (       a  US:  a  [	        U /U-  5      n [        U [
        [        45      (       aT  [        U 5      S:X  a  X-  n O5[        U 5      U:w  a&  Sn[        UR                  [        U 5      U5      5      e[	        U 5      n UR                  S:w  a;  [        U [
        [        45      (       a  [	        S U  5       5      n X 0$ [        U 5      n X 0$ )Nr   rq   z^The number of elements in 'fill' does not match the number of channels of the image ({} != {})rD   c              3   8   #    U  H  n[        U5      v   M     g 7fr   )rb   ).0xs     r   	<genexpr>_parse_fill.<locals>.<genexpr>  s     .AQs   )
r(   r   rb   floatrx   r%   r   rK   formatrL   )ri   r   rs   num_channelsmsgs        r   rz   rz      s     *#.L|$e%%,*:dVl*+$u&&t9>&DY,&rCSZZD	<@AAT{
xx3dT5M**...D < t9D<r   matrixc                     [        U 5      (       d  [        S[        U 5       35      eU R                  n[	        X05      nU R
                  " U[        R                  X40 UD6$ r*   )r   r   r    r   rz   	transformr   AFFINE)r   r   r   ri   output_sizer   s         r   affiner     sU     7S	{CDD((Kt!D==ellFRTRRr   Fangler|   centerc                     [        U 5      (       d  [        S[        U 5       35      e[        XP5      nU R                  " XX440 UD6$ r*   )r   r   r    rz   rotate)r   r   r   r|   r   ri   r   s          r   r   r   /  sF     7S	{CDDt!D::eFCdCCr   perspective_coeffsc                     [        U 5      (       d  [        S[        U 5       35      e[        X05      nU R                  " U R
                  [        R                  X40 UD6$ r*   )r   r   r    rz   r   r   r   PERSPECTIVE)r   r   r   ri   r   s        r   perspectiver   @  sT     7S	{CDDt!D==5#4#46H`[_``r   num_output_channelsc                 X   [        U 5      (       d  [        S[        U 5       35      eUS:X  a  U R                  S5      n U $ US:X  aZ  U R                  S5      n [        R
                  " U [        R                  S9n[        R                  " X"U/5      n[        US5      n U $ [        S5      e)Nr+   rq   rF   r`   rH   r^   z+num_output_channels should be either 1 or 3)
r   r   r    rM   rO   rP   rQ   dstackr   rK   )r   r   np_imgs      r   to_grayscaler   P  s    7S	{CDDakk# J 
	!kk##RXX.FF34vu- J FGGr   c                 |    [        U 5      (       d  [        S[        U 5       35      e[        R                  " U 5      $ r*   )r   r   r    r
   invertr   s    r   r   r   b  s3    7S	{CDD??3r   bitsc                 |    [        U 5      (       d  [        S[        U 5       35      e[        R                  " X5      $ r*   )r   r   r    r
   	posterize)r   r   s     r   r   r   i  s5    7S	{CDDc((r   	thresholdc                 |    [        U 5      (       d  [        S[        U 5       35      e[        R                  " X5      $ r*   )r   r   r    r
   solarize)r   r   s     r   r   r   p  s5    7S	{CDDS,,r   sharpness_factorc                     [        U 5      (       d  [        S[        U 5       35      e[        R                  " U 5      nUR                  U5      n U $ r*   )r   r   r    r	   	Sharpnessr6   )r   r   r7   s      r   adjust_sharpnessr   w  sJ    7S	{CDD%%c*H


+
,CJr   c                 |    [        U 5      (       d  [        S[        U 5       35      e[        R                  " U 5      $ r*   )r   r   r    r
   autocontrastr   s    r   r   r     s5    7S	{CDD  %%r   c                 |    [        U 5      (       d  [        S[        U 5       35      e[        R                  " U 5      $ r*   )r   r   r    r
   equalizer   s    r   r   r     s5    7S	{CDDS!!r   )g      ?)r   rl   )	fillcolor)8rv   collections.abcr   typingr   r   r   r   numpyrO   torchPILr   r	   r
   utilsr   r   ImportErrorjitunusedboolr   r%   rb   r#   r&   r(   r.   r2   r   r8   r<   r@   rZ   rg   rx   r   r   BILINEARr   ry   dictrz   NEARESTr   r   BICUBICr   r   r   r   r   r   r   r    r   r   <module>r      s    $ 0 0   - - $
 ,s ,t , , 4 4S	 4 4 4 4S	 4 4 4 4 4 4 0u{{ 0u{{ 0 0 0u{{ 0u{{ 0 0 5;; 5 U[[    u    5;; 5 U[[   EKK U u{{  .  	  [[	 *  DEHR	L$	L$3S	5c?23L$ 5UU5#:->>?
@L$ DE	L$
 [[L$ L$^ =	=	= = 	=
 = [[= =  8	8
S	3
8 8 [[	8 8  
5UU5#:->>?
@	  
#xeT%[%s
2CCDE
EF	 <  HL	S	SKS S 5eXc]HUOCD
E	S
 [[S S  (,HLD	DD D 	D
 U38_%D 5eXc]HUOCD
ED [[D D   HL	a	aUa a 5eXc]HUOCD
E	a
 [[a a ekk    "         )5;; )c )ekk ) ) -%++ -# -%++ - - %++  5;;   &ekk &ekk & & "%++ "%++ " "y  Hs   X9 9YY