
    g                    ,   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                    | d d dk(  S )N      SIMPLE )prefixs    H/var/www/openai/venv/lib/python3.12/site-packages/PIL/FitsImagePlugin.py_acceptr      s    "1:""    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  }|d| j                  z   |f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split
startswithr   SyntaxError
ValueError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%%"FTYY$6EF	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   r
   L   zI;16    I)iiF)getr8   r6   _size_modemode)	r*   r+   r   r-   r1   no_prefix_sizenumber_of_bitsr(   r2   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_descriptionr4   r8   r#   r
   r   r   r   r      sJ    F+G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                   j                               }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 | j                  t        |d d d   D 	cg c]  }|D ]  }	|	  c}	}             yc c}	}w )Nr   r      rB   )rB   r   )fdgzip
decompressr   minr2   rangestateysize	bytearrayxsizeappend
set_as_rawrL   )
r*   bufferr3   rowsr1   rH   yrowxpixels
             r   decodezFitsGzipDecoder.decode   s    ww"""/TYYq\Q.2tzz''(A+C4::++,uVq>'9:VaZHH! - KK ) 	TrT
L
uuu
LMN Ms   0DN)ra   rL   rI   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)) .   M((- A   {O 4   -..0A Br   