Update to the newly release ipython5 today. Started up the interactive prompt and received:
/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'
Yanked out my old config settings to customize and colorize the prompt and went looking for the new way to customize the prompt and found it, very cool. Used the new class style from the example code:
class MyPrompt(Prompts):
def in_prompt_tokens(self, cli=None):
return [(Token, os.getcwd()),
(Token.Prompt, ' >>>')]
Put this into a startup script and it works great, except it by default doesn't colorize the Token line, the Token.Prompt is made light green.
Attempted to use the old config method colors, (r'{color.Green}') but that doesn't work here. Any pointers in the correct direction would be great.
Thanks!
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)
"""
I experimented with various prompts with this script. It includes the default in_prompt_tokens
method, the example customization and a couple of alternatives. The last imitates my bash
prompt
73:~/mypy$
In looks like the tuple (Token..., str)
sets the color of the string according to the token_type
. Token
, Token.Prompt
, Token.PromptNum
are possible types. Look at Token.<tab>
for more (such as OutPrompt(Num)
).
IPython/terminal/prompts.py
I probably won't use any of these because I like the default matching In /Out
pairs. Besides I can use --term-title
to show the directory in the tab title.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With