a
    h?                     @  s   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dddZdddddZdddddZdddddZdddddZG dd  d e
j
Ze	eje e	ejd! d"d#d$d%d&Zd'S )(    )annotations)Sequence)BytesIO)cast   )Image	ImageFile)i16be)i32be)	deprecaterawZjpeg)r      strbytes)namereturnc                 C  s4   | dkrt dd dS dt d|  d}t|d S )NZPADzIptcImagePlugin.PAD          zmodule 'z' has no attribute '')r   __name__AttributeError)r   msg r   A/var/www/auris/lib/python3.9/site-packages/PIL/IptcImagePlugin.py__getattr__   s
    
r   int)cr   c                 C  s   t d|  dd  S )Nr   )i32r   r   r   r   _i+   s    r    zint | bytesc                 C  s   t | tr| S | d S Nr   )
isinstancer   r   r   r   r   _i8/   s    r#   c                 C  s   t dd t| S ).. deprecated:: 10.2.0zIptcImagePlugin.ir   )r   r    r   r   r   r   i3   s    
r%   zSequence[int | bytes]Nonec                 C  s2   t dd | D ]}tt|ddd qt  dS )r$   zIptcImagePlugin.dumpr   Z02x )endN)r   printr#   )r   r%   r   r   r   dump9   s    
r*   c                   @  sN   e Zd ZdZdZdddddZdd	d
dZdd	ddZdd	ddZdS )IptcImageFileZIPTCzIPTC/NAAztuple[int, int]r   )keyr   c                 C  s   t | j| S )N)r    info)selfr,   r   r   r   getintJ   s    zIptcImageFile.getintz"tuple[tuple[int, int] | None, int])r   c                 C  s   | j d}|dsdS |d |d f}|d dksB|d dvrNd	}t||d
 }|dkrld}t|n6|dkrzd}n(|dkrt| j |d }n
t|d
}||fS )Nr       r!   r      r      )
r   r1         r            	      zinvalid IPTC/NAA filer3      z%illegal field length in IPTC/NAA file   )fpreadstripSyntaxErrorOSErrorr    i16)r.   stagr   sizer   r   r   fieldM   s"    


zIptcImageFile.fieldr&   c              
   C  s  | j  }|  \}}|r|dkr$q|r6| j |}nd }|| jv r|t| j| trf| j| | q| j| |g| j|< q || j|< q | jd d }| jd d }d| jv r| jd d d }nd}|dkr|sd| _n2|dkr|rd| | _n|d	kr|rd
| | _| 	d| 	df| _
zt| 	d }W n4 tyh }	 zd}
t|
|	W Y d }	~	n
d }	~	0 0 |dkrtdd| j ||g| _d S )Nr7   
   )r3   <   r   r   )r3   A   Lr3   ZRGBr4   ZCMYK)r3      )r3      )r3   x   zUnknown IPTC image compressioniptc)r   r   )r<   tellrE   r=   r-   r"   listappend_moder/   _sizeCOMPRESSIONKeyErrorr@   r   Z_TilerD   tile)r.   offsetrC   rD   ZtagdataZlayers	componentidcompressioner   r   r   r   _openi   s@    



 
zIptcImageFile._openzImage.core.PixelAccess | Nonec                 C  s  t | jdks | jd d dkr,tj| S | jd dd  \}}| j| t }|dkrl|d| j  | 	 \}}|dkrq|dkrl| j
t|d}|sql|| |t |8 }qqlt| }|  |j| _W d    n1 s0    Y  g | _tj| S )	Nr   r   rN   r1   r   s   P5
%d %d
255
rF   i    )lenrV   r   loadr<   seekr   writerD   rE   r=   minr   openim)r.   rW   rZ   otyperD   rB   Z_imr   r   r   r^      s*     
&zIptcImageFile.loadN)	r   
__module____qualname__formatformat_descriptionr/   rE   r\   r^   r   r   r   r   r+   F   s   1r+   z.iimzImageFile.ImageFilez1dict[tuple[int, int], bytes | list[bytes]] | None)rc   r   c              	   C  s:  ddl m}m} d}i }t| trL| j D ]\}}t|tr,|||< q,|S t| |jrt| j	d}|r|	d}n2t| |j
rz| jj|j }W n ty   Y n0 |du rdS G dd d}| }	t|	_tt|	}
i |
_t||
_z|
  W n ttfy
   Y n0 |
j D ]\}}t|tr|||< q|S )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                   @  s   e Zd ZdS )zgetiptcinfo.<locals>.FakeImageN)r   rf   rg   r   r   r   r   	FakeImage   s   rm   ) rj   rk   r"   r+   r-   itemstupleZJpegImageFilegetZTiffImageFileZtag_v2Z_tagdataZIPTC_NAA_CHUNKrU   	__class__r   r   r<   r\   
IndexError)rc   rj   rk   datar-   kvrl   rm   Zfake_imZiptc_imr   r   r   getiptcinfo   sB    





rw   N)
__future__r   collections.abcr   ior   typingr   rn   r   r   _binaryr	   rA   r
   r   Z
_deprecater   rT   r   r    r#   r%   r*   r+   Zregister_openrh   Zregister_extensionrw   r   r   r   r   <module>   s"   
t