Some of the APIs have changed a little bit, but here is an overview of how you want to<br>accomplish this:<br><br>In your package, create a module for an ipython extension:<br><br>mypackage<br>  __init__.py<br>  # all your other modules and packages and then...<br>
  myextension.py<br><br>In that file, create a load_in_ipython function that takes a single argument:<br><br>def load_in_ipython(ip)<br>  # ip is the same thing as get_ipython()<br>  # do whatever you need to with it<br>  # This is where you will do the types of things Robert was referring to<br>
<br>Then to activate your extension, just put it in your new-style config file:<br><br># .ipythondir/ipython_config.py<br>c = get_config()<br>c.Global.extensions = [&#39;mypackage.myextension&#39;]<br><br>Upon starting up, IPython will import your extension and call the load_in_ipython passing<br>
itself as the argument.<br><br>Here is our docs on the new config system:<br><br><a href="http://bazaar.launchpad.net/~ipython-dev/ipython/trunk/annotate/head%3A/docs/source/config/overview.txt">http://bazaar.launchpad.net/~ipython-dev/ipython/trunk/annotate/head%3A/docs/source/config/overview.txt</a><br>
<a href="http://bazaar.launchpad.net/~ipython-dev/ipython/trunk/annotate/head%3A/docs/source/config/ipython.txt">http://bazaar.launchpad.net/~ipython-dev/ipython/trunk/annotate/head%3A/docs/source/config/ipython.txt</a><br>
<br>(No HTML up yet, sorry)<br><br>Cheers,<br><br>Brian<br><br><div class="gmail_quote">On Wed, Sep 30, 2009 at 10:43 AM, Darren Dale <span dir="ltr">&lt;<a href="mailto:dsdale24@gmail.com">dsdale24@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;">My use case is to check in a package&#39;s __init__.py to see if it is<br>
being imported within an ipython session, and if so to load a custom<br>
completer. I don&#39;t think get_ipython will work:<br>
<br>
import IPython as ip<br>
<br>
ip.InteractiveShell.get_ipython()<br>
------------------------------------------------------------<br>
Traceback (most recent call last):<br>
  File &quot;&lt;ipython console&gt;&quot;, line 1, in &lt;module&gt;<br>
TypeError: unbound method get_ipython() must be called with<br>
InteractiveShell instance as first argument (got nothing instead)<br>
<br>
Am I using it incorrectly?<br>
<div><div></div><div class="h5"><br>
<br>
On Wed, Sep 30, 2009 at 1:21 PM, Brian Granger &lt;<a href="http://ellisonbg.net" target="_blank">ellisonbg.net</a>@<a href="http://gmail.com" target="_blank">gmail.com</a>&gt; wrote:<br>
&gt; This function is essentially deprecated.  This is a bug though that<br>
&gt; you are getting an exception.  But, in the mean time please call the<br>
&gt; following function:<br>
&gt;<br>
&gt; In [1]: ip = get_ipython()<br>
&gt;<br>
&gt; This function is always available inside IPython and returns basically the<br>
&gt; same<br>
&gt; thing as get used to.<br>
&gt;<br>
&gt; For the curious, the problem with the old ipapi.get is that it assumed that<br>
&gt; there<br>
&gt; was always only ONE ipython and it returned that one.  The new get_ipython<br>
&gt; function is smart: it doesn&#39;t assume there is only 1 ipython, and it always<br>
&gt; returns<br>
&gt; the right one.<br>
&gt;<br>
&gt; Cheers,<br>
&gt;<br>
&gt; Brian<br>
&gt;<br>
&gt; On Wed, Sep 30, 2009 at 9:35 AM, Darren Dale &lt;<a href="mailto:dsdale24@gmail.com">dsdale24@gmail.com</a>&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt; I think ip.core.ipapi.get() is behaving differently in the trunk than<br>
&gt;&gt; it did before the refactor. Here is the new implementation:<br>
&gt;&gt;<br>
&gt;&gt; def get():<br>
&gt;&gt;    &quot;&quot;&quot;Get the most recently created InteractiveShell instance.&quot;&quot;&quot;<br>
&gt;&gt;    from IPython.core.iplib import InteractiveShell<br>
&gt;&gt;    insts = InteractiveShell.get_instances()<br>
&gt;&gt;    most_recent = insts[0]<br>
&gt;&gt;    for inst in insts[1:]:<br>
&gt;&gt;        if inst.created &gt; most_recent.created:<br>
&gt;&gt;            most_recent = inst<br>
&gt;&gt;    return most_recent<br>
&gt;&gt;<br>
&gt;&gt; If I call get from the python prompt, instead of Ipython, I used to<br>
&gt;&gt; get None, but now I get an error because insts is an empty list so<br>
&gt;&gt; insts[0] raises an IndexError. Perhaps:<br>
&gt;&gt;<br>
&gt;&gt; def get():<br>
&gt;&gt;    &quot;&quot;&quot;Get the most recently created InteractiveShell instance.&quot;&quot;&quot;<br>
&gt;&gt;    from IPython.core.iplib import InteractiveShell<br>
&gt;&gt;    insts = InteractiveShell.get_instances()<br>
&gt;&gt;    if not insts:<br>
&gt;&gt;        return None<br>
&gt;&gt;    most_recent = insts[0]<br>
&gt;&gt;    for inst in insts[1:]:<br>
&gt;&gt;        if inst.created &gt; most_recent.created:<br>
&gt;&gt;            most_recent = inst<br>
&gt;&gt;    return most_recent<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; Darren<br>
</div></div></blockquote></div><br>