Substituir a função de saída do ipython - ou adicionar ganchos a ela

No meu projetogerir, Estou incorporando o iPython com:

from IPython import start_ipython
from traitlets.config import Config
c = Config()
c.TerminalInteractiveShell.banner2 = "Welcome to my shell"
c.InteractiveShellApp.extensions = ['autoreload']
c.InteractiveShellApp.exec_lines = ['%autoreload 2']
start_ipython(argv=[], user_ns={}, config=c)

Funciona bem e abre o console do iPython, mas para deixar o ipython, basta digitarexit ouexit() ou pressionectrl+D.

O que eu quero fazer é adicionar umexit hook ou substitua issoexit comando com outra coisa.

Digamos que eu tenho uma função.

def teardown_my_shell():
    # things I want to happen when iPython exits

Como registro essa função a ser executada quando euexit ou mesmo como fazerexit executar essa função?

NOTA: Tentei passaruser_ns={'exit': teardown_my_shell} e não funciona.

Obrigado.