o
    g                     @  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r@ddlmZ de	jfdddZ	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+sepstrdtype_backendDtypeBackend | lib.NoDefaultc           
      K  s  | dd}|dur| dddkrtdt| dd	lm} dd
lm} | }z|	|
dp6td}W n	 tyB   Y nw |dd ddd dd }dd |D }t|dkrt|dkr|  dkrd} t|d t|d d }	|	dkr|dtt|	 | du r|
ddu rd} t| dkr|
ddu rd|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 :func:`~pandas.read_csv`.

    Parses clipboard contents similar to how CSV files are parsed
    using :func:`~pandas.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'}, default 'numpy_nullable'
        Back-end data type applied to the resultant :class:`DataFrame`
        (still experimental). Behaviour is as follows:

        * ``"numpy_nullable"``: returns nullable-dtype-backed :class:`DataFrame`
          (default).
        * ``"pyarrow"``: returns pyarrow-backed nullable :class:`ArrowDtype`
          DataFrame.

        .. versionadded:: 2.0

    **kwargs
        See :func:`~pandas.read_csv` for the full argument list.

    Returns
    -------
    DataFrame
        A parsed :class:`~pandas.DataFrame` object.

    See Also
    --------
    DataFrame.to_clipboard : Copy object to the system clipboard.
    read_csv : Read a comma-separated values (csv) file into DataFrame.
    read_fwf : Read a table of fixed-width formatted lines into DataFrame.

    Examples
    --------
    >>> df = pd.DataFrame([[1, 2, 3], [4, 5, 6]], columns=['A', 'B', 'C'])
    >>> df.to_clipboard()  # doctest: +SKIP
    >>> pd.read_clipboard()  # doctest: +SKIP
         A  B  C
    0    1  2  3
    1    4  5  6
    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!   V/var/www/html/ecg_monitoring/venv/lib/python3.10/site-packages/pandas/io/clipboards.py	<setcomp>j   s    z!read_clipboard.<locals>.<setcomp>   r   z 		index_coldelim_whitespacer   enginepythonczIread_clipboard with regex separator does not work properly with c engine.
stacklevel)r   r   )poplowerreplaceNotImplementedErrorr   pandas.io.clipboardr   pandas.io.parsersr   decodegetr	   AttributeErrorsplitlenr   
setdefaultlistrangewarningswarnr   r   )
r   r   kwargsr   r   r   textlinescountsindex_lengthr!   r!   r"   read_clipboard   s:   3"$
rA   Texcelbool | None
str | NonereturnNonec           	      K  s"  | dd}|dur| dddkrtddd	lm} |du r$d
}|rXz |du r-d}t }| j|f|dd| | }|| W dS  t	yW   t
jdt d Y nw |durdt
jdt d t| trtdd | jdi |}W d   n1 sw   Y  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_colwidthr!   )r,   r-   r.   
ValueErrorr0   rG   r   to_csvgetvalue	TypeErrorr:   r;   r   
isinstancer   r
   	to_stringr   )	objrB   r   r<   r   rG   bufr=   objstrr!   r!   r"   to_clipboard   sB   

rQ   )r   r   r   r   )TN)rB   rC   r   rD   rE   rF   )__doc__
__future__r   ior   typingr   r:   pandas._libsr   pandas.util._exceptionsr   pandas.util._validatorsr   pandas.core.dtypes.genericr   pandasr	   r
   pandas._typingr   
no_defaultrA   rQ   r!   r!   r!   r"   <module>   s"    n