
    zvg                       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           dS )    )annotationsN   )Image	ImageFileprefixbytesreturnboolc                    | d d         dk    S )N      SIMPLE )r   s    P/var/www/pixelcanvas.ch/venv/lib/python3.11/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dS )FitsImageFileFITSr	   Nonec                   | j         J i }d}d}	 | j                             d          }|sd}t          |          |d d                                         }|dv rd}ns|r|sn|dk    rg| j                             t          j        | j                                         d	z            d	z             |s|                     |          \  }}}d}|r|dd          	                    d
          d                                         }	|	
                    d          r|	dd                                          }	|s&t          |          r|	dk    rd}t          |          |	||<   [|sd}t          |          || j                                         dz
  z  }t          j        |d| j        z   ||          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split
startswithr   SyntaxError
ValueErrorr   _Tilesizetile)
selfheadersheader_in_progressdecoder_nameheadermsgkeywordoffsetargsvalues
             r   _openzFitsImageFile._open   s   w"""&("	%W\\"%%F #+cll"RaRj&&((G222%)"" 
!3 
F""TYtw||~~'<==DEEE# N151D1DW1M1M.L&$%*" 122J$$T**1-3355E%% *abb	)) 'GG$4$4 ''!#&&&$GG=	%@  	"!CS//!$',,..2%%_\6DI3EvtTTU			r   r0   dict[bytes, bytes]r   r   tuple[int, int] | Nonec                    t          ||dz                      }|dk    rd S |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/   r0   r   naxiss       r   	_get_sizezFitsImageFile._get_sizeH   s~     GFX-.//A::4A::c'&9"456666wv	1233S)AS9T5U5UUUr   &tuple[str, int, tuple[str | int, ...]]c                (   d}d}d}|                     d          dk    rm|                     d          dk    rT|d         d	k    rH|                     ||          pd
}t          |d                   }|d         |d         z  |dz  z  }d}d}|                     ||          }|sdS || _        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)getr?   r=   _size_modemode)	r/   r0   r   r2   r6   no_prefix_sizenumber_of_bitsr-   r7   s	            r   r'   zFitsImageFile._parse_headersT   sb    KK$$55I&&$..$55!^^GV<<FN !344N#A&)::nPQ>QRFF&L~~gv.. 	9
WVi%7899QDJJr!!DJJr!!DJJz))DJ 5  Iq"%DD"$DVT))r   N)r	   r   )r0   r:   r   r   r	   r;   )r0   r:   r	   r@   )__name__
__module____qualname__formatformat_descriptionr9   r?   r'   r   r   r   r   r      sd        F+V +V +V +VZ
V 
V 
V 
V'* '* '* '* '* '*r   r   c                      e Zd ZdZddZdS )	FitsGzipDecoderTbuffer$bytes | Image.SupportsArrayInterfacer	   tuple[int, int]c           	        | j         J t          j        | j                                                   }g }d}t	          | j        d         dz  d          }t          | j        j                  D ]\}t                      }t          | j        j
                  D ]}|||d|z
  z   |dz            z  }|dz  }|                    |           ]|                     t          d |d d d         D                                  dS )Nr   r      c                    g | ]	}|D ]}|
S r   r   ).0rowpixels      r   
<listcomp>z*FitsGzipDecoder.decode.<locals>.<listcomp>   s%    LLLLLuuLLLLr   rJ   )rJ   r   )fdgzip
decompressr    minr7   rangestateysize	bytearrayxsizeappend
set_as_rawr   )	r/   rX   r8   rowsr6   rP   yr_   xs	            r   decodezFitsGzipDecoder.decode   s   w"""//TYq\Q.22tz'(( 	 	A++C4:+,,  uVq>'9:VaZGHH!KKLLTTrT
LLLMMNNNur   N)rX   rY   r	   rZ   )rQ   rR   rS   	_pulls_fdrp   r   r   r   rW   rW   ~   s-        I     r   rW   rD   z.fitz.fits)r   r   r	   r
   )
__future__r   rc   r$   r   r   r   r   r   	PyDecoderrW   register_openrT   register_decoderregister_extensionsr   r   r   <module>rw      s   # " " " " "          # # # #d* d* d* d* d*I' d* d* d*N    i)   .  M(- A A A  {O 4 4 4  -.0A B B B B Br   