a
    ç´«j$  ã                   @  s’   d dl mZ d dlZd dlZddlmZmZ dddœdd	„ZG d
d„ dejƒZG dd„ dej	ƒZ
e ejee¡ e de
¡ e ejddg¡ dS )é    )ÚannotationsNé   )ÚImageÚ	ImageFileÚbytesÚbool)ÚprefixÚreturnc                 C  s
   |   d¡S )Nó   SIMPLE)Ú
startswith)r   © r   úR/var/www/html/laksyashrimp/venv/lib/python3.9/site-packages/PIL/FitsImagePlugin.pyÚ_accept   s    r   c                   @  sD   e Zd ZdZdZddœdd„Zdddd	œd
d„Zdddœdd„ZdS )ÚFitsImageFileZFITSÚNone)r	   c           
      C  sJ  | j d usJ ‚i }d}d}| j  d¡}|s6d}t|ƒ‚|d d…  ¡ }|dv rTd}nP|rb|sb�qnB|dkr¤| j  t | j  ¡ d	 ¡d	 ¡ |sž|  |¡\}}}d}q|rªq|dd …  	d
¡d  ¡ }	|	 
d¡rÞ|	dd …  ¡ }	|sþt|ƒrò|	dkrþd}t|ƒ‚|	||< q|�sd}t|ƒ‚|| j  ¡ d 7 }t |d| j ||¡g| _d S )NFÚ éP   zTruncated FITS fileé   )r
   ó   XTENSIONTs   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   Z_TileÚsizeZtile)
ÚselfÚheadersZheader_in_progressÚdecoder_nameÚheaderÚmsgÚkeywordÚoffsetÚargsÚvaluer   r   r   Ú_open   sB     

zFitsImageFile._openzdict[bytes, bytes]r   ztuple[int, int] | None)r'   r   r	   c                 C  s\   t ||d  ƒ}|dkrd S |dkr8dt ||d  ƒfS t ||d  ƒt ||d  ƒfS d S )Ns   NAXISr   r   s   NAXIS1s   NAXIS2)Úint)r&   r'   r   Znaxisr   r   r   Ú	_get_sizeH   s    zFitsImageFile._get_sizez&tuple[str, int, tuple[str | int, ...]])r'   r	   c           	      C  sþ   d}d}d}|  d¡dkrp|  d¡dkrp|d d	krp|  ||¡pBd
}t|d ƒ}|d |d  |d  }d}d}|  ||¡}|s„dS || _t||d  ƒ}|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 )Nó    Ú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)iàÿÿÿiÀÿÿÿÚFéÿÿÿÿ)Úgetr1   r0   Ú_sizeÚ_modeÚmode)	r&   r'   r   r(   r,   Zno_prefix_sizeÚnumber_of_bitsr%   r-   r   r   r   r!   T   s>    ÿþ
ýzFitsImageFile._parse_headersN)Ú__name__Ú
__module__Ú__qualname__ÚformatÚformat_descriptionr/   r1   r!   r   r   r   r   r      s
   -r   c                   @  s    e Zd ZdZdddœdd„ZdS )ÚFitsGzipDecoderTz$bytes | Image.SupportsArrayInterfaceztuple[int, int])Úbufferr	   c           	      C  s¸   | j d usJ ‚t | j  ¡ ¡}g }d}t| jd d dƒ}t| jjƒD ]J}t	ƒ }t| jj
ƒD ](}|||d|  |d … 7 }|d7 }q\| |¡ qF|  tdd„ |d d d… D ƒƒ¡ dS )Nr   r   é   c                 S  s   g | ]}|D ]}|‘qqS r   r   )Ú.0ÚrowZpixelr   r   r   Ú
<listcomp>Ž   r2   z*FitsGzipDecoder.decode.<locals>.<listcomp>r;   )r;   r   )ÚfdÚgzipÚ
decompressr   Úminr-   ÚrangeÚstateZysizeÚ	bytearrayZxsizeÚappendZ
set_as_rawr   )	r&   rG   r.   Úrowsr,   r@   ÚyrJ   Úxr   r   r   Údecode�   s    
"zFitsGzipDecoder.decodeN)rA   rB   rC   Z	_pulls_fdrW   r   r   r   r   rF   ~   s   rF   r5   z.fitz.fits)Ú
__future__r   rM   r   r   r   r   r   r   Z	PyDecoderrF   Zregister_openrD   Zregister_decoderZregister_extensionsr   r   r   r   Ú<module>   s   g