Agregar color al nuevo indicador de estilo de ipython (v5)

Actualiza a la nueva versión de ipython5 hoy. Se puso en marcha el prompt interactivo y se recibió:

/usr/local/lib/python3.5/site-packages/IPython/core/interactiveshell.py:440: UserWarning: As of IPython 5.0 `PromptManager` config will have no effect and has been replaced by TerminalInteractiveShell.prompts_class warn('As of IPython 5.0 `PromptManager` config will have no effect' 

Retiré mi antigua configuración de configuración para personalizar y colorear el indicador y empecé a buscar la nueva forma de personalizarlo y lo encontré, muy bueno. Usé el nuevo estilo de clase del código de ejemplo :

 class MyPrompt(Prompts): def in_prompt_tokens(self, cli=None): return [(Token, os.getcwd()), (Token.Prompt, ' >>>')] 

Ponga esto en una secuencia de comandos de inicio y funciona bien, excepto que, de forma predeterminada, no colorea la línea del token, el token.Prompt se vuelve verde claro.

Intenté usar los colores del antiguo método de configuración, (r ‘{color.Green}’) pero eso no funciona aquí. Cualquier puntero en la dirección correcta sería genial.

¡Gracias!

 from IPython.terminal.prompts import Prompts, Token import os class MyPrompt(Prompts): def in_prompt_tokens(self, cli=None): # default return [ (Token.Prompt, 'In ['), (Token.PromptNum, str(self.shell.execution_count)), (Token.Prompt, ']: '), ] def in_prompt_tokens(self, cli=None): # sample return [(Token, os.getcwd()), (Token.Prompt, ' >>>')] def in_prompt_tokens(self, cli=None): # custom path = os.path.basename(os.getcwd()) return [ (Token.Prompt, '<'), (Token.PromptNum, '~/'+path), (Token.Prompt, '>'), (Token.Prompt, '['), (Token.PromptNum, str(self.shell.execution_count)), (Token.Prompt, ']: '), ] def in_prompt_tokens(self, cli=None): # custom path = os.path.basename(os.getcwd()) return [ (Token.PromptNum, str(self.shell.execution_count)), (Token.Prompt, ':'), (Token.PromptNum, '~/'+path), (Token.Prompt, '$ '), ] """ use: import myprompt as MP ip=get_ipython() ip.prompts=MP.MyPrompt(ip) """ 

Experimenté con varias indicaciones con este script. Incluye el método predeterminado in_prompt_tokens , la personalización de ejemplo y un par de alternativas. El último imita mi mensaje de bash

 73:~/mypy$ 

En parece que la tupla (Token..., str) establece el color de la cadena de acuerdo con el tipo de token_type . Token , Token.Prompt , Token.PromptNum son tipos posibles. Consulte Token. para obtener más información (como OutPrompt(Num) ).

 IPython/terminal/prompts.py 

Probablemente no use ninguno de estos porque me gustan los pares de entrada In /Out coincidentes predeterminados. Además, puedo usar --term-title para mostrar el directorio en el título de la pestaña.

Ejemplo simple que muestra cómo colorear el indicador en rojo:

 from IPython.terminal.prompts import Token ipy_config = get_config() ipy_config.TerminalInteractiveShell.highlighting_style_overrides = { Token.Prompt: '#ff0000', } 

Ejemplo más avanzado que cambia el color del indicador de acuerdo con la variable de entorno (útil si juegas mucho con los sistemas en vivo / en escena):

 # Example showing how to change color of prompt and prompt string in specific environments. # put into ~/.ipython/profile_${YOURPROFILE}/ipython_config.py and start ipython with: # PROFILE_LIVE ipython --profile ${YOURPROFILE} import os from IPython.terminal.prompts import Prompts, Token ipy_config = get_config() class MyPrompt(Prompts): environment = None def in_prompt_tokens(self, cli=None): return [ (Token.Prompt, '{} ['.format(MyPrompt.environment)), (Token.PromptNum, str(self.shell.execution_count)), (Token.Prompt, ']: ') ] if 'PROFILE_LIVE' in os.environ: ipy_config.TerminalInteractiveShell.highlighting_style_overrides = { Token.Prompt: '#ff0000', } MyPrompt.environment = 'LIVE' ipy_config.TerminalInteractiveShell.prompts_class = MyPrompt