K i$,ddlmZddlZddlZddlmZmZd dZGddej ZGdd ejZ ejejeeejd e ejejd d gy)) annotationsN)Image ImageFilec$|jdS)NSIMPLE) startswith)prefixs Y/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/PIL/FitsImagePlugin.py_acceptr s   Y ''c@eZdZdZdZddZ ddZ ddZy) FitsImageFileFITSc.|jJi}d}d} |jjd}|s d}t||ddj}|dvrd}np|r|sn|dk(rf|jj t j |jjd z d z|s|j|\}}}d}|r|ddjd d j} | jd r| d dj} |st|r| dk7r d}t|| ||<&|s d}t||jjdz z }tj|d|j z|g|_y)NFTPzTruncated FITS file)rXTENSIONsENDi@ /r=rTzNot a FITS filez No image datarr)fpreadOSErrorstripseekmathceiltell_parse_headerssplitr r SyntaxError ValueErrorr_Tilesizetile) selfheadersheader_in_progress decoder_nameheadermsgkeywordoffsetargsvalues r _openzFitsImageFile._opensww"""&(" WW\\"%F+cl"Raj&&(G22%)"!3F" TYYtww||~'<=DE#151D1DW1M.L&$%*"12J$$T*1-335E%ab )GG$4 '!#&&$GG =@!CS/ !$'',,.2%%__\6DII3EvtTU r ct||dz}|dk(ry|dk(rdt||dzfSt||dzt||dzfS)NsNAXISrrsNAXIS1sNAXIS2)int)r)r*r naxiss r _get_sizezFitsImageFile._get_sizeHslGFX-./ A: A:c'&9"4566 6wv 123S)AS9T5UU Ur cd}d}d}|jddk(rU|jddk(rA|dd k(r9|j||xsd }t|d }|d|d z|d zz}d}d}|j||}|sy||_t||d z}|d k(rd|_n%|dk(rd|_n|dk(rd|_n |dvrd|_|dk(r|j ddf}n|f}|||fS)Nr rawrrs 'BINTABLE'sZIMAGErsZCMPTYPEs 'GZIP_1 'rsBITPIXrrZ fits_gzip)rrLzI;16 I)iiF)getr7r5_size_modemode) r)r*r r,r0no_prefix_sizenumber_of_bitsr'r1s r r"zFitsImageFile._parse_headersTs+  KK $ 5 I&$. $ 5!^^GV<FN !34N#A&)::nPQ>QRFF&L~~gv. WVi%789 Q DJ r !DJ r !DJ z )DJ 5 IIq"%D"$DVT))r N)returnNone)r*dict[bytes, bytes]r bytesrIztuple[int, int] | None)r*rKrIz&tuple[str, int, tuple[str | int, ...]])__name__ __module__ __qualname__formatformat_descriptionr3r7r"r<r r rrsJ F+VZ V) V38 V  V'*)'* /'*r rceZdZdZddZy)FitsGzipDecoderTc &|jJtj|jj}g}d}t |j ddzd}t |jjD]W}t}t |jjD]}|||d|z z|dzz }|dz }|j|Y|jt|dddD cgc] }|D]} |  c} }ycc} }w)NrrrB)rBr)fdgzip decompressrminr1rangestateysize bytearrayxsizeappend set_as_rawrL) r)bufferr2rowsr0rHyrowxpixels r decodezFitsGzipDecoder.decodesww""" /TYYq\Q.2tzz''( A+C4::++, uVq>'9:VaZHH!   KK    TrT LLuuLuLMNMs0D N)raz$bytes | Image.SupportsArrayInterfacerIztuple[int, int])rMrNrO _pulls_fdrgr<r r rSrS~s Ir rSr;z.fitz.fits)r rLrIbool) __future__rrWrrrrr r PyDecoderrS register_openrPregister_decoderregister_extensionsr<r r ros# (d*I''d*Ni)).M((-A{O4-..0ABr