
    \bjM(              	      j   U d dl mZ d dlZ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ed<   d8d9dZd:d;dZ G d d          Z G d de          Zej        dk    r ee            G d de          Zej        dk    r ee            G d  d!ej        e          Z G d" d#e          Z G d$ d%e          Z G d& d'e          Z G d( d)e          Z G d* d+e          Zej        d,vr ej        d-          r ee            ej        d.          r ee            ej        d/          r ee            ej        d0          r ee            ej        d1          r ee            G d2 d3e          Z	 d d4lmZ   ee           n# e!$ r Y nw xY we"d5k    r e#ej$                  d6k     r e%d7            ej&                      ej'        ej$        d                   5 Z( e% ee(gej$        d6d         R             ddd           dS # 1 swxY w Y   dS dS )<    )annotationsNquote)Any   )Imagezlist[Viewer]_viewersviewertype[Viewer] | ViewerorderintreturnNonec                    t          | t                    rt          | t                    r
 |             } |dk    rt                              |            dS 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)
isinstancetype
issubclassViewerr	   appendinsert)r
   r   s     A/home/drrone/.local/lib/python3.11/site-packages/PIL/ImageShow.pyregisterr      sm     &$ Jvv$>$> qyy6"""""    imageImage.Imagetitle
str | Noneoptionsr   boolc                @    t           D ]} |j        | fd|i|r dS 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.
    r   TF)r	   show)r   r   r   r
   s       r   r!   r!   3   sE       6;u55E5W55 	44	5r   c                  l    e Zd ZU dZddZd	Zd
ed<   	 i Zded<   	 ddZddZ	ddZ
ddZddZddZd	S )r   zBase class for viewers.r   r   r   r   r   r   c                    |j         dv sM| j        dk    r	|j         dv s9t          j        |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.
        )1RGBAPNG)zI;16LA)modeformatr   getmodebaseconvert
show_image)selfr   r   bases       r   r!   zViewer.showG   st     J-''u$$~)E)E$UZ00DzT!!d++tu00000r   Nr   r)   zdict[str, Any]c                    | j         S )z3Return format name, or ``None`` to save as PGM/PPM.)r)   r-   r   s     r   
get_formatzViewer.get_format^   s
    {r   filestrc                $    d}t          |          )zj
        Returns the command used to display the file.
        Not implemented in the base class.
        zunavailable in base viewer)NotImplementedErrorr-   r2   r   msgs       r   get_commandzViewer.get_commandb   s    
 +!#&&&r   c                P     |j         dd|                     |          i| j        S )z+Save to temporary file and return filename.r)    )_dumpr1   r   r0   s     r   
save_imagezViewer.save_imagej   s-    u{II$//%"8"8IDLIIIr   c                D     | j         |                     |          fi |S )zDisplay the given image.)	show_filer<   r-   r   r   s      r   r,   zViewer.show_imagen   s(    t~dooe44@@@@@r   pathc                    t           j                            |          st          t          j         | j        |fi |           dS )%
        Display given file.
        r   )osr@   existsFileNotFoundErrorsystemr8   r-   r@   r   s      r   r>   zViewer.show_filer   sK     w~~d## 	$##
	"$"433733444qr   r   c                    t          t          dd          ot          t          d          }| rt          j        pt	          j        d          }|rt          j        |dd|g           d S d S )NfrozenF_MEIPASSpython3z-cz<import os, sys, time; time.sleep(20); os.remove(sys.argv[1]))getattrsyshasattr
executableshutilwhich
subprocessPopen)r-   r@   pyinstallerrO   s       r   _remove_path_after_delayzViewer._remove_path_after_delay{   s    c8U33PZ8P8P%o8#.TV\)=T=T
 	R	    	 	r   r   r   r   r   r   r   )r   r   r   r   r2   r3   r   r   r   r3   )r   r   r   r3   r@   r3   r   r   r   r   )r@   r3   r   r   )__name__
__module____qualname____doc__r!   r)   __annotations__r   r1   r8   r<   r,   r>   rU   r:   r   r   r   r   B   s         !!1 1 1 1$ F/ G    7   ' ' ' 'J J J JA A A A        r   r   c                  0    e Zd ZdZdZdddZddZddZdS )WindowsViewerzNThe default viewer on Windows is the default system application for PNG files.r&   r   Tcompress_levelsave_allr2   r3   r   r   r   c                j    d|v rd}t          |          |                    dd          }d| d| dS )N"z.Windows filenames cannot contain double quotes%z"%"zstart "Pillow" /WAIT "z)" && ping -n 4 127.0.0.1 >NUL && del /f ")
ValueErrorreplacer6   s       r   r8   zWindowsViewer.get_command   sW    $;;BCS//!||C''"T " "" " "	
r   r@   r   c                    t           j                            |          st          t          j        dk    rt          j        |           |                     |           dS )rB   win32r   )rC   r@   rD   rE   rM   platform	startfilerU   rG   s      r   r>   zWindowsViewer.show_file   sV     w~~d## 	$##<7""L%%d+++qr   NrW   rX   rY   rZ   r[   r\   r)   r   r8   r>   r:   r   r   r_   r_      sT        XXF!"55G	
 	
 	
 	
	 	 	 	 	 	r   r_   ri   c                  0    e Zd ZdZdZdddZddZddZdS )	MacViewerz2The default viewer on macOS using ``Preview.app``.r&   r   Tr`   r2   r3   r   r   r   c                V    d}d| dt          |           dt          |           d}|S )Nzopen -a Preview.app( z; sleep 20; rm -f z)&r   r-   r2   r   commands       r   r8   zMacViewer.get_command   s:     (NgNNdNNuT{{NNNr   r@   r   c                    t           j                            |          st          t	          j        ddd|g           |                     |           dS )rB   openz-azPreview.appr   )rC   r@   rD   rE   rR   callrU   rG   s      r   r>   zMacViewer.show_file   sR     w~~d## 	$##}d;<<<%%d+++qr   NrW   rX   rl   r:   r   r   rn   rn      sT        <<F!"55G        r   rn   darwinc                  F    e Zd ZdZdddZej        dd            ZddZdS )
UnixViewerr&   r   Tr`   r2   r3   r   r   r   tuple[str, str]c                    d S Nr:   )r-   r2   r   s      r   get_command_exzUnixViewer.get_command_ex   s    r   c                R     | j         |fi |d         }| dt          |           S )Nr   rq   )r}   r   rr   s       r   r8   zUnixViewer.get_command   s;    %$%d66g66q9))E$KK)))r   Nr2   r3   r   r   r   rz   rW   )	rY   rZ   r[   r)   r   abcabstractmethodr}   r8   r:   r   r   ry   ry      s\        F!"55G   * * * * * *r   ry   c                  "    e Zd ZdZddZddZdS )	XDGViewerz3
    The freedesktop.org ``xdg-open`` command.
    r2   r3   r   r   r   rz   c                    dx}}||fS )Nxdg-openr:   )r-   r2   r   rs   rO   s        r   r}   zXDGViewer.get_command_ex   s    ))*
""r   r@   r   c                ~    t           j                            |          st          t	          j        d|g           dS )rB   r   r   rC   r@   rD   rE   rR   rS   rG   s      r   r>   zXDGViewer.show_file   s;     w~~d## 	$##*d+,,,qr   Nr   rX   rY   rZ   r[   r\   r}   r>   r:   r   r   r   r      sF         # # # #     r   r   c                  &    e Zd ZdZ	 dddZddZdS )DisplayViewerz`
    The ImageMagick ``display`` command.
    This viewer supports the ``title`` parameter.
    Nr2   r3   r   r   r   r   r   rz   c                @    dx}}|r|dt          |           z  }||fS )Ndisplayz -title r   r-   r2   r   r   rs   rO   s         r   r}   zDisplayViewer.get_command_ex   s:      )(* 	10%,,000G
""r   r@   r   c                    t           j                            |          st          dg}|                    d          }|r|d|gz  }|                    |           t          j        |           dS )rB   r   r   z-titler   rC   r@   rD   rE   getr   rR   rS   r-   r@   r   argsr   s        r   r>   zDisplayViewer.show_file   sw     w~~d## 	$##{G$$ 	&Xu%%DDqr   r|   r2   r3   r   r   r   r   r   rz   rX   r   r:   r   r   r   r      sP          .2# # # # #     r   r   c                  "    e Zd ZdZddZddZdS )GmDisplayViewerz*The GraphicsMagick ``gm display`` command.r2   r3   r   r   r   rz   c                    d}d}||fS )Ngmz
gm displayr:   r-   r2   r   rO   rs   s        r   r}   zGmDisplayViewer.get_command_ex  s    

""r   r@   r   c                    t           j                            |          st          t	          j        dd|g           dS )rB   r   r   r   r   rG   s      r   r>   zGmDisplayViewer.show_file  s=     w~~d## 	$##$	40111qr   Nr   rX   r   r:   r   r   r   r     sB        44# # # #
     r   r   c                  "    e Zd ZdZddZddZdS )	EogViewerz'The GNOME Image Viewer ``eog`` command.r2   r3   r   r   r   rz   c                    d}d}||fS )Neogzeog -nr:   r   s        r   r}   zEogViewer.get_command_ex  s    

""r   r@   r   c                    t           j                            |          st          t	          j        dd|g           dS )rB   r   z-nr   r   rG   s      r   r>   zEogViewer.show_file"  s=     w~~d## 	$##%t,---qr   Nr   rX   r   r:   r   r   r   r     sB        11# # # #
     r   r   c                  &    e Zd ZdZ	 dddZddZdS )XVViewerzX
    The X Viewer ``xv`` command.
    This viewer supports the ``title`` parameter.
    Nr2   r3   r   r   r   r   r   rz   c                @    dx}}|r|dt          |           z  }||fS )Nxvz -name r   r   s         r   r}   zXVViewer.get_command_ex2  s:    
  $#* 	0/u///G
""r   r@   r   c                    t           j                            |          st          dg}|                    d          }|r|d|gz  }|                    |           t          j        |           dS )rB   r   r   z-namer   r   r   s        r   r>   zXVViewer.show_file<  sw     w~~d## 	$##vG$$ 	%We$$DDqr   r|   r   rX   r   r:   r   r   r   r   ,  sP          .2# # # # #     r   r   )ri   rw   r   r   r   r   r   c                      e Zd ZdZd
dZd	S )IPythonViewerz!The viewer for IPython frontends.r   r   r   r   r   r   c                $    t          |           dS )Nr   )ipython_displayr?   s      r   r,   zIPythonViewer.show_image\  s    qr   NrV   )rY   rZ   r[   r\   r,   r:   r   r   r   r   Y  s.        ++     r   r   )r   __main__   z.Syntax: python3 ImageShow.py imagefile [title])r   )r
   r   r   r   r   r   r|   )r   r   r   r   r   r   r   r   ))
__future__r   r   rC   rP   rR   rM   shlexr   typingr    r   r	   r]   r   r!   r   r_   rj   rn   ABCry   r   r   r   r   r   rQ   r   IPython.displayr   r   ImportErrorrY   lenargvprintexitru   imr:   r   r   <module>r      s   # " " " " " " 



 				      



                      # # # # #,    E E E E E E E EV    F   : <7H]       0 <8HY
* 
* 
* 
* 
*& 
* 
* 
*    
   &    J   <    j   $    
   $    z   @ <***v|J v|I  v|D "!!!v|E v|D     F   :::::: H]  	 	 	D	 z
s38}}q>???


	CHQK	 	  'Bdd2%%%%&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' s$   F F'&F'9 H&&H*-H*