def h5py_attr_completer(context, command): """Compute possible attr matches for nested dict-like objects""" base, attr = re_attr_match.split(command)[1:3] base = base.strip() try: obj = _retrieve_obj(base, context) except: return [] attrs = dir(obj) try: attrs = generics.complete_object(obj, attrs) except TryNext: pass omit__names = None try: # support >=ipython-0.12 omit__names = ipget().Completer.omit__names except AttributeError: pass if omit__names is None: try: # support ipython-0.11 omit__names = ipget().readline_omit__names except AttributeError: pass if omit__names is None: try: # support <ipython-0.11 omit__names = ipget().options.readline_omit__names except AttributeError: omit__names = 0 if omit__names == 1: attrs = [a for a in attrs if not a.startswith('__')] elif omit__names == 2: attrs = [a for a in attrs if not a.startswith('_')] readline.set_completer_delims(' =') return ["%s.%s" % (base, a) for a in attrs if a[:len(attr)] == attr]
def load_ipython_extension(ip=None): if ip is None: ip = ipget() ip.set_hook('complete_command', h5py_completer, re_key=r"(?:.*\=)?(.+?)\[")