Hi Fernando,<br>
<br>Thank you for the advice. I&#39;ve been looking at this most of the day, and I think I&#39;m stuck.
I have an object I&#39;m trying to navigate:<br>
<br>
dict_object[&#39;level_1&#39;][&#39;level_2&#39;][&#39;leve&lt;tab&gt;<br><br>What I think needs to happen is to register a completer that matches r&#39;.*?\[&#39;, split the string at first &#39;[&#39;, ofind the base (dict_object), check if its an dict object. Then if the last &#39;[&#39; occurs later than the last &#39;]&#39;, I know I am looking for a list of keys, so I split the original string the last &#39;]&#39; and run eval(extendedbase, self.shell.user_ns) to yield the object up to level_2, ask it for its list of keys, and return those keys. Its not very elegant, and I&#39;ve only implemented up to dict_object[&#39;lev&lt;tab&gt;. Now imagine the following situation:<br>
<br>dict_object[&#39;level_1&#39;][&#39;level_2&#39;][&#39;level_3&#39;].&lt;tab&gt;<br><br>It&#39;s not clear to me how I would get the object at level_3 and then hook into ipython&#39;s usual completion chain to filter attributes with leading underscores, or the traits completer, for example. Is this possible?<br>
<br><br><br><div class="gmail_quote">On Sat, Jan 31, 2009 at 12:34 PM, Fernando Perez <span dir="ltr">&lt;<a href="http://fperez.net">fperez.net</a>@<a href="http://gmail.com">gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Hey Darren,<br>
<div class="Ih2E3d"><br>
On Sat, Jan 31, 2009 at 6:37 AM, Darren Dale &lt;<a href="mailto:dsdale24@gmail.com">dsdale24@gmail.com</a>&gt; wrote:<br>
&gt; Hi Fernando,<br>
&gt;<br>
&gt; I&#39;m sorry to bother you. I posted not too long ago hoping to find some<br>
&gt; advice on how to implement a custom completer for __getitem__ access of<br>
&gt; dict-like objects in the h5py project, but I didnt get any responses. I<br>
&gt; looked through the changelogs and the commit logs, trying to identify when<br>
&gt; this type of completion was supported in IPython, but came up empty.<br>
<br>
</div>No worries, it&#39;s no bother at all. &nbsp;It&#39;s my fault that I&#39;ve been<br>
mostly MIA recently on pretty much all public mailing lists, &nbsp;I&#39;ve<br>
just been swamped with real life/work things. &nbsp;But I&#39;m trying to<br>
recover a bit now :) &nbsp;I&#39;ve cc&#39;d the user list so this reply is<br>
actually archived.<br>
<div class="Ih2E3d"><br>
&gt; If (and only if) you have time, would you be able to provide some advice or<br>
&gt; direct me to some code in an old version of IPython so I could see how it<br>
&gt; was originally done?<br>
<br>
</div>I did a bit of archaeological digging, and found that 0.4 has what you want:<br>
<br>
maqroll[scripts]&gt; python2.4 ipython<br>
Python 2.4.5 (#2, Aug &nbsp;1 2008, 02:20:59)<br>
Type &quot;copyright&quot;, &quot;credits&quot; or &quot;license&quot; for more information.<br>
<br>
IPython 0.4.0 -- An enhanced Interactive Python.<br>
? &nbsp; &nbsp; &nbsp; -&gt; Introduction to IPython&#39;s features.<br>
@magic &nbsp;-&gt; Information about IPython&#39;s &#39;magic&#39; @ functions.<br>
help &nbsp; &nbsp;-&gt; Python&#39;s own help system.<br>
object? -&gt; Details about &#39;object&#39;. ?object also works, ?? prints more.<br>
<br>
In [1]: a={&#39;key&#39;:&#39;value&#39;}<br>
<br>
In [2]: a[&#39;key&#39;]<br>
Out[2]: &#39;value&#39;<br>
<br>
In [3]: a[&#39;key&#39;].r&lt;&lt;TAB HERE&gt;&gt;<br>
a[&#39;key&#39;].replace &nbsp;a[&#39;key&#39;].rindex &nbsp; a[&#39;key&#39;].rsplit<br>
a[&#39;key&#39;].rfind &nbsp; &nbsp;a[&#39;key&#39;].rjust &nbsp; &nbsp;a[&#39;key&#39;].rstrip<br>
<br>
###<br>
Note that you&#39;ll need to run it as I did above, with python2.4,<br>
because at the time we didn&#39;t declare the encoding of the files and<br>
python2.5 considers that an error (my name has an accent in unicode).<br>
You can find ipython 0.4 here, along with a bunch of other old<br>
versions in that directory:<br>
<br>
<a href="http://ipython.scipy.org/dist/old/ipython-0.4.0.tgz" target="_blank">http://ipython.scipy.org/dist/old/ipython-0.4.0.tgz</a><br>
<br>
I&#39;d start by looking at FlexCompleter.py in there, though there may be<br>
a bit more elsewhere. &nbsp;I hope this helps, do let me know if you need<br>
anything else.<br>
<br>
Cheers,<br>
<font color="#888888"><br>
f<br>
</font></blockquote></div><br>