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   Y/home/www/facesmatcher.com/frenv_anti/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 )FitsImageFileZ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|s0q|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|sd}t||| j  d 7 }t|d| j ||g| _d S )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   Z_TilesizeZtile)
selfheadersZ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   Z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)iiF)getr3   r2   _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)r   r   )r'   r0   r   r   r   r1   )r'   r0   r   r4   )__name__
__module____qualname__formatformat_descriptionr/   r3   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rowZpixelr   r   r   
<listcomp>   s    z*FitsGzipDecoder.decode.<locals>.<listcomp>r>   )r>   r   )fdgzip
decompressr   minr-   rangestateZysize	bytearrayZxsizeappendZ
set_as_rawr   )	r&   rJ   r.   rowsr,   rC   yrO   xr   r   r   decode   s   
"zFitsGzipDecoder.decodeN)rJ   rK   r   rL   )rD   rE   rF   Z	_pulls_fdr\   r   r   r   r   rI   ~   s    rI   r8   z.fitz.fits)r   r   r   r	   )
__future__r   rR   r   r   r   r   r   r   Z	PyDecoderrI   Zregister_openrG   Zregister_decoderZregister_extensionsr   r   r   r   <module>   s   

g