<br><br><div class="gmail_quote">On Tue, Feb 5, 2013 at 2:36 AM, Wojciech Daniło <span dir="ltr">&lt;<a href="mailto:wojtek.danilo.ml@gmail.com" target="_blank">wojtek.danilo.ml@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

Thank you! All the informations provided by you are very useful for me.<br>
<br>
Would you please tell me one more thing? Is there any implemented<br>
mechanism for handling such situation, that each user will have custom<br>
&quot;variable namespace&quot; with several variables shared.<br>
I want simply  keep each users locals variables separate, so If A user<br>
will type &quot;a=5&quot; and B user will type &quot;a=6&quot; these variables will not<br>
overlap. But if user A will type &quot;batch.x=5&quot;, then user B is able to<br>
access this varbiale, since &quot;batch&quot; variable is shared between them. </blockquote><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
I know this is very special case and probably there is nothing<br>
implemented which is able to handle it, but maybe you&#39;ll be able to<br>
give me last portion of hints how to start with it.<br>
<br></blockquote><div><br></div><div><div><br class="Apple-interchange-newline">No, this is not something IPython provides.  If you were to do this, you would need to subclass the Kernel,</div><div>and override execute_request to change the shell.user_ns based on the client that submits each request.</div>

</div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
2013/2/5, MinRK &lt;<a href="mailto:benjaminrk@gmail.com">benjaminrk@gmail.com</a>&gt;:<br>
<div class="HOEnZb"><div class="h5">&gt; On Mon, Feb 4, 2013 at 9:44 PM, Wojciech Daniło<br>
&gt; &lt;<a href="mailto:wojtek.danilo.ml@gmail.com">wojtek.danilo.ml@gmail.com</a>&gt;wrote:<br>
&gt;<br>
&gt;&gt; Benjamin thank you very much for yours answer! I&#39;m very happy that all<br>
&gt;&gt; the<br>
&gt;&gt; things are implemented - I&#39;m starting to test these things out :)<br>
&gt;&gt;<br>
&gt;&gt; If I could I owuld ask you additional 2, a little more precious<br>
&gt;&gt; questions:<br>
&gt;&gt; 1) Lets concider we have kernel K and clients A and B. If client A<br>
&gt;&gt; executes something on K, I would like K to send notification about it to<br>
&gt;&gt; B<br>
&gt;&gt; (broadcast to clients) - I think youre talking about something like that<br>
&gt;&gt; (or am I wrong?).<br>
&gt;&gt;<br>
&gt;<br>
&gt; Yes, this is the `pyin` message. It is sent to all clients on the iopub<br>
&gt; channel when an execute_request begins (prior to evaluating that request).<br>
&gt;<br>
&gt;<br>
&gt;&gt; 2) Additional when A or B executes a command on K it will run some<br>
&gt;&gt; functions from my batch python module. Is it possible that these<br>
&gt;&gt; functions<br>
&gt;&gt; will broadcast some customized messages to client with the functionality<br>
&gt;&gt; provided by Kernel?<br>
&gt;&gt;<br>
&gt;<br>
&gt; Yes, if you modify the kernel.  You might be able to get away with just<br>
&gt; registering a `post_execute_hook` in IPython.<br>
&gt;<br>
&gt;<br>
&gt;&gt; So basically is it possible to send to Kernel and from Kernel to clients<br>
&gt;&gt; customized messages with custom fields etc (extend the handling<br>
&gt;&gt; mechanizm)<br>
&gt;&gt; or should I implement this next to the IPython communication mechanism (I<br>
&gt;&gt; do not want to implement that next to it, because that is a little bit<br>
&gt;&gt; ugly<br>
&gt;&gt; ;) )<br>
&gt;&gt;<br>
&gt;<br>
&gt; I would recommend trying to use the existing functionality as best you can.<br>
&gt;  In general, you would use:<br>
&gt;<br>
&gt; publisher = get_ipython().display_pub<br>
&gt;<br>
&gt; and<br>
&gt;<br>
&gt; publisher.publish(&quot;myapp&quot;, display_data)<br>
&gt;<br>
&gt; That should let you publish fairly arbitrary data to the clients.<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;&gt;<br>
&gt;&gt; Thank you once again!<br>
&gt;&gt;<br>
&gt;&gt; 2013/2/5 MinRK &lt;<a href="mailto:benjaminrk@gmail.com">benjaminrk@gmail.com</a>&gt;<br>
&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; On Mon, Feb 4, 2013 at 9:08 PM, Wojciech Daniło &lt;<br>
&gt;&gt;&gt; <a href="mailto:wojtek.danilo.ml@gmail.com">wojtek.danilo.ml@gmail.com</a>&gt; wrote:<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; Hi!<br>
&gt;&gt;&gt;&gt; I&#39;m new to IPython, but this project seems like a very good<br>
&gt;&gt;&gt;&gt; &quot;boilerplate&quot; for my custom project. I&#39;ve read a lot of docs and looked<br>
&gt;&gt;&gt;&gt; at<br>
&gt;&gt;&gt;&gt; the source code and I want to ask you if something I want to do with<br>
&gt;&gt;&gt;&gt; IPython is possible.<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; I want to run a IPython Kernel on a machine. It will execute my batch<br>
&gt;&gt;&gt;&gt; program. I want users to be able to connect to this kernel (locally or<br>
&gt;&gt;&gt;&gt; over<br>
&gt;&gt;&gt;&gt; network) and execute Python code - everything so far is provided by<br>
&gt;&gt;&gt;&gt; IPython<br>
&gt;&gt;&gt;&gt; i think.<br>
&gt;&gt;&gt;&gt; The problem is, I want to know WHICH user executed the code, because I<br>
&gt;&gt;&gt;&gt; want to make something like collaboration model - If one user executes<br>
&gt;&gt;&gt;&gt; a<br>
&gt;&gt;&gt;&gt; code - lets say &quot;draw line&quot;, I want this line t show in the second user<br>
&gt;&gt;&gt;&gt; GUI<br>
&gt;&gt;&gt;&gt; with a tooltip, which user executed it.<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; Is it somehow possible? Could you give me any hints how to do it?<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Messages have a &#39;session&#39; key, which is unique, and a username in the<br>
&gt;&gt;&gt; header (generally the unix username).  These are attributes of the<br>
&gt;&gt;&gt; Session<br>
&gt;&gt;&gt; object, so at the very least every frontend (aka client aka user<br>
&gt;&gt;&gt; session)<br>
&gt;&gt;&gt; has a unique ID.  The header of each request is attached as the<br>
&gt;&gt;&gt; &#39;parent_header&#39; of replies and side effects of the request.  Among these<br>
&gt;&gt;&gt; side effects (of execute_requests) are:<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; pyin: the Python code just run<br>
&gt;&gt;&gt; display_data: display side effects<br>
&gt;&gt;&gt; stream: stdout/stderr<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; And these come to all frontends on the iopub channel.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; So let&#39;s say you have two frontends attached to the Kernel.  When a<br>
&gt;&gt;&gt; &#39;pyin&#39; message comes in on the iopub channel, and you check it, you can<br>
&gt;&gt;&gt; trigger an event based on the content and parent_header, such as &quot;client<br>
&gt;&gt;&gt; [FOO] just ran this code: etc.&quot;.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; If you want to draw the display *results* of the execution, they will be<br>
&gt;&gt;&gt; `display_data` messages on the same channel, and you can associate them<br>
&gt;&gt;&gt; with their source in the same way.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;  That should be all you need, I think.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; -MinRK<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; _______________________________________________<br>
&gt;&gt;&gt; IPython-dev mailing list<br>
&gt;&gt;&gt; <a href="mailto:IPython-dev@scipy.org">IPython-dev@scipy.org</a><br>
&gt;&gt;&gt; <a href="http://mail.scipy.org/mailman/listinfo/ipython-dev" target="_blank">http://mail.scipy.org/mailman/listinfo/ipython-dev</a><br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; _______________________________________________<br>
&gt;&gt; IPython-dev mailing list<br>
&gt;&gt; <a href="mailto:IPython-dev@scipy.org">IPython-dev@scipy.org</a><br>
&gt;&gt; <a href="http://mail.scipy.org/mailman/listinfo/ipython-dev" target="_blank">http://mail.scipy.org/mailman/listinfo/ipython-dev</a><br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;<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>
</div></div></blockquote></div><br>