Completar tabulación en el intérprete de Python en OS X Terminal

ace varios meses, escribí unentrada en el blo que detalla cómo lograr completar las pestañas en el intérprete interactivo estándar de Python, una característica que alguna vez pensé que solo estaba disponible en IPython. Me ha resultado tremendamente útil dado que a veces tengo que cambiar al intérprete estándar debido a problemas de IPython unicode.

Recientemente he trabajado en OS X. Para mi descontento, el script no parece funcionar para la aplicación Terminal de OS X. Espero que algunos de ustedes con experiencia en OS X puedan ayudarme a solucionarlo para que también funcione en la Terminal.

Estoy reproduciendo el código a continuación

import atexit
import os.path

try:
    import readline
except ImportError:
    pass
else:
    import rlcompleter

    class IrlCompleter(rlcompleter.Completer):
        """
        This class enables a "tab" insertion if there's no text for
        completion.

        The default "tab" is four spaces. You can initialize with '\t' as
        the tab if you wish to use a genuine tab.

        """

        def __init__(self, tab='    '):
            self.tab = tab
            rlcompleter.Completer.__init__(self)


        def complete(self, text, state):
            if text == '':
                readline.insert_text(self.tab)
                return None
            else:
                return rlcompleter.Completer.complete(self,text,state)


    #you could change this line to bind another key instead tab.
    readline.parse_and_bind('tab: complete')
    readline.set_completer(IrlCompleter('\t').complete)


# Restore our command-line history, and save it when Python exits.
history_path = os.path.expanduser('~/.pyhistory')
if os.path.isfile(history_path):
    readline.read_history_file(history_path)
atexit.register(lambda x=history_path: readline.write_history_file(x))

enga en cuenta que lo he editado ligeramente de la versión en mi blog para que elIrlCompleter se inicializa con una pestaña verdadera, que parece ser la salida de la tecla Tab en la Terminal.

Respuestas a la pregunta(7)

Su respuesta a la pregunta