a
    i=ic1+                     @   s:  d dl Z d dlZd dlZd dlZd dlmZ d dlmZ ddlm	Z	 g Z
d*ddZd+dd	ZG d
d dZG dd deZejdkree G dd deZejdkree G dd deZG dd deZG dd deZG dd deZG dd deZG dd deZejdvr~edr.ee ed rBee ed!rVee ed"rjee ed#r~ee G d$d% d%eZzd d&lmZ W n ey   Y n
0 ee ed'kr6eejd(k re d) e!  e"ejd .Z#e ee#gejd(d R   W d   n1 s,0    Y  dS ),    Nquote)Image   )	deprecatec                 C   sL   zt | tr|  } W n ty&   Y n0 |dkr<t|  ntd|  dS )a$  
    The :py:func:`register` function is used to register additional viewers::

        from PIL import ImageShow
        ImageShow.register(MyViewer())  # MyViewer will be used as a last resort
        ImageShow.register(MySecondViewer(), 0)  # MySecondViewer will be prioritised
        ImageShow.register(ImageShow.XVViewer(), 0)  # XVViewer will be prioritised

    :param viewer: The viewer to be registered.
    :param order:
        Zero or a negative integer to prepend this viewer to the list,
        a positive integer to append it.
    r   N)
issubclassViewer	TypeError_viewersappendinsert)viewerorder r   ^/home/droni/.local/share/virtualenvs/DPS-5Je3_V2c/lib/python3.9/site-packages/PIL/ImageShow.pyregister   s    

r   c                 K   s*   t D ] }|j| fd|i|r dS qdS )a  
    Display a given image.

    :param image: An image object.
    :param title: Optional title. Not all viewers can display the title.
    :param \**options: Additional viewer options.
    :returns: ``True`` if a suitable viewer was found, ``False`` otherwise.
    titleTF)r
   show)imager   optionsr   r   r   r   r   4   s    	r   c                   @   sJ   e Zd ZdZdd ZdZi Zdd Zdd Zd	d
 Z	dd Z
dddZdS )r   zBase class for viewers.c                 K   sP   |j dv s>| jdkr|j dv s>t|j }|j |kr>||}| j|fi |S )z
        The main function for displaying an image.
        Converts the given image to the target format and displays it.
        )1ZRGBAPNG)zI;16ZLA)modeformatr   Zgetmodebaseconvert
show_image)selfr   r   baser   r   r   r   H   s    

zViewer.showNc                 C   s   | j S )z3Return format name, or ``None`` to save as PGM/PPM.)r   r   r   r   r   r   
get_format_   s    zViewer.get_formatc                 K   s   t dS )zj
        Returns the command used to display the file.
        Not implemented in the base class.
        N)NotImplementedErrorr   filer   r   r   r   get_commandc   s    zViewer.get_commandc                 C   s   |j f d| |i| jS )z+Save to temporary file and return filename.r   )_dumpr   r   r   r   r   r   
save_imagej   s    zViewer.save_imagec                 K   s   | j | |fi |S )zDisplay the given image.)	show_filer%   r   r   r   r   r   r   r   n   s    zViewer.show_imagec                 K   sL   |du r0d|v r(t ddd |d}ntdt| j|fi | dS )
        Display given file.

        Before Pillow 9.1.0, the first argument was ``file``. This is now deprecated,
        and will be removed in Pillow 10.0.0 (2023-07-01). ``path`` should be used
        instead.
        Nr"   The 'file' argument
   'path'!Missing required argument: 'path'r   )r   popr	   ossystemr#   r   pathr   r   r   r   r&   r   s    zViewer.show_file)N)__name__
__module____qualname____doc__r   r   r   r   r#   r%   r   r&   r   r   r   r   r   C   s   r   c                   @   s$   e Zd ZdZdZddiZdd ZdS )WindowsViewerzNThe default viewer on Windows is the default system application for PNG files.r   compress_levelr   c                 K   s   d| d| dS )Nzstart "Pillow" /WAIT "z)" && ping -n 4 127.0.0.1 >NUL && del /f ""r   r!   r   r   r   r#      s    zWindowsViewer.get_commandN)r2   r3   r4   r5   r   r   r#   r   r   r   r   r6      s   r6   win32c                   @   s.   e Zd ZdZdZddiZdd Zd
dd	ZdS )	MacViewerz2The default viewer on macOS using ``Preview.app``.r   r7   r   c                 K   s(   d}d| dt | dt | d}|S )Nzopen -a Preview.app( z; sleep 20; rm -f z)&r   r   r"   r   commandr   r   r   r#      s     zMacViewer.get_commandNc                 K   sZ   |du r0d|v r(t ddd |d}ntdtddd	|g ttjd
d|g dS )r(   Nr"   r)   r*   r+   r,   openz-azPreview.appz-cz<import os, sys, time; time.sleep(20); os.remove(sys.argv[1])r   )r   r-   r	   
subprocesscallPopensys
executabler0   r   r   r   r&      s    zMacViewer.show_file)N)r2   r3   r4   r5   r   r   r#   r&   r   r   r   r   r:      s
   r:   darwinc                   @   s    e Zd ZdZddiZdd ZdS )
