
    h$                    .   S SK Jr  S SKrS SKrSSKJrJr  SS jr " S S\R                  5      r " S S	\R                  5      r
\R                  " \R                  \\5        \R                  " S
\
5        \R                  " \R                  SS/5        g)    )annotationsN   )Image	ImageFilec                $    U R                  S5      $ )N   SIMPLE)
startswith)prefixs    E/var/www/html/env/lib/python3.13/site-packages/PIL/FitsImagePlugin.py_acceptr      s    Y''    c                  N    \ rS rSrSrSrSS jr      S	S jr    S
S jrSr	g)FitsImageFile   FITSc                   U R                   c   e0 nSnSn U R                   R                  S5      nU(       d  Sn[        U5      eUS S R                  5       nUS;   a  SnOU(       a  U(       d  OUS:X  al  U R                   R	                  [
        R                  " U R                   R                  5       S	-  5      S	-  5        U(       d  U R                  U5      u  p7nSnM  U(       a  M  USS  R                  S
5      S   R                  5       n	U	R                  S5      (       a  U	SS  R                  5       n	U(       d#  [        U5      (       a  U	S:w  a  Sn[        U5      eXU'   GMT  U(       d  Sn[        U5      eWU R                   R                  5       S-
  -  n[        R                  " USU R                   -   UW5      /U l        g )NF TP   zTruncated FITS file   )r      XTENSIONs   ENDi@     /r      =r      TzNot a FITS filezNo image datar   r   )fpreadOSErrorstripseekmathceiltell_parse_headerssplitr	   r   SyntaxError
ValueErrorr   _Tilesizetile)
selfheadersheader_in_progressdecoder_nameheadermsgkeywordoffsetargsvalues
             r   _openFitsImageFile._open   s   ww"""&("WW\\"%F+cl"Raj&&(G22%)"!3F"TYYtww||~'<=DE#151D1DW1M.L$%*"12J$$T*1-335E%%ab	)GG$4$4'!#&&$G= @ !CS/!$'',,.2%%__\6DII3EvtTU	r   c                    [        XS-      5      nUS:X  a  g US:X  a  S[        XS-      5      4$ [        XS-      5      [        XS-      5      4$ )Ns   NAXISr   r   s   NAXIS1s   NAXIS2)int)r*   r+   r
   naxiss       r   	_get_sizeFitsImageFile._get_sizeH   sd     GX-./A:A:c'9"45666w	123S)AS9T5UUUr   c                   SnSnSnUR                  S5      S:X  a[  UR                  S5      S:X  aF  US   S	:X  a=  U R                  X5      =(       d    S
n[        US   5      nUS   US   -  US-  -  nSnSnU R                  X5      nU(       d  gXpl        [        XS-      5      nUS:X  a  SU l        O)US:X  a  SU l        OUS:X  a  SU l        OUS;   a  SU l        US:X  a  U R
                  SS4nOU4nX4U4$ )Nr   rawr   r   s
   'BINTABLE's   ZIMAGEr   s   ZCMPTYPEs
   'GZIP_1  'r   s   BITPIXr   r      Z	fits_gzip)r   r    L   zI;16    I)iiF)getr9   r7   _size_modemode)	r*   r+   r
   r-   r1   no_prefix_sizenumber_of_bitsr(   r2   s	            r   r#   FitsImageFile._parse_headersT   s!    KK$5I&$.$5!^^G<FN !34N#A&)::nPQ>QRFF&L~~g.
Wi%789QDJr!DJr!DJz)DJ 5 IIq"%D"$DT))r   )rH   rG   r)   N)returnNone)r+   dict[bytes, bytes]r
   bytesrM   ztuple[int, int] | None)r+   rO   rM   z&tuple[str, int, tuple[str | int, ...]])
__name__
__module____qualname____firstlineno__formatformat_descriptionr4   r9   r#   __static_attributes__r?   r   r   r   r      sJ    F+VZ
V)
V38
V	
V'*)'*	/'*r   r   c                  "    \ rS rSrSrSS jrSrg)FitsGzipDecoder~   Tc           
     8   U R                   c   e[        R                  " U R                   R                  5       5      n/ nSn[	        U R
                  S   S-  S5      n[        U R                  R                  5       HY  n[        5       n[        U R                  R                  5       H  nXrUSU-
  -   US-    -  nUS-  nM     UR                  U5        M[     U R                  [        US S S2    VV	s/ s H  ow  H  oPM     M     sn	n5      5        gs  sn	nf )Nr   r      rE   )rE   r   )fdgzip
decompressr   minr2   rangestateysize	bytearrayxsizeappend
set_as_rawrP   )
r*   bufferr3   rowsr1   rK   yrowxpixels
             r   decodeFitsGzipDecoder.decode   s    ww"""/TYYq\Q.2tzz''(A+C4::++,Vq>'9:VaZHH! - KK ) 	TrT
L
uuu
LMN Ms   5Dr?   N)rh   z$bytes | Image.SupportsArrayInterfacerM   ztuple[int, int])rQ   rR   rS   rT   	_pulls_fdrn   rW   r?   r   r   rY   rY   ~   s    Ir   rY   r>   z.fitz.fits)r
   rP   rM   bool)
__future__r   r^   r    r   r   r   r   r   	PyDecoderrY   register_openrU   register_decoderregister_extensionsr?   r   r   <module>rw      s    #   (d*I'' d*Ni)) .   M((- A   {O 4   -..0A Br   