U
    ?vf5                     @  s   d Z ddlmZ ddlmZ ddlmZ ddlZddlm	Z	 ddl
mZ ddlmZ dd	lmZ dd
lmZmZ erddlmZ de	jfdddddZdddddddZdS )z io on the clipboard     )annotations)StringIO)TYPE_CHECKINGN)lib)find_stack_level)check_dtype_backend)ABCDataFrame)
get_optionoption_context)DtypeBackend\s+strzDtypeBackend | lib.NoDefaultsepdtype_backendc           
      K  s  | dd}|dk	r0| dddkr0tdt| dd	lm} dd
lm} | }z|	|
dpltd}W n tk
r   Y nX |dd ddd dd }dd |D }t|dkr"t|dkr"|  dkr"d} t|d t|d d }	|	dkr"|dtt|	 | dkr@|
ddkr@d} t| dkrh|
ddkrhd|d< n.t| dkr|
ddkrtjdt d |t|f| |d|S )a#  
    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.

    dtype_backend : {"numpy_nullable", "pyarrow"}, defaults to NumPy backed DataFrames
        Which dtype_backend to use, e.g. whether a DataFrame should have NumPy
        arrays, nullable dtypes are used for all dtypes that have a nullable
        implementation when "numpy_nullable" is set, pyarrow is used for all
        dtypes if "pyarrow" is set.

        The dtype_backends are still experimential.

        .. versionadded:: 2.0

    **kwargs
        See read_csv for the full argument list.

    Returns
    -------
    DataFrame
        A parsed DataFrame object.
    encodingutf-8N- utf8z3reading from clipboard only supports utf-8 encodingr   )clipboard_get)read_csvzdisplay.encodingi'  

   c                 S  s   h | ]}| d dqS ) 	)lstripcount).0x r!   8/tmp/pip-unpacked-wheel-vdrwu74i/pandas/io/clipboards.py	<setcomp>W   s     z!read_clipboard.<locals>.<setcomp>   r   z 	Z	index_colZdelim_whitespacer   ZenginepythonczIread_clipboard with regex separator does not work properly with c engine.
stacklevelr   )poplowerreplaceNotImplementedErrorr   pandas.io.clipboardr   Zpandas.io.parsersr   decodegetr	   AttributeErrorsplitlenr   
setdefaultlistrangewarningswarnr   r   )
r   r   kwargsr   r   r   textlinescountsZindex_lengthr!   r!   r"   read_clipboard   s8     "*

r<   Tzbool | Nonez
str | NoneNone)excelr   returnc           	   	   K  s  | dd}|dk	r0| dddkr0tddd	lm} |dkrHd
}|rz@|dkrZd}t }| j|f|dd| | }|| W dS  t	k
r   t
jdt d Y qX n|dk	rt
jdt d t| trtdd | jf |}W 5 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 : bool, 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   r   Nr   r   r   z&clipboard only supports utf-8 encodingr   )clipboard_setTr   )r   r   zAto_clipboard in excel mode requires a single character separator.r'   z7to_clipboard with excel=False ignores the sep argument.zdisplay.max_colwidth)r)   r*   r+   
ValueErrorr-   r@   r   Zto_csvgetvalue	TypeErrorr6   r7   r   
isinstancer   r
   Z	to_stringr   )	objr>   r   r8   r   r@   bufr9   Zobjstrr!   r!   r"   to_clipboardq   s<    
rG   )TN)__doc__
__future__r   ior   typingr   r6   Zpandas._libsr   Zpandas.util._exceptionsr   Zpandas.util._validatorsr   Zpandas.core.dtypes.genericr   Zpandasr	   r
   Zpandas._typingr   Z
no_defaultr<   rG   r!   r!   r!   r"   <module>   s"   [   