o
    ðËh³  ã                   @   s0   d Z ddlmZ dadd„ ZG dd„ deƒZdS )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                   C   s*   z	ddl ma W tS  ty   tdƒ‚w )Né    )ÚfitszoThe FITS format relies on the astropy package.Please refer to http://www.astropy.org/ for further instructions.)Ú
astropy.ior   Ú_fitsÚImportError© r   r   úO/var/www/html/scripts/venv/lib/python3.10/site-packages/imageio/plugins/fits.pyÚload_libC   s   úÿÿr
   c                   @   s2   e Zd ZdZdd„ Zdd„ ZG dd„ dejƒZdS )	Ú
FitsFormatzSee :mod:`imageio.plugins.fits`c                 C   s   |j | jv S ©N)Ú	extensionÚ
extensions©ÚselfÚrequestr   r   r	   Ú	_can_readS   s   zFitsFormat._can_readc                 C   s   dS )NFr   r   r   r   r	   Ú
_can_writeX   s   zFitsFormat._can_writec                   @   s6   e Zd Zddd„Zdd„ Zdd„ Zdd	„ Zd
d„ ZdS )zFitsFormat.ReaderFc                 K   s‚   t stƒ  t j| j ¡ fd|i|¤Ž}g | _t jt jt jf}t	t
t|ƒƒ|ƒD ]\}}t||ƒr;|jdkr;| j |¡ q'|| _d S )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Úhdur   r   r	   Ú_open_   s   

€
zFitsFormat.Reader._openc                 C   s   | j  ¡  d S r   )r!   Úclose©r   r   r   r	   Ú_closen   s   zFitsFormat.Reader._closec                 C   s
   t | jƒS r   )r   r   r)   r   r   r	   Ú_get_lengthq   s   
zFitsFormat.Reader._get_lengthc                 C   s8   |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Úimr   r   r	   Ú	_get_datat   s   zFitsFormat.Reader._get_datac                 C   s   t dƒ‚)Nz+The fits format does not support meta data.)ÚRuntimeError)r   r.   r   r   r	   Ú_get_meta_data|   s   z FitsFormat.Reader._get_meta_dataN)F)Ú__name__Ú
__module__Ú__qualname__r'   r*   r+   r0   r2   r   r   r   r	   ÚReader^   s    
r6   N)r3   r4   r5   Ú__doc__r   r   r   r6   r   r   r   r	   r   P   s
    r   )r7   Úcorer   r   r
   r   r   r   r   r	   Ú<module>   s
   :