
    ⨽g                     4    d Z ddlmZ dad Z G d de      Zy)a  Read FITS files.

Backend Library: `Astropy <https://www.astropy.org/>`_

.. note::
    To use this plugin you have to install its backend::

        pip install imageio[fits]

Flexible Image Transport System (FITS) is an open standard defining a
digital file format useful for storage, transmission and processing of
scientific and other images. FITS is the most commonly used digital
file format in astronomy.


Parameters
----------
cache : bool
    If the file name is a URL, `~astropy.utils.data.download_file` is used
    to open the file.  This specifies whether or not to save the file
    locally in Astropy's download cache (default: `True`).
uint : bool
    Interpret signed integer data where ``BZERO`` is the
    central value and ``BSCALE == 1`` as unsigned integer
    data.  For example, ``int16`` data with ``BZERO = 32768``
    and ``BSCALE = 1`` would be treated as ``uint16`` data.

    Note, for backward compatibility, the kwarg **uint16** may
    be used instead.  The kwarg was renamed when support was
    added for integers of any size.
ignore_missing_end : bool
    Do not issue an exception when opening a file that is
    missing an ``END`` card in the last header.
checksum : bool or str
    If `True`, verifies that both ``DATASUM`` and
    ``CHECKSUM`` card values (when present in the HDU header)
    match the header and data of all HDU's in the file.  Updates to a
    file that already has a checksum will preserve and update the
    existing checksums unless this argument is given a value of
    'remove', in which case the CHECKSUM and DATASUM values are not
    checked, and are removed when saving changes to the file.
disable_image_compression : bool, optional
    If `True`, treats compressed image HDU's like normal
    binary table HDU's.
do_not_scale_image_data : bool
    If `True`, image data is not scaled using BSCALE/BZERO values
    when read.
ignore_blank : bool
    If `True`, the BLANK keyword is ignored if present.
scale_back : bool
    If `True`, when saving changes to a file that contained scaled
    image data, restore the data to the original type and reapply the
    original BSCALE/BZERO values.  This could lead to loss of accuracy
    if scaling back to integer values after performing floating point
    operations on the data.

   )FormatNc                  L    	 ddl ma t        S # t        $ r t        d      w xY w)N    )fitszoThe FITS format relies on the astropy package.Please refer to http://www.astropy.org/ for further instructions.)
astropy.ior   _fitsImportError     ]/var/www/it7/html/youtubeDownloader/venv/lib/python3.12/site-packages/imageio/plugins/fits.pyload_libr   C   s4    
, L  
(
 	

s    #c                   F    e Zd ZdZd Zd Z G d dej                        Zy)
FitsFormatzSee :mod:`imageio.plugins.fits`c                 2    |j                   | j                  v S N)	extension
extensionsselfrequests     r   	_can_readzFitsFormat._can_readS   s       DOO33r   c                      y)NFr
   r   s     r   
_can_writezFitsFormat._can_writeX   s    r   c                   ,    e Zd ZddZd Zd Zd Zd Zy)FitsFormat.Readerc                    t         s
t                t        j                  | j                  j	                         fd|i|}g | _        t         j                  t         j                  t         j                  f}t        t        t        |            |      D ]=  \  }}t        ||      s|j                  dkD  s#| j
                  j                  |       ? || _        y )Ncacher   )r   r   openr   get_file_indexImageHDU
PrimaryHDUCompImageHDUziprangelen
isinstancesizeappend_hdulist)r   r   kwargshdulistallowed_hdu_typesnhdus          r   _openzFitsFormat.Reader._open_   s    
jj!6!6!8PPPGDK!&1A1A5CUCU VeCL17; .3c#45 xx!|**1-. $DMr   c                 8    | j                   j                          y r   )r*   closer   s    r   _closezFitsFormat.Reader._closen   s    MM!r   c                 ,    t        | j                        S r   )r&   r    r3   s    r   _get_lengthzFitsFormat.Reader._get_lengthq   s    t{{##r   c                     |dk  s|t        | j                        k\  rt        d      | j                  | j                  |      j                  }|i fS )Nr   z*Index out of range while reading from fits)r&   r    
IndexErrorr*   data)r   indexims      r   	_get_datazFitsFormat.Reader._get_datat   sK    qyES%55 !MNNt{{51277Br6Mr   c                     t        d      )Nz+The fits format does not support meta data.)RuntimeError)r   r:   s     r   _get_meta_dataz FitsFormat.Reader._get_meta_data|   s    LMMr   N)F)__name__
__module____qualname__r0   r4   r6   r<   r?   r
   r   r   Readerr   ^   s    	$	"	$		Nr   rC   N)r@   rA   rB   __doc__r   r   r   rC   r
   r   r   r   r   P   s!    )4
 N  Nr   r   )rD   corer   r   r   r   r
   r   r   <module>rF      s(   8t 
.N .Nr   