a
    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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   A/var/www/auris/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|rq|dd  	d
d  }	|	
dr|	dd   }	|st|r|	dkrd}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}| ||}|sdS || _t||d  }|dkrd| _n.|dkrd| _n|dkrd| _n|dv rd| _|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)ii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