[IPython-dev] Completer in ipython 0.6.12

Frédéric Mantegazza mantegazza at ill.fr
Wed Mar 16 09:56:15 CST 2005


Hello Fernando,

A few months ago, with your help, I made a patch to add my own matcher, but 
it does not work anymore in the 0.6.12 version. Now, it does nothing when I 
hit the TAB key, in any case :o(

Here is the code used:

def proxy_matches(self, text, state):
    """ Get the attribute of a remove Pyro object.
    """
    log = Logger('client')

    # Another option, seems to work great. Catches things like ''.<tab>
    m = re.match(r"(\S+(\.\w+)*)\.(\w*)$", text)

    if not m:
        return []
    expr, attr = m.group(1, 3)
    matches = []
    try:
        object = eval(expr, self.namespace)
        if isinstance(object, Pyro.core.DynamicProxyWithAttrs):
            words = object.getAvailableAttributes()
            matches = []
            n = len(attr)
            if words:
                for word in words:
                    if word[:n] == attr and word != "__builtins__":
                        matches.append("%s.%s" % (expr, word))

    except NameError:
        pass
        
    except Pyro.errors.ConnectionClosedError:
        log.error("Connexion closed")
        object.adapter.rebindURI() # Should be moved to runcode()
        matches = [""]

    return matches

ipshell.IP.Completer.matchers.insert(0, 'proxy_matches')
IPython.iplib.MagicCompleter.proxy_matches = proxy_matches

I saw that you changed lot of things in the iplib.py file, and I don't know 
how to have my patch working. Could your explain me how things works, now ?

Thank's for your help,

-- 
   Frédéric




More information about the IPython-dev mailing list