U
    -e	                     @  s   d Z ddlmZ ddlmZmZ ddlmZ ddlm	Z	 dddd	g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)SelectionType	ClipboardClipboardDataDummyClipboardDynamicClipboardc                   @  s*   e Zd ZdZdejfddddddZd	S )
r   z{
    Text on the clipboard.

    :param text: string
    :param type: :class:`~prompt_toolkit.selection.SelectionType`
     strr   None)texttypereturnc                 C  s   || _ || _d S N)r   r   )selfr   r    r   ^/var/www/html/Darija-Ai-Train/env/lib/python3.8/site-packages/prompt_toolkit/clipboard/base.py__init__   s    zClipboardData.__init__N)__name__
__module____qualname____doc__r   Z
CHARACTERSr   r   r   r   r   r      s    c                   @  sT   e Zd ZdZedddddZdddd	d
ZddddZed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.)
    r   r   datar   c                 C  s   dS )ze
        Set data to the clipboard.

        :param data: :class:`~.ClipboardData` instance.
        Nr   r   r   r   r   r   set_data)   s    zClipboard.set_datar   r   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_textr   c                 C  s   dS )z7
        For Emacs mode, rotate the kill ring.
        Nr   r   r   r   r   rotate7   s    zClipboard.rotatec                 C  s   dS )z(
        Return clipboard data.
        Nr   r"   r   r   r   get_data<   s    zClipboard.get_dataN)	r   r   r   r   r   r   r    r#   r$   r   r   r   r   r   "   s   )	metaclassc                   @  sL   e Zd ZdZdddddZdddd	d
ZddddZddddZdS )r	   zB
    Clipboard implementation that doesn't remember anything.
    r   r   r   c                 C  s   d S r   r   r   r   r   r   r   H   s    zDummyClipboard.set_datar   r   c                 C  s   d S r   r   r   r   r   r   r    K   s    zDummyClipboard.set_textr!   c                 C  s   d S r   r   r"   r   r   r   r#   N   s    zDummyClipboard.rotatec                 C  s   t  S r   )r   r"   r   r   r   r$   Q   s    zDummyClipboard.get_dataN)r   r   r   r   r   r    r#   r$   r   r   r   r   r	   C   s
   c                   @  sj   e Zd ZdZdddddZddd	d
ZdddddZdddddZddddZd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.
    zCallable[[], Clipboard | None]r   )get_clipboardr   c                 C  s
   || _ d S r   )r&   )r   r&   r   r   r   r   \   s    zDynamicClipboard.__init__r   r!   c                 C  s   |   pt S r   )r&   r	   r"   r   r   r   
_clipboard_   s    zDynamicClipboard._clipboardr   r   c                 C  s   |   | d S r   )r'   r   r   r   r   r   r   b   s    zDynamicClipboard.set_datar   r   c                 C  s   |   | d S r   )r'   r    r   r   r   r   r    e   s    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
   U   s   N)r   
__future__r   abcr   r   typingr   Zprompt_toolkit.selectionr   __all__r   r   r	   r
   r   r   r   r   <module>   s   !