3
qd                 @   sL   d Z ddlmZ ddlZddlmZ ddlmZmZ dddZ	dd
dZ
dS )z io on the clipboard     )StringION)ABCDataFrame)
get_optionoption_context\s+c             K   sZ  |j dd}|dk	r0|j jdddkr0tddd	lm} dd
lm} | }y|j|j	dpdt
d}W n tk
r~   Y nX |dd jddd dd }dd |D }t|dkrt|dkr|j  dkrd} | dkr|j	ddkrd} t| dkr|j	ddkrd|d< n(t| dkrB|j	ddkrBtjd |t|fd| i|S )aj  
    Read text from clipboard and pass to read_csv.

    Parameters
    ----------
    sep : str, default '\s+'
        A string or regex delimiter. The default of '\s+' denotes
        one or more whitespace characters.

    **kwargs
        See read_csv for the full argument list.

    Returns
    -------
    DataFrame
        A parsed DataFrame object.
    encodingzutf-8N- utf8z3reading from clipboard only supports utf-8 encodingr   )clipboard_get)read_csvzdisplay.encodingi'  
   
   c             S   s   h | ]}|j  jd qS )	)lstripcount).0x r   6/tmp/pip-build-7vycvbft/pandas/pandas/io/clipboards.py	<setcomp>:   s    z!read_clipboard.<locals>.<setcomp>r   Zdelim_whitespacez\s+ZenginepythonczHread_clipboard with regex separator does not work properly with c enginesep)poplowerreplaceNotImplementedErrorpandas.io.clipboardr   Zpandas.io.parsersr   decodegetr   AttributeErrorsplitlenwarningswarnr   )r   kwargsr   r   r   textlinescountsr   r   r   read_clipboard
   s,    "$
r,   Tc       	      K   s   |j dd}|dk	r0|j jdddkr0tddd	lm} |dkrHd
}|ry>|dkrZd}t }| j|f|dd| |j }|| dS  t	k
r   t
jd Y qX n|dk	rt
jd t| trtdd | jf |}W dQ R X nt| }|| dS )a  
    Attempt to write text representation of object to the system clipboard
    The clipboard can be then pasted into Excel for example.

    Parameters
    ----------
    obj : the object to write to the clipboard
    excel : boolean, defaults to True
            if True, use the provided separator, writing in a csv
            format for allowing easy pasting into excel.
            if False, write a string representation of the object
            to the clipboard
    sep : optional, defaults to tab
    other keywords are passed to to_csv

    Notes
    -----
    Requirements for your platform
      - Linux: xclip, or xsel (with PyQt4 modules)
      - Windows:
      - OS X:
    r   zutf-8Nr   r	   r
   z&clipboard only supports utf-8 encodingr   )clipboard_setTr   )r   r   zAto_clipboard in excel mode requires a single character separator.z6to_clipboard with excel=False ignores the sep argumentzdisplay.max_colwidth)r   r   r   
ValueErrorr    r-   r   Zto_csvgetvalue	TypeErrorr&   r'   
isinstancer   r   Z	to_stringstr)	objexcelr   r(   r   r-   bufr)   Zobjstrr   r   r   to_clipboardN   s2    

r6   )r   )TN)__doc__ior   r&   Zpandas.core.dtypes.genericr   Zpandasr   r   r,   r6   r   r   r   r   <module>   s   
D