Há poucos meses atrás foi lançada a versão 5 do IPython. O shell que antes já era super legal, agora ficou mais interessante ainda, com syntax highlighting no código digitado e um esquema de completação inline usando umas listinhas bem convenientes:

Porém, a forma de configuração do prompt mudou. Algumas das dicas apresentadas no post Sintonia Fina no IPython não se aplicam mais. Assim, vou mostrar aqui como fazer para que o seu IPython 5+ fique com aparência semelhante à abaixo:

O que mudou basicamente é que ao invés de simplesmente definir a string que será usada como prompt em um atributo, agora é preciso implementar uma subclasse de Prompts, com alguns métodos para alterar o comportamento do seu prompt:
from IPython.terminal.prompts import Prompts, Token
class MyCustomPrompt(Prompts):
def in_prompt_tokens(self, cli=None):
return [(Token.Prompt, '>>> '), ]
def out_prompt_tokens(self, cli=None):
return [(Token.Prompt, ''), ]
def continuation_prompt_tokens(self, cli=None, width=None):
return [(Token.Prompt, ''), ]
No exemplo acima, customizei os prompts de entrada (de In [1]: para o tradicional >>>), de saída ( de Out[1]: para nada) e de continuação (de ...: para nada).
O legal dessa nova abordagem é que agora temos mais flexibilidade pra customizar os prompts, colocando valores dinâmicos dentro deles se quisermos.
Como configurar seu prompt
A configuração do IPython se dá através de perfis, então vamos começar criando o perfil default:
$ ipython profile create
Isso irá criar um diretório ~/.ipython com a seguinte estrutura:
.ipython
├── extensions
├── nbextensions
└── profile_default
├── ipython_config.py
├── ipython_kernel_config.py
├── log
├── pid
├── security
└── startup
└── README
Agora salve a classe MyCustomPrompt em um arquivo ~/.ipython/my_custom_prompt.py e depois disso edite o arquivo ~/.ipython/profile_default/ipython_config.py para que tenha o seguinte conteúdo:
from my_custom_prompt import MyCustomPrompt c = get_config() c.TerminalInteractiveShell.prompts_class = MyCustomPrompt c.TerminalIPythonApp.display_banner = False c.TerminalInteractiveShell.separate_in = ''
Pronto, agora o seu IPython 5+ deverá se parecer com aquele que mostrei no screenshot lá no começo do post.
Se você estiver usando uma versão anterior do IPython, verifique meu post anterior sobre o mesmo assunto: https://pythonhelp.wordpress.com/2013/12/29/sintonia-fina-do-ipython/
Confira as minhas configurações do IPython em: https://github.com/stummjr/dotfiles/tree/master/ipython
Você precisa fazer login para comentar.