§
    2?Äj;  ã                   óŽ   — d Z ddlmZmZmZmZmZmZmZ ddl	Z	ddl
ZddlmZmZmZmZ ddlmZmZ ddlmZ  G d„ d	e¦  «        ZdS )
z´Read/Write images using rawpy.

rawpy is an easy-to-use Python wrapper for the LibRaw library.
It also contains some extra functionality for finding and repairing hot/dead pixels.
é    )ÚAnyÚDictÚIteratorÚListÚOptionalÚTupleÚUnionNé   )Ú	URI_BYTESÚInitializationErrorÚIOModeÚRequest)ÚImagePropertiesÚPluginV3)Ú	ArrayLikec            	       óè   ‡ — e Zd ZdZdeddfˆ fd„Zdd„Zddœd	edej	        fd
„Z
deeee         f         dee         fd„Zdeej	                 fd„Z	 dd	ededeeef         fd„Zdd	edefd„Zˆ xZS )ÚRawPyPluginz�A class representing the rawpy plugin.

    Methods
    -------

    .. autosummary::
    :toctree: _plugins/rawpy

    RawPyPlugin.read
    ÚrequestÚreturnNc                 ó  •— t          ¦   «                              |¦  «         d| _        |j        j        t
          j        k    r‘	 t          j        | 	                    ¦   «         ¦  «        | _        dS # t          j
        t          j        t          j        f$ r: |j        t          k    rt          d¦  «        d‚t          d|j        › d�¦  «        d‚w xY w|j        j        t
          j        k    rt          d¦  «        d‚dS )z¹Instantiates a new rawpy plugin object

        Parameters
        ----------
        request: Request
            A request object representing the resource to be operated on.
        Nz&RawPy can not read the provided bytes.zRawPy can not read ú.úRawPy does not support writing.)ÚsuperÚ__init__Ú_image_fileÚmodeÚio_moder   ÚreadÚrawpyÚimreadÚget_fileÚNotSupportedErrorÚLibRawFileUnsupportedErrorÚLibRawIOErrorÚ	_uri_typer   r   Úraw_uriÚwrite)Úselfr   Ú	__class__s     €úFC:\Projects\Historical\venv\Lib\site-packages\imageio/plugins/rawpy.pyr   zRawPyPlugin.__init__   s  ø€ õ 	‰Œ×Ò˜Ñ!Ô!Ð!àˆÔàŒ<Ô¥6¤;Ò.Ð.ð Ý#(¤<°×0@Ò0@Ñ0BÔ0BÑ#CÔ#C�Ô Ð Ð øåÔ'ÝÔ0ÝÔ#ðð  ð  ð  ð
 Ô$­	Ò1Ð1Ý-Ø@ñô àð õ .Ø@¨g¬oÐ@Ð@Ð@ñô àð ð øøøð Œ\Ô!¥V¤\Ò1Ð1Ý%Ð&GÑHÔHÈdÐRð 2Ð1s   Á+A2 Á2A Cc                 óx   — | j         r| j                              ¦   «          | j                             ¦   «          d S ©N)r   ÚcloseÚ_requestÚfinish©r(   s    r*   r-   zRawPyPlugin.close<   s<   € ØÔð 	%ØÔ×"Ò"Ñ$Ô$Ð$àŒ×ÒÑÔÐÐÐó    r   )Úindexr2   c                óp   — 	  | j         j        di |¤Ž}n# t          $ r Y nw xY w|t          u r|d         }|S )znRead Raw Image.

        Returns
        -------
        nd_image: ndarray
            The image data
        )N.© )r   ÚpostprocessÚ	ExceptionÚEllipsis)r(   r2   ÚkwargsÚnd_images       r*   r   zRawPyPlugin.readB   s`   € ð	Ø3�tÔ'Ô3Ð=Ð=°fÐ=Ð=ˆHˆHøÝð 	ð 	ð 	ØˆDð	øøøð •HÐÐØ 	Ô*ˆHàˆs   ‚ •
"¡"Úndimagec                 ó   — t          ¦   «         ‚)r   )ÚNotImplementedError)r(   r:   s     r*   r'   zRawPyPlugin.writeW   s   € å!Ñ#Ô#Ð#r1   c              #   óZ   K  — 	 |                       ¦   «         V — dS # t          $ r Y dS w xY w)znLoad the image.

        Returns
        -------
        nd_image: ndarray
            The image data
        N)r   r6   r0   s    r*   ÚiterzRawPyPlugin.iter[   sG   è è € ð	Ø—)’)‘+”+ÐÐÐÐÐøÝð 	ð 	ð 	ØˆDˆDð	øøøs   „ œ
*©*TÚexclude_appliedc                 óœ  — i }| j         j        }| j         j        |d<   | j         j        |d<   | j         j        |d<   | j         j        |d<   | j         j        |d<   | j         j        j        |d<   |j	        |d<   | j         j
        |d<   | j         j        |d	<   |j        |d
<   |j        |d<   |j        |d<   |j        |d<   | j         j        j        |d<   |j        |d<   |j        |d<   |j        |d<   | j         j        |d<   |�rJ|                     dd¦  «         |                     dd¦  «         |                     dd¦  «         |                     dd¦  «         |                     dd¦  «         |                     dd¦  «         |                     dd¦  «         |                     dd¦  «         |                     d	d¦  «         |                     dd¦  «         |                     dd¦  «         |                     dd¦  «         |                     dd¦  «         |                     dd¦  «         |                     dd¦  «         |S )aõ  Read ndimage metadata.

        Parameters
        ----------
        exclude_applied : bool
            If True, exclude metadata fields that are applied to the image while
            reading. For example, if the binary data contains a rotation flag,
            the image is rotated by default and the rotation flag is excluded
            from the metadata to avoid confusion.

        Returns
        -------
        metadata : dict
            A dictionary of format-specific metadata.

        Úblack_level_per_channelÚcamera_white_level_per_channelÚ
color_descÚcolor_matrixÚdaylight_whitebalanceÚdtypeÚflipÚ
num_colorsÚ
tone_curveÚwidthÚheightÚ	raw_widthÚ
raw_heightÚ	raw_shapeÚiwidthÚiheightÚpixel_aspectÚwhite_levelN)r   ÚsizesrA   rB   rC   rD   rE   Ú	raw_imagerF   rG   rH   rI   rJ   rK   rL   rM   ÚshaperO   rP   rQ   rR   Úpop)r(   r2   r?   ÚmetadataÚ
image_sizes        r*   rW   zRawPyPlugin.metadatai   se  € ð( ˆàÔ%Ô+ˆ
à.2Ô.>Ô.VˆÐ*Ñ+àÔÔ;ð 	Ð1Ñ2ð "&Ô!1Ô!<ˆ�ÑØ#'Ô#3Ô#@ˆ�Ñ Ø,0Ô,<Ô,RˆÐ(Ñ)Ø Ô,Ô6Ô<ˆ�ÑØ%œ?ˆ�ÑØ!%Ô!1Ô!<ˆ�ÑØ!%Ô!1Ô!<ˆ�ÑØ&Ô,ˆ�ÑØ'Ô.ˆ�ÑØ *Ô 4ˆ�ÑØ!+Ô!6ˆ�ÑØ $Ô 0Ô :Ô @ˆ�ÑØ'Ô.ˆ�ÑØ(Ô0ˆ�ÑØ#-Ô#:ˆ�Ñ Ø"&Ô"2Ô">ˆ�Ñàñ 	.Ø�LŠLÐ2°DÑ9Ô9Ð9Ø�LŠLÐ9¸4Ñ@Ô@Ð@Ø�LŠL˜ tÑ,Ô,Ð,Ø�LŠL˜¨Ñ.Ô.Ð.Ø�LŠLÐ0°$Ñ7Ô7Ð7Ø�LŠL˜ $Ñ'Ô'Ð'Ø�LŠL˜ Ñ&Ô&Ð&Ø�LŠL˜ tÑ,Ô,Ð,Ø�LŠL˜ tÑ,Ô,Ð,Ø�LŠL˜ dÑ+Ô+Ð+Ø�LŠL˜ tÑ,Ô,Ð,Ø�LŠL˜ dÑ+Ô+Ð+Ø�LŠL˜ 4Ñ(Ô(Ð(Ø�LŠL˜ DÑ)Ô)Ð)Ø�LŠL˜¨Ñ-Ô-Ð-àˆr1   c                 ó‚   — | j         j        }|j        }|j        }||f}| j         j        j        }t          ||¬¦  «        S )a  Standardized ndimage metadata

        Returns
        -------
        properties : ImageProperties
            A dataclass filled with standardized image metadata.

        Notes
        -----
        This does not decode pixel data and is fast for large images.

        )rU   rF   )r   rS   rJ   rK   rT   rF   r   )r(   r2   Ú	ImageSizerJ   rK   rU   rF   s          r*   Ú
propertieszRawPyPlugin.properties©   sH   € ð Ô$Ô*ˆ	à”_ˆØÔ&ˆØ"(¨% ˆàÔ Ô*Ô0ˆå U°%Ð8Ñ8Ô8Ð8r1   )r   N)NTr,   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r-   ÚintÚnpÚndarrayr   r	   r   r   r   Úbytesr'   r   r>   Úboolr   Ústrr   rW   r   r[   Ú__classcell__)r)   s   @r*   r   r      sa  ø€ € € € € ð	ð 	ðS ð S¨Dð Sð Sð Sð Sð Sð Sð@ð ð ð ð $%ð ð ð ˜Sð °2´:ð ð ð ð ð*$˜U 9¨d°9¬oÐ#=Ô>ð $À8ÈEÄ?ð $ð $ð $ð $ð�h˜rœzÔ*ð ð ð ð ð :>ð>ð >Øð>Ø26ð>à	ˆc�3ˆhŒð>ð >ð >ð >ð@9ð 9 ð 9¨ð 9ð 9ð 9ð 9ð 9ð 9ð 9ð 9r1   r   )r_   Útypingr   r   r   r   r   r   r	   r   Únumpyra   Úcore.requestr   r   r   r   Úcore.v3_plugin_apir   r   r   r   r4   r1   r*   ú<module>rk      sé   ððð ð EÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DØ €€€Ø Ð Ð Ð à JÐ JÐ JÐ JÐ JÐ JÐ JÐ JÐ JÐ JÐ JÐ JØ :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ø Ð Ð Ð Ð Ð ðo9ð o9ð o9ð o9ð o9�(ñ o9ô o9ð o9ð o9ð o9r1   