
    :h                    H   d dl mZ 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	lmZ d
ddZddZddZddZddZddZ G d de
j                        Z e	j2                  ej4                  e        e	j6                  ej4                  d       	 	 	 	 ddZy)    )annotations)Sequence)BytesIO)cast   )Image	ImageFile)i16be)i32be)	deprecaterawjpeg)r      c                V    | dk(  rt        dd       ydt         d|  d}t        |      )NPADzIptcImagePlugin.PAD          zmodule 'z' has no attribute '')r   __name__AttributeError)namemsgs     Q/var/www/urcfiles/bundle/venv/lib/python3.12/site-packages/PIL/IptcImagePlugin.py__getattr__r      s7    u}',XJ24&
:C

    c                $    t        d| z   dd        S )Nr   )i32cs    r   _ir!   +   s    a%&&r   c                0    t        | t              r| S | d   S Nr   )
isinstanceintr   s    r   _i8r&   /   s    1c"1,!,r   c                0    t        dd       t        |       S ).. deprecated:: 10.2.0zIptcImagePlugin.ir   )r   r!   r   s    r   ir)   3   s    !2&a5Lr   c                n    t        dd       | D ]  }t        t        |      dd        t                y)r(   zIptcImagePlugin.dumpr   02x )endN)r   printr&   )r    r)   s     r   dumpr/   9   s.    $b)Q3' 	Gr   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.getintJ   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       r#   r      r      )
r   r:         r            	      zinvalid IPTC/NAA filer<      z%illegal field length in IPTC/NAA file   )fpreadstripSyntaxErrorOSErrorr!   i16)r5   stagr   sizes        r   fieldzIptcImageFile.fieldM   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| j                  v r| j                  d   d   dz
  }nd}|dk(  r
|sd| _        n#|dk(  r|rd|   | _        n|d	k(  r|r
d
|   | _        | j                  d      | j                  d      f| _
        	 t        | j                  d         }|dk(  r,t        j                  dd| j                   z   ||      g| _        y y # t        $ r}	d}
t        |
      |	d }	~	ww xY w)Nr@   
   )r<   <   r   r   )r<   A   Lr<   RGBr=   CMYK)r<      )r<      )r<   x   zUnknown IPTC image compressioniptc)r   r   )rE   tellrN   rF   r4   r$   listappend_moder7   _sizeCOMPRESSIONKeyErrorrI   r	   _TilerM   tile)r5   offsetrL   rM   tagdatalayers	componentidcompressioner   s              r   _openzIptcImageFile._openi   s   WW\\^F

IC#.'',,t,diidiind3IIcN))'2&*iing%>DIIcN!(		# $ 7#A&IIg&q)	dii7#A&*BBQ;yDJq[YrDJq[YDJ [[)4;;w+??
	&%dkk(&;<K '>(:FKPDI   	&2C#,A%	&s   4F> >	GGGc                   t        | j                        dk7  s| j                  d   d   dk7  rt        j                  j                  |       S | j                  d   dd  \  }}| j                  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 }|j                          |j                  | _        d d d        y # 1 sw Y   y xY w)	Nr   r   rZ   r:   r   s   P5
%d %d
255
rP   i    )lenrc   r	   loadrE   seekr   writerM   rN   rF   minr   openim)r5   rd   ri   otyperM   rK   _ims           r   rn   zIptcImageFile.load   s-   tyy>Q$))A,q/V";&&++D11"iil12.V I% GG'$))34JD$w(GGLLT41
A (	  ZZ]cHHJffDG    s   ,"EE N)r6   ztuple[int, int]returnr%   )rw   z"tuple[tuple[int, int] | None, int])rw   None)rw   zImage.core.PixelAccess | None)	r   
__module____qualname__formatformat_descriptionr7   rN   rk   rn    r   r   r1   r1   F   s"    F#"8/br   r1   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      }|rB|j                  d      }n0t        | |j                        r	 | 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)r   ry   rz   r}   r   r   	FakeImager      s    r   r   ) r   r   r$   r1   r4   itemstupleJpegImageFilegetTiffImageFiletag_v2IPTC_NAA_CHUNKra   	__class__r   r   rE   rk   
IndexError)rs   r   r   datar4   kvr   r   fake_imiptc_ims              r   getiptcinfor      s_    3D79D"m$GGMMODAq!U#Q $ 	B55	6GGKK,	==(D	B55	6	99_;;<D |  kG%G='*G GLGJ ""$1aDG % K5  		( ! s$   3E E, 	E)(E),E>=E>N)r   strrw   bytes)r    r   rw   r%   )r    zint | bytesrw   r%   )r    zSequence[int | bytes]rw   rx   )rs   zImageFile.ImageFilerw   z1dict[tuple[int, int], bytes | list[bytes]] | None)
__future__r   collections.abcr   ior   typingr   r   r   r	   _binaryr
   rJ   r   r   
_deprecater   r`   r   r!   r&   r)   r/   r1   register_openr{   register_extensionr   r}   r   r   <module>r      s   " # $    ! ! !F#'-pI'' pf   M((- 8   --v 6;;6;r   