o
    OTh                     @   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   [/home/air/segue/gemini/backup/venv/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 )Nediting_modez
InputMode.
      zvi-      [z]  )getattrr
   pt_appr   VIprompt_includes_vi_modestrappvi_state
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   default_bufferdocument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   linerel_linezIn []: )
r   Promptr!   r
   prompt_line_number_formatformatr'   	PromptNumr   execution_countr&   r   r   r   in_prompt_tokens!   s   
zPrompts.in_prompt_tokensc                 C   s   t |  S r	   )r   r2   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...: )	r3   lenr!   r
   r.   r/   r'   r   r-   )r   widthr4   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> )r3   r   r-   r   r8   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   	OutPromptOutPromptNumr   r
   r1   r&   r   r   r   out_prompt_tokensH   s   zPrompts.out_prompt_tokensr	   )__name__
__module____qualname__r   r!   intr'   r2   r3   r:   r>   rA   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   r2   P      zClassicPrompts.in_prompt_tokensNc                 C   rG   )Nz... rH   r=   r   r   r   r:   U   rI   z)ClassicPrompts.continuation_prompt_tokensc                 C      g S r	   r   r&   r   r   r   r>   Z      z$ClassicPrompts.rewrite_prompt_tokensc                 C   rJ   r	   r   r&   r   r   r   rA   ]   rK   z ClassicPrompts.out_prompt_tokensr	   )rB   rC   rD   r2   r:   r>   rA   r   r   r   r   rF   O   s
    
rF   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
   separate_outprompt_end_newlinedo_full_cachepromptsrA   joinendswithr   r   r   r   rR   )r   tokens
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
   mime_renderersitemssuperwrite_format_data)r   format_dictmd_dictmimehandler	__class__r   r   rc   v   s   z'RichPromptDisplayHook.write_format_datar	   )r"   N)rB   rC   rD   __doc__r_   rc   __classcell__r   r   rh   r   rL   `   s    rL   )rj   pygments.tokenr   rT   IPython.core.displayhookr   prompt_toolkit.formatted_textr   r   prompt_toolkit.shortcutsr   prompt_toolkit.enumsr   objectr   rF   rL   r   r   r   r   <module>   s    B