B
    x\                 @   sd   d dl Z d dlmZmZ ddlmZ dZdd Zdd	 Zd
d Z	dd Z
dd Zdd Zdd ZdS )    N)PY2	text_type   )PyperclipExceptionz
    Pyperclip could not find a copy/paste mechanism for your system.
    For more information, please visit https://pyperclip.readthedocs.org c              C   s   dd } dd }| |fS )Nc             S   s,   t jddgt jdd}|j| dd d S )NZpbcopywT)stdin	close_fdszutf-8)input)
subprocessPopenPIPEcommunicateencode)textp r   =lib/python3.7/site-packages/pandas/io/clipboard/clipboards.pycopy_osx   s    
z$init_osx_clipboard.<locals>.copy_osxc              S   s,   t jddgt jdd} |  \}}|dS )NZpbpasterT)stdoutr   zutf-8)r
   r   r   r   decode)r   r   stderrr   r   r   	paste_osx   s    
z%init_osx_clipboard.<locals>.paste_osxr   )r   r   r   r   r   init_osx_clipboard   s    r   c                 s(   dd l   fdd}  fdd}| |fS )Nr   c                s      at|  t  d S )N)	ClipboardcbZset_textZstore)r   )gtkr   r   copy_gtk   s    
z$init_gtk_clipboard.<locals>.copy_gtkc                 s        } | d krdS | S d S )N )r   Zwait_for_text)clipboardContents)r   r   r   	paste_gtk$   s    z%init_gtk_clipboard.<locals>.paste_gtk)r   )r   r    r   )r   r   init_gtk_clipboard   s    r!   c                 s   yddl m}  W nF tk
rV   yddlm}  W n  tk
rP   ddlm}  Y nX Y nX |    d krp| g   fdd} fdd}||fS )Nr   )QApplicationc                s      }||  d S )N)	clipboardZsetText)r   r   )appr   r   copy_qt?   s    z"init_qt_clipboard.<locals>.copy_qtc                 s      } t|  S )N)r#   r   r   )r   )r$   r   r   paste_qtC   s    z#init_qt_clipboard.<locals>.paste_qt)Zqtpy.QtWidgetsr"   ImportErrorZPyQt5.QtWidgetsZPyQt4.QtGuiinstance)r"   r%   r&   r   )r$   r   init_qt_clipboard/   s    r)   c              C   s   dd } dd }| |fS )Nc             S   s.   t jdddgt jdd}|j| dd d S )Nxclipz
-selectioncT)r   r   zutf-8)r	   )r
   r   r   r   r   )r   r   r   r   r   
copy_xclipK   s    z(init_xclip_clipboard.<locals>.copy_xclipc              S   s0   t jddddgt jdd} |  \}}|dS )Nr*   z
-selectionr+   z-oT)r   r   zutf-8)r
   r   r   r   r   )r   r   r   r   r   r   paste_xclipP   s    z)init_xclip_clipboard.<locals>.paste_xclipr   )r,   r-   r   r   r   init_xclip_clipboardJ   s    r.   c              C   s   dd } dd }| |fS )Nc             S   s.   t jdddgt jdd}|j| dd d S )Nxselz-bz-iT)r   r   zutf-8)r	   )r
   r   r   r   r   )r   r   r   r   r   	copy_xselZ   s    z&init_xsel_clipboard.<locals>.copy_xselc              S   s.   t jdddgt jdd} |  \}}|dS )Nr/   z-bz-oT)r   r   zutf-8)r
   r   r   r   r   )r   r   r   r   r   r   
paste_xsel_   s    z'init_xsel_clipboard.<locals>.paste_xselr   )r0   r1   r   r   r   init_xsel_clipboardY   s    r2   c              C   s   dd } dd }| |fS )Nc             S   s2   t jdddd| dgt jdd}|jd d d S )	Nqdbuszorg.kde.klipperz/klipperZsetClipboardContentszutf-8T)r   r   )r	   )r
   r   r   r   r   )r   r   r   r   r   copy_klipperi   s
    
z,init_klipper_clipboard.<locals>.copy_klipperc              S   sh   t jddddgt jdd} |  \}}|d}t|dks@t|d	sNt|d	rd|d d
 }|S )Nr3   zorg.kde.klipperz/klipperZgetClipboardContentsT)r   r   zutf-8r   
)r
   r   r   r   r   lenAssertionErrorendswith)r   r   r   r   r   r   r   paste_klipperp   s    


z-init_klipper_clipboard.<locals>.paste_klipperr   )r4   r:   r   r   r   init_klipper_clipboardh   s    r;   c              C   s   G dd dt } |  |  fS )Nc               @   s*   e Zd Zdd Zerdd Zndd ZdS )z/init_no_clipboard.<locals>.ClipboardUnavailablec             _   s   t td S )N)r   
EXCEPT_MSG)selfargskwargsr   r   r   __call__   s    z8init_no_clipboard.<locals>.ClipboardUnavailable.__call__c             S   s   dS )NFr   )r=   r   r   r   __nonzero__   s    z;init_no_clipboard.<locals>.ClipboardUnavailable.__nonzero__c             S   s   dS )NFr   )r=   r   r   r   __bool__   s    z8init_no_clipboard.<locals>.ClipboardUnavailable.__bool__N)__name__
__module____qualname__r@   r   rA   rB   r   r   r   r   ClipboardUnavailable   s   
rF   )object)rF   r   r   r   init_no_clipboard   s    rH   )r
   Zpandas.compatr   r   
exceptionsr   r<   r   r!   r)   r.   r2   r;   rH   r   r   r   r   <module>   s   