
    h4h,                       d dl mZ d dlmZ d dlmZ ddlmZmZ ddl	m
Z ddl	mZ dd	d
ZddZ G d dej                        Z ej"                  ej$                  e        ej&                  ej$                  d       	 	 	 	 ddZy)    )annotations)BytesIO)cast   )Image	ImageFile)i16be)i32berawjpeg)r      c                $    t        d| z   dd        S )Ns       )i32)cs    K/var/www/flask-api/venv/lib/python3.12/site-packages/PIL/IptcImagePlugin.py_ir   !   s    a%&&    c                  4    e Zd ZdZdZddZd	dZd
dZddZy)IptcImageFileIPTCzIPTC/NAAc                2    t        | j                  |         S )N)r   info)selfkeys     r   getintzIptcImageFile.getint.   s    $))C.!!r   c                l   | j                   j                  d      }|j                  d      sy|d   |d   f}|d   dk7  s|d   dvrd	}t        |      |d
   }|dkD  rd}t	        |      |dk(  rd}||fS |dkD  r+t        | j                   j                  |dz
              }||fS t        |d
      }||fS )Nr       )Nr   r      r      )
r   r         r            	      zinvalid IPTC/NAA filer!      z%illegal field length in IPTC/NAA file   )fpreadstripSyntaxErrorOSErrorr   i16)r   stagmsgsizes        r   fieldzIptcImageFile.field1   s     GGLLOwwwdAaDj Q44<3q6)II)Cc"" t#:9C#,S[D Dy CZdggll4#:./D Dy q!9DDyr   c                   	 | j                   j                         }| j                         \  }}|r|dk(  rn|r| j                   j                  |      }nd }|| j                  v r[t        | j                  |   t              r| j                  |   j                  |       n.| j                  |   |g| j                  |<   n|| j                  |<   | j                  d   d   }| j                  d   d   }|dk(  r|s
d| _        d }nC|dk(  r
|rd| _        n|dk(  r	|rd	| _        d
| j                  v r| j                  d
   d   dz
  }nd}| j                  d      | j                  d      f| _
        	 t        | j                  d         }|dk(  r.t        j                  dd| j                   z   |||f      g| _        y y # t        $ r}	d}
t        |
      |	d }	~	ww xY w)Nr%   
   )r!   <   r   r   Lr!   RGBr"   CMYK)r!   A   )r!      )r!      )r!   x   zUnknown IPTC image compressioniptc)r   r   )r*   tellr4   r+   r   
isinstancelistappend_moder   _sizeCOMPRESSIONKeyErrorr.   r   _Tiler3   tile)r   offsetr1   r3   tagdatalayers	componentbandcompressioner2   s              r   _openzIptcImageFile._openM   s   WW\\^F

IC#.'',,t,diidiind3IIcN))'2&*iing%>DIIcN!(		# $ 7#A&IIg&q)	Q;yDJD{y"
1#
$))#yy)!,q0 [[)4;;w+??
	&%dkk(&;<K '>(:F[RVDWXDI   	&2C#,A%	&s   0F< <	GGGc                   | j                   r| j                   d   j                  }t        |t              sJ |\  }}| j                  j                  | j                   d   j                         t               }|dk(  r|j                  d| j                  z         	 | j                         \  }}|dk7  rnS|dkD  rM| j                  j                  t        |d            }|sn%|j                  |       |t        |      z  }|dkD  rMlt        j                  |      5 }|gt        j                   d|j                        gt        j"                  | j$                        z  }	||	|<   t        j&                  | j$                  |	      }n|j)                          |j*                  | _        d d d        g | _         t,        j,                  j)                  |       S # 1 sw Y   /xY w)Nr   r   s   P5
%d %d
255
r6   i    r9   )rJ   argsrB   tupler*   seekrK   r   writer3   r4   r+   minlenr   opennewgetmodebandsmodemergeloadimr   )
r   rT   rP   rO   otyper3   r0   _imbandss
             r   r_   zIptcImageFile.load   s   9999Q<$$DdE*** $KGGLL1,,- 	Ae# +dii78!ZZ\
d7?QhSt_5AGGAJCFND Qh	  A !##"YYsCHH569K9KDII9VVE"%E$K++dii7CHHJ&&! DI""''--! !s   BGG!N)r   ztuple[int, int]returnint)re   z"tuple[tuple[int, int] | None, int])re   None)re   zImage.core.PixelAccess | None)	__name__
__module____qualname__formatformat_descriptionr   r4   rR   r_    r   r   r   r   *   s"    F#"81f".r   r   z.iimc                   ddl m}m} d}i }t        | t              r:| j
                  j                         D ]  \  }}t        |t              s|||<    |S t        | |j                        r/| j
                  j                  d      }|rL|j                  d      }n:t        | |j                        r$	 | j                  j                  |j                     }|y G d d      } |       }	t        |	_        t!        t        |	      }
i |
_        t#        |      |
_        	 |
j'                          |
j
                  j                         D ]  \  }}t        |t              s|||<    |S # t        $ r Y w xY w# t(        t        f$ r Y Zw xY w)z
    Get IPTC information from TIFF, JPEG, or IPTC file.

    :param im: An image containing IPTC data.
    :returns: A dictionary containing IPTC information, or None if
        no IPTC information block was found.
    r   )JpegImagePluginTiffImagePluginN	photoshopi  c                      e Zd Zy)getiptcinfo.<locals>.FakeImageN)rh   ri   rj   rm   r   r   	FakeImagers      s    r   rt   ) ro   rp   rB   r   r   itemsrU   JpegImageFilegetTiffImageFiletag_v2_tagdataIPTC_NAA_CHUNKrH   	__class__r   r   r*   rR   
IndexError)r`   ro   rp   datar   kvrq   rt   fake_imiptc_ims              r   getiptcinfor      so    3D79D"m$GGMMO 	DAq!U#Q	 	B55	6GGKK,	==(D	B55	6	99%%o&D&DED |  kG%G='*G GLGJ ""$ 1aDG K5  		( ! s$   3#E' E6 '	E32E36FFN)r   bytesre   rf   )r`   zImageFile.ImageFilere   z1dict[tuple[int, int], bytes | list[bytes]] | None)
__future__r   ior   typingr   ru   r   r   _binaryr	   r/   r
   r   rG   r   r   register_openrk   register_extensionr   rm   r   r   <module>r      s   " #    ! !F#'x.I'' x.v   M((- 8   --v 6;;6;r   