o
    Zh                     @   s   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l	m
Z
 ddlmZ G dd	 d	eZG d
d deZG dd deZdS )z"Terminal input and output prompts.    )TokenN)DisplayHook)fragment_list_widthPygmentsTokens)print_formatted_text)EditingModec                   @   sZ   e Zd Zdd Zdd ZdefddZdd	 Zd
d ZdddddZ	dd Z
dd ZdS )Promptsc                 C   s
   || _ d S N)shell)selfr
    r   O/var/www/html/lang_env/lib/python3.10/site-packages/IPython/terminal/prompts.py__init__   s   
zPrompts.__init__c                 C   sr   t | jjdd tjkr7| jjr7t| jjjjj	}|
dr&|dd  }n|
dr1|dd }d| d	 S d
S )NZediting_modez
InputMode.
      zvi-      [z]  )getattrr
   pt_appr   ZVIZprompt_includes_vi_modestrappZvi_stateZ
input_mode
startswithlower)r   moder   r   r   vi_mode   s   

zPrompts.vi_modereturnc                 C   s"   | j jd ur| j jjjjpdS dS )Nr   )r
   r   Zdefault_bufferZdocumentZcursor_position_rowr   r   r   r   current_line   s   zPrompts.current_linec                 C   sL   t j|  ft j| jjjd|   dft jdft jt| jj	ft jdfgS )N   lineZrel_linezIn []: )
r   Promptr   r
   prompt_line_number_formatformatr   Z	PromptNumr   execution_countr   r   r   r   in_prompt_tokens!   s   
zPrompts.in_prompt_tokensc                 C   s   t |  S r	   )r   r(   r   r   r   r   _width/   s   zPrompts._widthN)linenoc                C   sv   |d u r|   }|d ur|d nd}dt|   | jjj|||   d d }tj|d|t| d   d fgS )Nr    r    r!      z...: )	r)   lenr   r
   r%   r&   r   r   r$   )r   widthr*   r"   prefixr   r   r   continuation_prompt_tokens2   s   z"Prompts.continuation_prompt_tokensc                 C   s    |   }tjd|d  d fgS )N-   z> )r)   r   r$   r   r.   r   r   r   rewrite_prompt_tokensB   s   zPrompts.rewrite_prompt_tokensc                 C   s$   t jdft jt| jjft jdfgS )NzOut[r#   )r   Z	OutPromptZOutPromptNumr   r
   r'   r   r   r   r   out_prompt_tokensH   s   zPrompts.out_prompt_tokensr	   )__name__
__module____qualname__r   r   intr   r(   r)   r0   r4   r5   r   r   r   r   r      s    r   c                   @   s.   e Zd Zdd Zd
ddZdd Zdd	 ZdS )ClassicPromptsc                 C      t jdfgS )Nz>>> r   r$   r   r   r   r   r(   P      zClassicPrompts.in_prompt_tokensNc                 C   r;   )Nz... r<   r3   r   r   r   r0   U   r=   z)ClassicPrompts.continuation_prompt_tokensc                 C      g S r	   r   r   r   r   r   r4   Z      z$ClassicPrompts.rewrite_prompt_tokensc                 C   r>   r	   r   r   r   r   r   r5   ]   r?   z ClassicPrompts.out_prompt_tokensr	   )r6   r7   r8   r(   r0   r4   r5   r   r   r   r   r:   O   s
    
r:   c                       s,   e Zd ZdZdd Zdd	 fddZ  ZS )
RichPromptDisplayHookz3Subclass of base display hook using coloured promptc                 C   s   t j| jj d| _| jrC| jj }d	dd |D }|r(|
ds(d| _| jjr;tt|| jjjjdd d S t j| d S d S )NTr   c                 s   s    | ]\}}|V  qd S r	   r   ).0_sr   r   r   	<genexpr>j   s    z<RichPromptDisplayHook.write_output_prompt.<locals>.<genexpr>
F)styleend)sysstdoutwriter
   Zseparate_outZprompt_end_newlineZdo_full_cacheZpromptsr5   joinendswithr   r   r   r   rF   )r   tokensZ
prompt_txtr   r   r   write_output_promptb   s   
z)RichPromptDisplayHook.write_output_promptNr   c                    sZ   | j d usJ | j jr$| j j D ]\}}||v r#||| d   d S qt || d S r	   )r
   Zmime_renderersitemssuperwrite_format_data)r   Zformat_dictZmd_dictmimehandler	__class__r   r   rQ   v   s   z'RichPromptDisplayHook.write_format_datar	   )r   N)r6   r7   r8   __doc__rN   rQ   __classcell__r   r   rT   r   r@   `   s    r@   )rV   Zpygments.tokenr   rH   ZIPython.core.displayhookr   Zprompt_toolkit.formatted_textr   r   Zprompt_toolkit.shortcutsr   Zprompt_toolkit.enumsr   objectr   r:   r@   r   r   r   r   <module>   s    B