
    1)i                    ,   d dl mZ d dlZd dlZddlmZmZ ddZ G d dej                        Z G d d	ej                        Z
 ej                  ej                  ee        ej                  d
e
        ej                  ej                  ddg       y)    )annotationsN   )Image	ImageFilec                $    | j                  d      S )N   SIMPLE)
startswith)prefixs    W/var/www/html/spbu.com/backend/venv/lib/python3.12/site-packages/PIL/FitsImagePlugin.py_acceptr      s    Y''    c                  @    e Zd ZdZdZddZ	 	 	 	 	 	 ddZ	 	 	 	 ddZy)	FitsImageFileFITSc                .   | j                   J i }d}d}	 | j                   j                  d      }|sd}t        |      |d d j                         }|dv rd}np|r|sn|dk(  rf| j                   j	                  t        j                  | j                   j                         d	z        d	z         |s| j                  |      \  }}}d}|r|dd  j                  d
      d   j                         }	|	j                  d      r|	dd  j                         }	|st        |      r|	dk7  rd}t        |      |	||<   &|sd}t        |      | j                   j                         dz
  z  }t        j                  |d| j                   z   |      g| _        y )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   _openz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'!#&&$GG= @ !CS/!$'',,.2%%__\6DII3EvtTU	r   c                    t        ||dz            }|dk(  ry |dk(  rdt        ||dz            fS t        ||dz            t        ||dz            fS )Ns   NAXISr   r   s   NAXIS1s   NAXIS2)int)r)   r*   r
   naxiss       r   	_get_sizezFitsImageFile._get_sizeH   sl     GFX-./A:A:c'&9"45666wv	123S)AS9T5UUUr   c                   d}d}d}|j                  d      dk(  rU|j                  d      dk(  rA|d   d	k(  r9| j                  ||      xs d
}t        |d         }|d   |d   z  |dz  z  }d}d}| j                  ||      }|sy|| _        t        ||dz            }|dk(  rd| _        n%|dk(  rd| _        n|dk(  rd| _        n|dv rd| _        |dk(  r| j
                  ddf}n|f}|||fS )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)getr7   r5   _size_modemode)	r)   r*   r
   r,   r0   no_prefix_sizenumber_of_bitsr'   r1   s	            r   r"   zFitsImageFile._parse_headersT   s+    KK$5I&$.$5!^^GV<FN !34N#A&)::nPQ>QRFF&L~~gv.
WVi%789QDJr!DJr!DJz)DJ 5 IIq"%D"$DVT))r   N)returnNone)r*   dict[bytes, bytes]r
   bytesrI   ztuple[int, int] | None)r*   rK   rI   z&tuple[str, int, tuple[str | int, ...]])__name__
__module____qualname__formatformat_descriptionr3   r7   r"   r<   r   r   r   r      sJ    F+VZ
V)
V38
V	
V'*)'*	/'*r   r   c                      e Zd ZdZddZy)FitsGzipDecoderTc           
        | j                   J t        j                  | j                         5 }|j                  | j                  j
                  | j                  j                  z  dz        }g }d}t        | j                  d   dz  d      }t        | j                  j                        D ]W  }t               }t        | j                  j
                        D ]  }	|||d|z
  z   |dz    z  }|dz  } |j                  |       Y 	 d d d        | j                  t        d d d   D 
cg c]  }|D ]  }
|
  c}
}             y# 1 sw Y   AxY wc c}
}w )N   r   r   rB   )rB   r   )fdgzipopenr   statexsizeysizeminr1   range	bytearrayappend
set_as_rawrL   )r)   bufferr   r2   rowsr0   rH   yrowxpixels              r   decodezFitsGzipDecoder.decode   s*   ww"""YYtww2GGDJJ,,tzz/?/??!CDEDF 1!2A6N4::++,ktzz//0A51~+=!>!LLCaKF 1 C  -   	TrT
L
uuu
LMN   Ms   CE+EEN)ra   z$bytes | Image.SupportsArrayInterfacerI   ztuple[int, int])rM   rN   rO   	_pulls_fdrg   r<   r   r   rS   rS   ~   s    Ir   rS   r;   z.fitz.fits)r
   rL   rI   bool)
__future__r   rW   r   r   r   r   r   r   	PyDecoderrS   register_openrP   register_decoderregister_extensionsr<   r   r   <module>ro      s    #   (d*I'' d*Ni)) 0   M((- A   {O 4   -..0A Br   