o
    i	                     @  s   d Z ddlmZ ddlmZmZ ddlmZmZ ddl	m
Z
 g dZG dd dZG d	d
 d
edZG dd deZG dd deZdS )z'
Clipboard for command line interface.
    )annotations)ABCMetaabstractmethod)CallableOptional)SelectionType)	ClipboardClipboardDataDummyClipboardDynamicClipboardc                   @  s"   e Zd ZdZdejfdd	d
ZdS )r	   z{
    Text on the clipboard.

    :param text: string
    :param type: :class:`~prompt_toolkit.selection.SelectionType`
     textstrtyper   returnNonec                 C  s   || _ || _d S N)r   r   )selfr   r    r   X/var/www/edux/Edux_v2/venv/lib/python3.10/site-packages/prompt_toolkit/clipboard/base.py__init__   s   
zClipboardData.__init__N)r   r   r   r   r   r   )__name__
__module____qualname____doc__r   
CHARACTERSr   r   r   r   r   r	      s    r	   c                   @  s@   e Zd ZdZedddZdd
dZdddZedddZdS )r   z
    Abstract baseclass for clipboards.
    (An implementation can be in memory, it can share the X11 or Windows
    keyboard, or can be persistent.)
    datar	   r   r   c                 C     dS )ze
        Set data to the clipboard.

        :param data: :class:`~.ClipboardData` instance.
        Nr   r   r   r   r   r   set_data)       zClipboard.set_datar   r   c                 C  s   |  t| dS )z?
        Shortcut for setting plain text on clipboard.
        N)r   r	   r   r   r   r   r   set_text1   s   zClipboard.set_textc                 C  r   )z7
        For Emacs mode, rotate the kill ring.
        Nr   r   r   r   r   rotate7   r    zClipboard.rotatec                 C  r   )z(
        Return clipboard data.
        Nr   r#   r   r   r   get_data<   r    zClipboard.get_dataNr   r	   r   r   r   r   r   r   r   r   r   r	   )	r   r   r   r   r   r   r"   r$   r%   r   r   r   r   r   "   s    

r   )	metaclassc                   @  s8   e Zd ZdZdddZdd
dZdddZdddZdS )r
   zB
    Clipboard implementation that doesn't remember anything.
    r   r	   r   r   c                 C     d S r   r   r   r   r   r   r   H      zDummyClipboard.set_datar   r   c                 C  r+   r   r   r!   r   r   r   r"   K   r,   zDummyClipboard.set_textc                 C  r+   r   r   r#   r   r   r   r$   N   r,   zDummyClipboard.rotatec                 C  s   t  S r   )r	   r#   r   r   r   r%   Q   s   zDummyClipboard.get_dataNr&   r'   r(   r)   )r   r   r   r   r   r"   r$   r%   r   r   r   r   r
   C   s    


r
   c                   @  sL   e Zd ZdZdddZdd	d
ZdddZdddZdddZdddZ	dS )r   z
    Clipboard class that can dynamically returns any Clipboard.

    :param get_clipboard: Callable that returns a :class:`.Clipboard` instance.
    get_clipboardCallable[[], Clipboard | None]r   r   c                 C  s
   || _ d S r   )r-   )r   r-   r   r   r   r   \   s   
zDynamicClipboard.__init__r   c                 C  s   |   pt S r   )r-   r
   r#   r   r   r   
_clipboard_   s   zDynamicClipboard._clipboardr   r	   c                 C     |   | d S r   )r/   r   r   r   r   r   r   b      zDynamicClipboard.set_datar   r   c                 C  r0   r   )r/   r"   r!   r   r   r   r"   e   r1   zDynamicClipboard.set_textc                 C  s   |     d S r   )r/   r$   r#   r   r   r   r$   h   s   zDynamicClipboard.rotatec                 C  s   |    S r   )r/   r%   r#   r   r   r   r%   k   s   zDynamicClipboard.get_dataN)r-   r.   r   r   )r   r   r&   r'   r(   r)   )
r   r   r   r   r   r/   r   r"   r$   r%   r   r   r   r   r   U   s    




r   N)r   
__future__r   abcr   r   typingr   r   prompt_toolkit.selectionr   __all__r	   r   r
   r   r   r   r   r   <module>   s    !