We seem to set it in interactiveshell.py, but it shoudl likely handle the case when it does not exists,
and should be wrapped in setters/getters.
In [1]: from IPython.core.completer import IPCompleter
In [2]: c = IPCompleter(get_ipython())
In [3]: c.complete('foo')
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-3-1faa54daaabd> in <module>()
----> 1 c.complete('foo')
/Users/bussonniermatthias/dev/ipython/IPython/core/completer.py in complete(self, text, line_buffer, cursor_pos)
1182 # Start with a clean slate of completions
1183 self.matches[:] = []
-> 1184 custom_res = self.dispatch_custom_completer(text)
1185 if custom_res is not None:
1186 # did custom completers produce something?
/Users/bussonniermatthias/dev/ipython/IPython/core/completer.py in dispatch_custom_completer(self, text)
1094 # for foo etc, try also to find completer for %foo
1095 if not cmd.startswith(self.magic_escape):
-> 1096 try_magic = self.custom_completers.s_matches(
1097 self.magic_escape + cmd)
1098 else:
AttributeError: 'IPCompleter' object has no attribute 'custom_completers'
We seem to set it in
interactiveshell.py, but it shoudl likely handle the case when it does not exists,and should be wrapped in setters/getters.