a :jg @sddlmZddlmZddlmZddlmZddlm Z m Z ddl m Z ddl mZdd lmZd d d Zd ddddZdddddZdddddZdddddZdddddZGdd d e j Ze ejee ejd!d"d#d$d%d&Zd'S)() annotations)Sequence)BytesIO)cast)Image ImageFile)i16be)i32be) deprecaterawZjpeg)rstrbytes)namereturncCs4|dkrtdddSdtd|d}t|dS)NZPADzIptcImagePlugin.PAD zmodule 'z' has no attribute '')r __name__AttributeError)rmsgr=/usr/local/lib/python3.9/site-packages/PIL/IptcImagePlugin.py __getattr__s  rint)crcCstd|ddS)Nr)i32rrrr_i+sr z int | bytescCst|tr|S|dSNr) isinstancerrrrr_i8/sr#cCstddt|S).. deprecated:: 10.2.0zIptcImagePlugin.ir)r r rrrri3s r%zSequence[int | bytes]NonecCs2tdd|D]}tt|dddqtdS)r$zIptcImagePlugin.dumpr02x )endN)r printr#)rr%rrrdump9s r+c@sNeZdZdZdZdddddZdd d d Zd d d dZdd ddZdS) IptcImageFileZIPTCzIPTC/NAAztuple[int, int]r)keyrcCst|j|S)N)r info)selfr-rrrgetintJszIptcImageFile.getintz"tuple[tuple[int, int] | None, int])rcCs|jd}|dsdS|d|df}|ddksB|ddvrNd }t||d }|d krld }t|n6|d krzd}n(|d krt|j|d }n t|d }||fS)Nr r!rr) rr2r  zinvalid IPTC/NAA filer4z%illegal field length in IPTC/NAA file)fpreadstrip SyntaxErrorOSErrorr i16)r/stagrsizerrrfieldMs"    zIptcImageFile.fieldr&c Cs|j}|\}}|r|dkr$q|r6|j|}nd}||jvr|t|j|trf|j||q|j||g|j|<q||j|<q|jdd}|jdd}d|jvr|jddd}nd}|dkr|sd|_n2|dkr|rd||_n|d kr |r d ||_| d | d f|_ zt | d }Wn4t yh} zd} t | | WYd} ~ n d} ~ 00|dkrtdd|j||g|_dS)Nr8 )r4<rr)r4ALr4RGBr5ZCMYK)r4)r4)r4xzUnknown IPTC image compressioniptc)rr)r=tellrFr>r.r"listappend_moder0_size COMPRESSIONKeyErrorrArZ_TilerEtile) r/offsetrDrEZtagdataZlayers componentid compressionerrrr_openis@            zIptcImageFile._openzImage.core.PixelAccess | NonecCst|jdks |jdddkr,tj|S|jddd\}}|j|t}|dkrl|d|j| \}}|dkrq|dkrl|j t |d}|sql|||t|8}qqlt | }||j|_Wdn1s0YdS) NrrrPr2r s P5 %d %d 255 rGi )lenrXrloadr=seekrwriterErFr>minropenim)r/rYr\otyperErCZ_imrrrr`s(      &zIptcImageFile.loadN) r __module__ __qualname__formatformat_descriptionr0rFr^r`rrrrr,Fs 1r,z.iimzImageFile.ImageFilez1dict[tuple[int, int], bytes | list[bytes]] | None)rerc Cs8ddlm}m}d}i}t|trL|jD]\}}t|tr,|||<q,|St||jrt|j d}|r| d}n0t||j rz|j |j }Wnt yYn0|durdSGddd}|} t| _tt| } i| _t|| _z | Wntt fyYn0| jD]\}}t|tr|||<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)JpegImagePluginTiffImagePluginN photoshopic@s eZdZdS)zgetiptcinfo..FakeImageN)rrhrirrrr FakeImagesro)rlrmr"r,r.itemstupleZ JpegImageFilegetZ TiffImageFileZtag_v2ZIPTC_NAA_CHUNKrW __class__rrr=r^ IndexError) rerlrmdatar.kvrnroZfake_imZiptc_imrrr getiptcinfosB              ryN) __future__rcollections.abcriortypingrrprr_binaryr rBr rZ _deprecater rVrr r#r%r+r,Z register_openrjZregister_extensionryrrrrs"          s