<br><br><div class="gmail_quote">On Sat, Jun 2, 2012 at 11:45 AM, Arnaud Gardelein <span dir="ltr">&lt;<a href="mailto:arnaud@oscopy.org" target="_blank">arnaud@oscopy.org</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

Hi all,<br>
<br>
The new ipython configuration system allows to customize for particular<br>
application three classes, InteractiveShell, PrefilterManager and<br>
AliasManager all subclasses of Configurable as described in the<br>
documentation. Each option from those classes are settable from argument<br>
of ipython command.<br>
Assuming a new configurable object described in a ipython &#39;foo&#39; profile:<br>
<br>
from IPython.config.configurable import Configurable<br>
from IPython.utils.traitlets import Int, Float, Unicode, Bool<br>
class Foo(Configurable):<br>
    name = Unicode(u&#39;Foo&#39;)<br>
    bar = Bool(False, config=True)<br>
<br>
How to make the boolean &#39;bar&#39; also an argument settable from ipython<br>
command with a &#39;--bar&#39; or &#39;--no-bar&#39; when invoking ipython<br>
--profile=foo?<br></blockquote><div><br></div><div>You can&#39;t do precisely this, because the command-line args are fully parsed by the time the profile is known (they are used to determine the profile!).</div><div><br>

</div><div>What is your *actual* goal here, because I doubt that it is to configure a transient object in your config file that will be deleted immediately and not importable, which would be the case if defined in a config file.</div>

<div><br></div><div>Note that there is a difference between &quot;all configurables&quot; being accessible and the short &#39;--foo&#39; flags.  Those are manually defined, and only for a short list of common options.  But *all* configurables are available in the form:</div>

<div><br></div><div>    --Class.trait=foo</div><div><br></div><div>If your goal is to make a particular class of yours configurable, you can set its options in this way, and then the only thing you need to do is pass the IPython instance&#39;s config object to your constructor:</div>

<div><br></div><div><br></div><div><font face="courier new, monospace">ipython --Foo.bar=True</font></div><div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">In [1]: from IPython.config.configurable import Configurable</font></div>

<div><div><font face="courier new, monospace">In [2]: from IPython.utils.traitlets import Bool</font></div></div><div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">In [3]: class Foo(Configurable):</font></div>

<div><font face="courier new, monospace">   ...:     bar = Bool(False, config=True)</font></div><div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">In [4]: foo = Foo(config=get_ipython().config)</font></div>

<div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">In [5]: foo.bar</font></div><div><font face="courier new, monospace">Out[5]: True</font></div><div><br></div><div>-MinRK</div>

<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Thanks,<br>
<br>
Arnaud.<br>
<br>
_______________________________________________<br>
IPython-dev mailing list<br>
<a href="mailto:IPython-dev@scipy.org">IPython-dev@scipy.org</a><br>
<a href="http://mail.scipy.org/mailman/listinfo/ipython-dev" target="_blank">http://mail.scipy.org/mailman/listinfo/ipython-dev</a><br>
</blockquote></div><br>