U
    M»{j÷  ã                   @  sì   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"„ Zd#S )$é    )Úannotations)ÚBytesIO)ÚSequenceé   )Ú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   úR/var/www/html/bwave/python/venv/lib/python3.8/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   Úi2   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   Ú02xú )ÚendN)r
   Úprintr"   )r   r$   r   r   r   Údump8   s    
r*   c                   @  sH   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„ 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   ÚgetintI   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krNd	}t|ƒ‚|d
 }|dkrld}t|ƒ‚n6|dkrzd}n(|dkr˜t| 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   ÚfieldL   s"    


zIptcImageFile.fieldr%   c              
   C  sŒ  | j  ¡ }|  ¡ \}}|rˆ|dkr$qˆ|r6| j  |¡}nd }|| jkr|t| j| tƒrf| j|  |¡ q†| j| |g| j|< q || j|< q | jd d }| jd d }d| jkrÂ| jd d d }nd}|dkrÚ|sÚd| _n2|dkrò|ròd| | _n|d	k�r|�rd
| | _|  	d¡|  	d¡f| _
zt|  	d¡ }W n2 tk
�rf }	 zd}
t|
ƒ|	‚W 5 d }	~	X Y nX |dk�rˆdd| j ||fg| _d S )N©r7   é
   )r3   é<   r   r   )r3   éA   ÚLr3   Ú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@   rD   Útile)r.   ÚoffsetrC   rD   ÚtagdataZlayersÚ	componentÚidÚcompressionÚer   r   r   r   Ú_openh   s>    




zIptcImageFile._openc              	   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r‚q¼|dkrl| j 
t|dƒ¡}|s¢ql| |¡ |t |ƒ8 }q‚qlt |¡�}| ¡  |j| _W 5 Q R X d S )	Nr   r   rO   r1   r   s   P5
%d %d
255
rF   i    )ÚlenrW   r   Úloadr<   Úseekr   ÚwriterD   rE   r=   Úminr   ÚopenÚim)r.   rX   r\   Ú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+   E   s   /r+   z.iimc              	   C  sæ   ddl m}m} d}t| tƒr$| jS t| |jƒrL| j d¡}|r„| d¡}n8t| |jƒr„z| j	j
|j }W n ttfk
r‚   Y nX |dkr�dS G dd„ dƒ}|ƒ } t| _i | _t|ƒ| _z|  ¡  W n ttfk
rÞ   Y nX | j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   rh   ri   r   r   r   r   Ú	FakeImageÜ   s   ro   )Ú rl   rm   r!   r+   r-   ZJpegImageFileÚgetZTiffImageFilerC   rY   ZIPTC_NAA_CHUNKr   rV   Ú	__class__r   r<   r^   Ú
IndexError)re   rl   rm   Údatarn   ro   r   r   r   Úgetiptcinfoº   s2    

ru   N)Ú
__future__r   Úior   Útypingr   rp   r   r   Ú_binaryr   rA   r	   r   Z
_deprecater
   rU   r   r   r"   r$   r*   r+   Zregister_openrj   Zregister_extensionru   r   r   r   r   Ú<module>   s    
p