UnixViewerr   r7   r   c                 K   s*   | j |fi |d }d| dt| S )Nr   r;   r<   )get_command_exr   r=   r   r   r   r#      s    zUnixViewer.get_commandN)r2   r3   r4   r   r   r#   r   r   r   r   rF      s   rF   c                   @   s"   e Zd ZdZdd ZdddZdS )	XDGViewerz3
    The freedesktop.org ``xdg-open`` command.
    c                 K   s   d }}||fS )Nxdg-openr   )r   r"   r   r>   rD   r   r   r   rG      s    zXDGViewer.get_command_exNc                 K   sB   |du r0d|v r(t ddd |d}ntdtd|g dS )	r(   Nr"   r)   r*   r+   r,   rI   r   r   r-   r	   r@   rB   r0   r   r   r   r&      s    zXDGViewer.show_file)Nr2   r3   r4   r5   rG   r&   r   r   r   r   rH      s   rH   c                   @   s$   e Zd ZdZdddZdddZdS )	DisplayViewerz`
    The ImageMagick ``display`` command.
    This viewer supports the ``title`` parameter.
    Nc                 K   s&   d }}|r|dt | 7 }||fS )Ndisplayz -title r   r   r"   r   r   r>   rD   r   r   r   rG      s    zDisplayViewer.get_command_exc                 K   sh   |du r0d|v r(t ddd |d}ntddg}|d}|rP|d	|g7 }|| t| d
S )
        Display given file.

        Before Pillow 9.1.0, the first argument was ``file``. This is now deprecated,
        and ``path`` should be used instead.
        Nr"   r)   r*   r+   r,   rM   r   z-titler   r   r-   r	   getr   r@   rB   r   r1   r   argsr   r   r   r   r&      s    


zDisplayViewer.show_file)N)NrK   r   r   r   r   rL      s   
rL   c                   @   s"   e Zd ZdZdd ZdddZdS )GmDisplayViewerz*The GraphicsMagick ``gm display`` command.c                 K   s   d}d}||fS )Ngmz
gm displayr   r   r"   r   rD   r>   r   r   r   rG     s    zGmDisplayViewer.get_command_exNc                 K   sD   |du r0d|v r(t ddd |d}ntdtdd|g d	S )
rO   Nr"   r)   r*   r+   r,   rU   rM   r   rJ   r0   r   r   r   r&     s    zGmDisplayViewer.show_file)NrK   r   r   r   r   rT     s   rT   c                   @   s"   e Zd ZdZdd ZdddZdS )	EogViewerz'The GNOME Image Viewer ``eog`` command.c                 K   s   d}d}||fS )Neogzeog -nr   rV   r   r   r   rG   '  s    zEogViewer.get_command_exNc                 K   sD   |du r0d|v r(t ddd |d}ntdtdd|g d	S )
rO   Nr"   r)   r*   r+   r,   rX   z-nr   rJ   r0   r   r   r   r&   ,  s    zEogViewer.show_file)NrK   r   r   r   r   rW   $  s   rW   c                   @   s$   e Zd ZdZdddZdddZdS )	XVViewerzX
    The X Viewer ``xv`` command.
    This viewer supports the ``title`` parameter.
    Nc                 K   s&   d }}|r|dt | 7 }||fS )Nxvz -name r   rN   r   r   r   rG   C  s    zXVViewer.get_command_exc                 K   sh   |du r0d|v r(t ddd |d}ntddg}|d}|rP|d	|g7 }|| t| d
S )rO   Nr"   r)   r*   r+   r,   rZ   r   z-namer   rP   rR   r   r   r   r&   K  s    


zXVViewer.show_file)N)NrK   r   r   r   r   rY   =  s   
rY   )r9   rE   rI   rM   rU   rX   rZ   c                   @   s   e Zd ZdZdd ZdS )IPythonViewerz!The viewer for IPython frontends.c                 K   s   t | dS )Nr   )ipython_displayr'   r   r   r   r   r  s    zIPythonViewer.show_imageN)r2   r3   r4   r5   r   r   r   r   r   r[   o  s   r[   )rM   __main__   z.Syntax: python3 ImageShow.py imagefile [title])r   )N)$r.   shutilr@   rC   shlexr   ZPILr   Z
_deprecater   r
   r   r   r   r6   platformr:   rF   rH   rL   rT   rW   rY   whichr[   IPython.displayrM   r\   ImportErrorr2   lenargvprintexitr?   Zimr   r   r   r   <module>   sZ   

D
'
	#%
