
    e                    2   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j.                  ej0                  e        ej2                  ej0                  d       d Zy)    )annotations)BytesIO)Sequence   )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     5/usr/lib/python3/dist-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(   2   s    !2&a5Lr   c                p    t        dd       | D ]  }t        dt        |      z  d        t                y)r'   zIptcImagePlugin.dumpr   z%02x )endN)r   printr%   )r   r(   s     r   dumpr-   8   s3    $b) (fs1vo3'(	Gr   c                  2    e Zd ZdZdZddZd	dZd
dZd Zy)IptcImageFileIPTCzIPTC/NAAc                2    t        | j                  |         S )N)r    info)selfkeys     r   getintzIptcImageFile.getintI   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   r8         r            	      zinvalid IPTC/NAA filer:      z%illegal field length in IPTC/NAA file   )fpreadstripSyntaxErrorOSErrorr    i16)r3   stagr   sizes        r   fieldzIptcImageFile.fieldL   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dd| j                  z   ||f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   )rC   tellrL   rD   r2   r#   listappend_moder5   _sizeCOMPRESSIONKeyErrorrG   rK   tile)r3   offsetrJ   rK   tagdatalayers	componentidcompressioner   s              r   _openzIptcImageFile._openh   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 '> &499"4fkJKDI   	&2C#,A%	&s   4F, ,	G5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   rX   r8   r   s   P5
%d %d
255
rN   i    )lenr`   r   loadrC   seekr   writerK   rL   rD   minr   openim)r3   ra   rf   otyperK   rI   _ims           r   rk   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)r4   ztuple[int, int]returnr$   )rt   z"tuple[tuple[int, int] | None, int])rt   None)	r   
__module____qualname__formatformat_descriptionr5   rL   rh   rk    r   r   r/   r/   E   s#    F#"8-L^r   r/   z.iimc                \   ddl m}m} d}t        | t              r| j
                  S t        | |j                        r/| j
                  j                  d      }|rL|j                  d      }n:t        | |j                        r$	 | j                  j                  |j                     }|y G d d      } |       } t        | _        i | _        t        |      | _        	 | j#                          | j
                  S # t        t        f$ r Y dw xY w# t$        t        f$ r Y | j
                  S w 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   rv   rw   rz   r   r   	FakeImager      s    r   r   ) r|   r}   r#   r/   r2   JpegImageFilegetTiffImageFilerJ   rb   IPTC_NAA_CHUNKr   r_   	__class__r   rC   rh   
IndexError)rp   r|   r}   datar~   r   s         r   getiptcinfor      s
    3D"m$ww	B55	6GGKK,	==(D	B55	6	66>>/"@"@AD |  
B BL BGDMBE

 77N- ) 		& ! 77Ns$   #C9 D 9D
DD+*D+N)r   strrt   bytes)r   r   rt   r$   )r   zint | bytesrt   r$   )r   zSequence[int | bytes]rt   ru   )
__future__r   ior   typingr   r   r   r   _binaryr	   rH   r
   r   
_deprecater   r^   r   r    r%   r(   r-   r/   register_openrx   register_extensionr   rz   r   r   <module>r      s   " #    ! ! !F#'-mI'' m`   M((- 8   --v 61r   