o
    üÞh$  ã                   @  sŒ   d dl mZ d dlZd dlZddlmZmZ 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ÚprefixÚbytesÚreturnÚboolc                 C  s
   |   d¡S )Nó   SIMPLE)Ú
startswith)r   © r   úS/var/www/html/premium_crap/venv/lib/python3.10/site-packages/PIL/FitsImagePlugin.pyÚ_accept   s   
r   c                   @  s2   e Zd ZdZdZddd„Zddd„Zddd„ZdS )ÚFitsImageFileÚFITSr   ÚNonec           
      C  sF  | j d usJ ‚i }d}d}	 | j  d¡}|sd}t|ƒ‚|d d…  ¡ }|dv r+d}n&|r0|s0nS|dkrQ| j  t | j  ¡ d	 ¡d	 ¡ |sN|  |¡\}}}d}q|rTq|dd …  	d
¡d  ¡ }	|	 
d¡rn|	dd …  ¡ }	|s~t|ƒrx|	dkr~d}t|ƒ‚|	||< q|s‹d}t|ƒ‚|| j  ¡ d 7 }t |d| j ||¡g| _d S )NFÚ TéP   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Úvaluer   r   r   Ú_open   sF    
â zFitsImageFile._openr*   údict[bytes, bytes]r   r   útuple[int, int] | Nonec                 C  sX   t ||d  ƒ}|dkrd S |dkrdt ||d  ƒfS t ||d  ƒt ||d  ƒfS )Ns   NAXISr   r   s   NAXIS1s   NAXIS2)Úint)r)   r*   r   Únaxisr   r   r   Ú	_get_sizeH   s    zFitsImageFile._get_sizeú&tuple[str, int, tuple[str | int, ...]]c           	      C  sþ   d}d}d}|  d¡dkr8|  d¡dkr8|d d	kr8|  ||¡p!d
}t|d ƒ}|d |d  |d  }d}d}|  ||¡}|sBdS || _t||d  ƒ}|dkrUd| _n|dkr]d| _n|dkred| _n|dv rld| _|dkrw| 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éÿÿÿÿ)Úgetr8   r6   Ú_sizeÚ_modeÚmode)	r)   r*   r   r,   r0   Úno_prefix_sizeÚnumber_of_bitsr'   r1   r   r   r   r"   T   s8   
zFitsImageFile._parse_headersN)r   r   )r*   r4   r   r   r   r5   )r*   r4   r   r9   )Ú__name__Ú
__module__Ú__qualname__ÚformatÚformat_descriptionr3   r8   r"   r   r   r   r   r      s    

-r   c                   @  s   e Zd ZdZd	dd„ZdS )
ÚFitsGzipDecoderTÚbufferú$bytes | Image.SupportsArrayInterfacer   útuple[int, int]c           	      C  s¸   | j d usJ ‚t | j  ¡ ¡}g }d}t| jd d dƒ}t| jjƒD ]%}t	ƒ }t| jj
ƒD ]}|||d|  |d … 7 }|d7 }q.| |¡ q#|  tdd„ |d d d… D ƒƒ¡ dS )Nr   r   é   c                 S  s   g | ]	}|D ]}|‘qqS r   r   )Ú.0ÚrowÚpixelr   r   r   Ú
<listcomp>Ž   s    z*FitsGzipDecoder.decode.<locals>.<listcomp>rC   )rC   r   )ÚfdÚgzipÚ
decompressr   Úminr1   ÚrangeÚstateÚysizeÚ	bytearrayÚxsizeÚappendÚ
set_as_rawr   )	r)   rP   r2   Úrowsr0   rI   ÚyrU   Úxr   r   r   Údecode�   s   
"zFitsGzipDecoder.decodeN)rP   rQ   r   rR   )rJ   rK   rL   Ú	_pulls_fdrf   r   r   r   r   rO   ~   s    rO   r=   z.fitz.fits)r   r   r   r	   )Ú
__future__r   rY   r   r   r   r   r   r   Ú	PyDecoderrO   Úregister_openrM   Úregister_decoderÚregister_extensionsr   r   r   r   Ú<module>   s   

g