<html><head></head><body><div style="color:#000; background-color:#fff; font-family:HelveticaNeue-Light, Helvetica Neue Light, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif;font-size:16px"><div dir="ltr" id="yui_3_16_0_ym19_1_1464361924264_28338"><span>sounds great;</span></div><div dir="ltr"><span><br></span></div><div dir="ltr" id="yui_3_16_0_ym19_1_1464361924264_28389"><span id="yui_3_16_0_ym19_1_1464361924264_28388">one additional suggestion,  don't just use a plane jane .net text box, but instead use  a 'rich text box'.  why?  i have used it again and again in smart terminal emulator windows where properties like 'append' are built in, plus it is easy to build in self scrolling, and colored prompts for different data i.e. >>>output, <<<input, !!error, || configuration, ect.</span></div><div dir="ltr" id="yui_3_16_0_ym19_1_1464361924264_28339"><span><br></span></div><div dir="ltr" id="yui_3_16_0_ym19_1_1464361924264_28340"><span>cheers</span></div><div dir="ltr" id="yui_3_16_0_ym19_1_1464361924264_28340"><span><br></span></div><div></div><div> </div><div class="signature" id="yui_3_16_0_ym19_1_1464361924264_28390">“The desire that guides me in all I do is the desire to harness the forces of nature to the service of mankind.
 
 
 ”Nikola Tesla“Radio Power Will Revolutionize the World” (Modern Mechanix & Inventions, July, 1934)</div> <div class="qtdSeparateBR"><br><br></div><div class="yahoo_quoted" style="display: block;"> <div style="font-family: HelveticaNeue-Light, Helvetica Neue Light, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif; font-size: 16px;"> <div style="font-family: HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif; font-size: 16px;"> <div dir="ltr"><font size="2" face="Arial"> On Friday, May 27, 2016 3:41 PM, Saparya K <spryify@gmail.com> wrote:<br></font></div>  <br><br> <div class="y_msg_container"><div id="yiv7795563010"><div><div dir="ltr"><div style="margin:0px 0px 1em;padding:0px;border:0px;font-size:15px;clear:both;color:rgb(36,39,41);font-family:Arial, 'Helvetica Neue', Helvetica, sans-serif;line-height:19.5px;">Just in case someone stumbles on this post looking for an answer:</div><div style="margin:0px 0px 1em;padding:0px;border:0px;font-size:15px;clear:both;color:rgb(36,39,41);font-family:Arial, 'Helvetica Neue', Helvetica, sans-serif;line-height:19.5px;">A solution that worked for me was redirecting the Python stdout/stderr to a stream in Python. I was then able to route this stream into the .NET text box.</div><pre class="yiv7795563010" style="margin-top:0px;margin-bottom:1em;padding:5px;border:0px;width:auto;max-height:600px;overflow:auto;font-family:Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, sans-serif;word-wrap:normal;"><code style="margin:0px;padding:0px;border:0px;font-family:Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, sans-serif;white-space:inherit;background-color:rgb(255,255,255);"><font color="#000000"><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">private</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;"> </span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">void</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;"> button1_Click</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">(</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">object</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;"> sender</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">,</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;"> </span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">EventArgs</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;"> e</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">)</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">
</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">{</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">
    using </span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">(</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">Py</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">.</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">GIL</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">())</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">
    </span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">{</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">
        </span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">// Redirect stdout to text box</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">
        </span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">dynamic</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;"> sys </span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">=</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;"> </span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">PythonEngine</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">.</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">ImportModule</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">(</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">"sys"</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">);</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">

        </span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">string</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;"> codeToRedirectOutput </span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">=</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">
            </span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">"import sys\n"</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;"> </span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">+</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">
            </span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">"from io import StringIO\n"</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;"> </span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">+</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">
            </span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">"sys.stdout = mystdout = StringIO()\n"</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;"> </span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">+</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">
            </span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">"sys.stdout.flush()\n"</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;"> </span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">+</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">
            </span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">"sys.stderr = mystderr = StringIO()\n"</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;"> </span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">+</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">
            </span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">"sys.stderr.flush()\n"</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">;</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">
        </span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">PythonEngine</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">.</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">RunString</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">(</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">codeToRedirectOutput</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">);</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">            

        </span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">// Run Python code</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">
        </span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">string</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;"> pyCode </span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">=</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;"> </span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">"print(1 + 2)"</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">;</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">
        </span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">PyObject</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;"> result </span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">=</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;"> </span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">PythonEngine</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">.</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">RunString</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">(</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">pyCode</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">);</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;"> </span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">// null in case of error</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">
        </span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">if</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;"> </span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">(</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">result </span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">!=</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;"> </span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">null</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">)</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">
        </span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">{</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">
            </span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">string</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;"> pyStdout </span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">=</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;"> sys</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">.</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">stdout</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">.</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">getvalue</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">();</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;"> </span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">// Get stdout</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">
            pyStdout </span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">=</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;"> pyStdout</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">.</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">Replace</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">(</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">"\n"</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">,</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;"> </span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">"\r\n"</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">);</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;"> </span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">// To support newline for textbox</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">
            textBox1</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">.</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">Text</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;"> </span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">=</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;"> pyStdout</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">;</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">             
        </span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">}</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">
        </span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">else</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">
        </span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">{</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">
             </span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">PythonEngine</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">.</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">PrintError</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">();</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;"> </span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">// Make Python engine print errors</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">
             </span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">string</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;"> pyStderr </span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">=</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;"> sys</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">.</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">stderr</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">.</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">getvalue</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">();</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;"> </span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">// Get stderr</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">
             pyStderr </span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">=</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;"> pyStderr</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">.</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">Replace</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">(</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">"\n"</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">,</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;"> </span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">"\r\n"</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">);</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;"> </span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">// To support newline for textbox</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">
             textBox1</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">.</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">Text</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;"> </span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">=</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;"> pyStderr</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">;</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">
        </span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">}</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">     
    </span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">}</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">
</span><span class="yiv7795563010" style="margin:0px;padding:0px;border:0px;">}</span></font></code></pre><div style="margin:0px 0px 1em;padding:0px;border:0px;font-size:15px;clear:both;color:rgb(36,39,41);font-family:Arial, 'Helvetica Neue', Helvetica, sans-serif;line-height:19.5px;">With this code, I was able to redirect the stdout (and stderr in the case of an error) from the Python engine to a .NET text box.</div><div class="yiv7795563010yqt1919942113" id="yiv7795563010yqt74255"><div class="yiv7795563010gmail_extra"><br clear="none"><div class="yiv7795563010gmail_quote">On Wed, May 18, 2016 at 12:02 AM, Saparya K <span dir="ltr"><<a rel="nofollow" shape="rect" ymailto="mailto:spryify@gmail.com" target="_blank" href="mailto:spryify@gmail.com">spryify@gmail.com</a>></span> wrote:<br clear="none"><blockquote class="yiv7795563010gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div dir="ltr"><div><font face="arial, helvetica, sans-serif" style="background-color:rgb(255,255,255);" color="#000000">Hi Denis,</font></div><div><font face="arial, helvetica, sans-serif" style="background-color:rgb(255,255,255);" color="#000000">Thanks for pointing me to the new API. I am now able to embed Python in my C# code and access Python classes and methods from C#!</font></div><div><font face="arial, helvetica, sans-serif" style="background-color:rgb(255,255,255);" color="#000000"><br clear="none"></font></div><font face="arial, helvetica, sans-serif" style="background-color:rgb(255,255,255);" color="#000000">Hi Nils,</font><div><font face="arial, helvetica, sans-serif" style="background-color:rgb(255,255,255);" color="#000000">Your application looks very interesting and some of the features (e.g. matplotlib integration) are on the lines of what I have been thinking about. I am far from there though and will need to learn more before I can follow all the code in your wrapper!</font></div><div><font face="arial, helvetica, sans-serif" style="background-color:rgb(255,255,255);" color="#000000"><br clear="none"></font></div><div><font face="arial, helvetica, sans-serif" style="background-color:rgb(255,255,255);" color="#000000">-----</font></div><div><font face="arial, helvetica, sans-serif" style="background-color:rgb(255,255,255);" color="#000000"><br clear="none"></font></div><div><font face="arial, helvetica, sans-serif" style="background-color:rgb(255,255,255);" color="#000000">As of now, I am <span style="line-height:19.5px;">trying to redirect the output from the Python interpreter to a .NET text box. While I am able to redirect the output to a file, I am having trouble with routing the output to a text box. </span></font></div><div><span style="line-height:19.5px;background-color:rgb(255,255,255);"><font face="arial, helvetica, sans-serif" color="#000000"><br clear="none"></font></span></div><div><font face="arial, helvetica, sans-serif" style="background-color:rgb(255,255,255);" color="#000000"><span style="line-height:19.5px;">I first tried to redirect the console output to a custom TextWriter using Console.SetOut in C#:</span><span style="line-height:19.5px;"><br clear="none"></span></font></div><div><font face="arial, helvetica, sans-serif" style="background-color:rgb(255,255,255);" color="#000000"><br clear="none"></font></div><div><font face="arial, helvetica, sans-serif" color="#000000"><span style="line-height:19.5px;background-color:rgb(255,255,255);">private void Form1_Load(object sender, EventArgs e)</span></font></div><div><font face="arial, helvetica, sans-serif" color="#000000"><span style="line-height:19.5px;background-color:rgb(255,255,255);">{</span></font></div><div><font face="arial, helvetica, sans-serif" color="#000000"><span style="line-height:19.5px;background-color:rgb(255,255,255);">    _writer = new TextBoxWriter(this.textBox1);</span></font></div><div><font face="arial, helvetica, sans-serif" color="#000000"><span style="line-height:19.5px;background-color:rgb(255,255,255);">    Console.SetOut(_writer);    // Redirect stdout to custom TextWriter that writes to the text box</span></font></div><div><font face="arial, helvetica, sans-serif" color="#000000"><span style="line-height:19.5px;background-color:rgb(255,255,255);">}</span></font></div><div><font face="arial, helvetica, sans-serif" color="#000000"><span style="line-height:19.5px;background-color:rgb(255,255,255);"><br clear="none"></span></font></div><div><font face="arial, helvetica, sans-serif" style="background-color:rgb(255,255,255);" color="#000000"><span style="line-height:19.5px;">This did not work: while output from C# is routed to the text box, output from Python is not.</span></font></div><div><span style="color:rgb(0,0,0);font-family:arial, helvetica, sans-serif;"><br clear="none"></span></div><div><span style="color:rgb(0,0,0);font-family:arial, helvetica, sans-serif;">-----</span><br clear="none"></div><div><span style="color:rgb(0,0,0);font-family:arial, helvetica, sans-serif;"><br clear="none"></span></div><div><span style="line-height:19.5px;background-color:rgb(255,255,255);"><font face="arial, helvetica, sans-serif" color="#000000">I then thought that maybe I need to redirect the Python stdout instead of the C# standard output. The idea was to assign Python's sys.stdout to a .NET object that implements the same interface as a python stream (write(), writelines()...):</font></span></div><div><strong style="line-height:19.5px;margin:0px;padding:0px;border:0px;"><font face="arial, helvetica, sans-serif" style="background-color:rgb(255,255,255);" color="#000000"><br clear="none"></font></strong></div><div><strong style="line-height:19.5px;margin:0px;padding:0px;border:0px;"><font face="arial, helvetica, sans-serif" style="background-color:rgb(255,255,255);" color="#000000">.NET class to mimic Python stream:</font></strong></div><div><ol start="2" style="margin:0px 0px 1em 30px;padding:0px;border:0px;line-height:19.5px;"><li style="margin:0px;padding:0px;border:0px;word-wrap:break-word;"><pre style="margin-top:0px;margin-bottom:1em;padding:5px;border:0px;width:auto;max-height:600px;overflow:auto;word-wrap:normal;"><code style="margin:0px;padding:0px;border:0px;white-space:inherit;"><font face="arial, helvetica, sans-serif" style="background-color:rgb(255,255,255);" color="#000000"><span style="margin:0px;padding:0px;border:0px;">public</span><span style="margin:0px;padding:0px;border:0px;"> </span><span style="margin:0px;padding:0px;border:0px;">class</span><span style="margin:0px;padding:0px;border:0px;"> </span><span style="margin:0px;padding:0px;border:0px;">TextBoxStream</span><span style="margin:0px;padding:0px;border:0px;"> </span><span style="margin:0px;padding:0px;border:0px;">:</span><span style="margin:0px;padding:0px;border:0px;"> </span><span style="margin:0px;padding:0px;border:0px;">PyObject</span><span style="margin:0px;padding:0px;border:0px;"> </span><span style="margin:0px;padding:0px;border:0px;">// To assign to sys.stdout. Is this correct?</span><span style="margin:0px;padding:0px;border:0px;">
</span><span style="margin:0px;padding:0px;border:0px;">{</span><span style="margin:0px;padding:0px;border:0px;">
    </span><span style="margin:0px;padding:0px;border:0px;">private</span><span style="margin:0px;padding:0px;border:0px;"> </span><span style="margin:0px;padding:0px;border:0px;">TextBox</span><span style="margin:0px;padding:0px;border:0px;"> _output </span><span style="margin:0px;padding:0px;border:0px;">=</span><span style="margin:0px;padding:0px;border:0px;"> </span><span style="margin:0px;padding:0px;border:0px;">null</span><span style="margin:0px;padding:0px;border:0px;">;</span><span style="margin:0px;padding:0px;border:0px;">            

    </span><span style="margin:0px;padding:0px;border:0px;">public</span><span style="margin:0px;padding:0px;border:0px;"> </span><span style="margin:0px;padding:0px;border:0px;">TextBoxStream</span><span style="margin:0px;padding:0px;border:0px;">()</span><span style="margin:0px;padding:0px;border:0px;"> </span><span style="margin:0px;padding:0px;border:0px;">{}</span><span style="margin:0px;padding:0px;border:0px;">

    </span><span style="margin:0px;padding:0px;border:0px;">public</span><span style="margin:0px;padding:0px;border:0px;"> </span><span style="margin:0px;padding:0px;border:0px;">TextBoxStream</span><span style="margin:0px;padding:0px;border:0px;">(</span><span style="margin:0px;padding:0px;border:0px;">TextBox</span><span style="margin:0px;padding:0px;border:0px;"> output</span><span style="margin:0px;padding:0px;border:0px;">) {</span><span style="margin:0px;padding:0px;border:0px;">
        _output </span><span style="margin:0px;padding:0px;border:0px;">=</span><span style="margin:0px;padding:0px;border:0px;"> output</span><span style="margin:0px;padding:0px;border:0px;">;</span><span style="margin:0px;padding:0px;border:0px;">
    </span><span style="margin:0px;padding:0px;border:0px;">}</span><span style="margin:0px;padding:0px;border:0px;">

    </span><span style="margin:0px;padding:0px;border:0px;">void</span><span style="margin:0px;padding:0px;border:0px;"> write</span><span style="margin:0px;padding:0px;border:0px;">(</span><span style="margin:0px;padding:0px;border:0px;">object</span><span style="margin:0px;padding:0px;border:0px;"> value</span><span style="margin:0px;padding:0px;border:0px;">) {</span><span style="margin:0px;padding:0px;border:0px;">
        _output</span><span style="margin:0px;padding:0px;border:0px;">.</span><span style="margin:0px;padding:0px;border:0px;">AppendText</span><span style="margin:0px;padding:0px;border:0px;">(</span><span style="margin:0px;padding:0px;border:0px;">value</span><span style="margin:0px;padding:0px;border:0px;">.</span><span style="margin:0px;padding:0px;border:0px;">ToString</span><span style="margin:0px;padding:0px;border:0px;">());</span><span style="margin:0px;padding:0px;border:0px;">
    }</span><span style="margin:0px;padding:0px;border:0px;">
</span><span style="margin:0px;padding:0px;border:0px;">}</span></font></code></pre><div style="margin:0px;padding:0px;border:0px;clear:both;"><strong style="margin:0px;padding:0px;border:0px;"><font face="arial, helvetica, sans-serif" style="background-color:rgb(255,255,255);" color="#000000">In Form1.cs:</font></strong></div><pre style="margin-top:0px;margin-bottom:1em;padding:5px;border:0px;width:auto;max-height:600px;overflow:auto;word-wrap:normal;"><code style="margin:0px;padding:0px;border:0px;white-space:inherit;"><font face="arial, helvetica, sans-serif" style="background-color:rgb(255,255,255);" color="#000000"><span style="margin:0px;padding:0px;border:0px;">private</span><span style="margin:0px;padding:0px;border:0px;"> </span><span style="margin:0px;padding:0px;border:0px;">void</span><span style="margin:0px;padding:0px;border:0px;"> button1_Click</span><span style="margin:0px;padding:0px;border:0px;">(</span><span style="margin:0px;padding:0px;border:0px;">object</span><span style="margin:0px;padding:0px;border:0px;"> sender</span><span style="margin:0px;padding:0px;border:0px;">,</span><span style="margin:0px;padding:0px;border:0px;"> </span><span style="margin:0px;padding:0px;border:0px;">EventArgs</span><span style="margin:0px;padding:0px;border:0px;"> e</span><span style="margin:0px;padding:0px;border:0px;">) {</span><span style="margin:0px;padding:0px;border:0px;">
    using </span><span style="margin:0px;padding:0px;border:0px;">(</span><span style="margin:0px;padding:0px;border:0px;">Py</span><span style="margin:0px;padding:0px;border:0px;">.</span><span style="margin:0px;padding:0px;border:0px;">GIL</span><span style="margin:0px;padding:0px;border:0px;">())</span><span style="margin:0px;padding:0px;border:0px;">
    </span><span style="margin:0px;padding:0px;border:0px;">{</span><span style="margin:0px;padding:0px;border:0px;">
        </span><span style="margin:0px;padding:0px;border:0px;">// Redirect stdout to text box</span><span style="margin:0px;padding:0px;border:0px;">
        </span><span style="margin:0px;padding:0px;border:0px;">dynamic</span><span style="margin:0px;padding:0px;border:0px;"> sys </span><span style="margin:0px;padding:0px;border:0px;">=</span><span style="margin:0px;padding:0px;border:0px;"> </span><span style="margin:0px;padding:0px;border:0px;">PythonEngine</span><span style="margin:0px;padding:0px;border:0px;">.</span><span style="margin:0px;padding:0px;border:0px;">ImportModule</span><span style="margin:0px;padding:0px;border:0px;">(</span><span style="margin:0px;padding:0px;border:0px;">"sys"</span><span style="margin:0px;padding:0px;border:0px;">);</span><span style="margin:0px;padding:0px;border:0px;">
        </span><span style="margin:0px;padding:0px;border:0px;">TextBoxStream</span><span style="margin:0px;padding:0px;border:0px;"> textBoxStream </span><span style="margin:0px;padding:0px;border:0px;">=</span><span style="margin:0px;padding:0px;border:0px;"> </span><span style="margin:0px;padding:0px;border:0px;">new</span><span style="margin:0px;padding:0px;border:0px;"> </span><span style="margin:0px;padding:0px;border:0px;">TextBoxStream</span><span style="margin:0px;padding:0px;border:0px;">(</span><span style="margin:0px;padding:0px;border:0px;">textBox1</span><span style="margin:0px;padding:0px;border:0px;">);</span><span style="margin:0px;padding:0px;border:0px;">
        sys</span><span style="margin:0px;padding:0px;border:0px;">.</span><span style="margin:0px;padding:0px;border:0px;">stdout </span><span style="margin:0px;padding:0px;border:0px;">=</span><span style="margin:0px;padding:0px;border:0px;"> textBoxStream</span><span style="margin:0px;padding:0px;border:0px;">; // This is probably not theright way?</span><span style="margin:0px;padding:0px;border:0px;">
        </span><span style="margin:0px;padding:0px;border:0px;">//sys.SetAttr("stdout", textBoxStream); // This did not work either</span><span style="margin:0px;padding:0px;border:0px;">

        </span><span style="margin:0px;padding:0px;border:0px;">string</span><span style="margin:0px;padding:0px;border:0px;"> code </span><span style="margin:0px;padding:0px;border:0px;">=</span><span style="margin:0px;padding:0px;border:0px;">
            </span><span style="margin:0px;padding:0px;border:0px;">"import sys\n"</span><span style="margin:0px;padding:0px;border:0px;"> </span><span style="margin:0px;padding:0px;border:0px;">+</span><span style="margin:0px;padding:0px;border:0px;">
            </span><span style="margin:0px;padding:0px;border:0px;">"print 'Message 1'\n"</span><span style="margin:0px;padding:0px;border:0px;"> </span><span style="margin:0px;padding:0px;border:0px;">+</span><span style="margin:0px;padding:0px;border:0px;">
            </span><span style="margin:0px;padding:0px;border:0px;">"sys.stdout.write('Message 2')\n"</span><span style="margin:0px;padding:0px;border:0px;"> </span><span style="margin:0px;padding:0px;border:0px;">+</span><span style="margin:0px;padding:0px;border:0px;">
            </span><span style="margin:0px;padding:0px;border:0px;">"sys.stdout.flush()"</span><span style="margin:0px;padding:0px;border:0px;">;</span><span style="margin:0px;padding:0px;border:0px;">

        </span><span style="margin:0px;padding:0px;border:0px;">PyObject</span><span style="margin:0px;padding:0px;border:0px;"> redirectPyObj </span><span style="margin:0px;padding:0px;border:0px;">=</span><span style="margin:0px;padding:0px;border:0px;"> </span><span style="margin:0px;padding:0px;border:0px;">PythonEngine</span><span style="margin:0px;padding:0px;border:0px;">.</span><span style="margin:0px;padding:0px;border:0px;">RunString</span><span style="margin:0px;padding:0px;border:0px;">(</span><span style="margin:0px;padding:0px;border:0px;">code</span><span style="margin:0px;padding:0px;border:0px;">);</span><span style="margin:0px;padding:0px;border:0px;"> </span><span style="margin:0px;padding:0px;border:0px;">// returns NULL</span><span style="margin:0px;padding:0px;border:0px;">
        sys</span><span style="margin:0px;padding:0px;border:0px;">.</span><span style="margin:0px;padding:0px;border:0px;">stdout</span><span style="margin:0px;padding:0px;border:0px;">.</span><span style="margin:0px;padding:0px;border:0px;">write</span><span style="margin:0px;padding:0px;border:0px;">(</span><span style="margin:0px;padding:0px;border:0px;">"Message 3"</span><span style="margin:0px;padding:0px;border:0px;">);</span><span style="margin:0px;padding:0px;border:0px;"> 
        </span><span style="margin:0px;padding:0px;border:0px;">// Exception thrown: 'Python.Runtime.PyObject' does not contain a definition for 'stdout'</span><span style="margin:0px;padding:0px;border:0px;">
    </span><span style="margin:0px;padding:0px;border:0px;">}</span><span style="margin:0px;padding:0px;border:0px;">
</span><span style="margin:0px;padding:0px;border:0px;">}</span></font></code></pre></li></ol><div style="margin:0px 0px 1em;padding:0px;border:0px;clear:both;line-height:19.5px;"><font face="arial, helvetica, sans-serif" style="background-color:rgb(255,255,255);" color="#000000">This does not work either: redirectPyObj is NULL. I tried using the old as well as the new Python.NET API (with dynamic). Neither the sys.stdout.write nor the print statements write to the text box.</font></div><div style="margin:0px 0px 1em;padding:0px;border:0px;clear:both;line-height:19.5px;"><font face="arial, helvetica, sans-serif" style="background-color:rgb(255,255,255);" color="#000000">Any ideas on how to approach this would be very helpful.</font></div></div><div class="yiv7795563010gmail_extra"><font face="arial, helvetica, sans-serif" style="background-color:rgb(255,255,255);" color="#000000">Thanks,</font></div><div class="yiv7795563010gmail_extra"><font face="arial, helvetica, sans-serif" style="background-color:rgb(255,255,255);" color="#000000">Saparya</font></div><div><div class="yiv7795563010h5"><div class="yiv7795563010gmail_extra"><font face="arial, helvetica, sans-serif" style="background-color:rgb(255,255,255);" color="#000000"><br clear="none"></font></div><div class="yiv7795563010gmail_extra"><br clear="none"><div class="yiv7795563010gmail_quote">On Tue, May 17, 2016 at 3:33 AM, Nils Becker <span dir="ltr"><<a rel="nofollow" shape="rect" ymailto="mailto:nilsc.becker@gmail.com" target="_blank" href="mailto:nilsc.becker@gmail.com">nilsc.becker@gmail.com</a>></span> wrote:<br clear="none"><blockquote class="yiv7795563010gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex;"><div dir="ltr">Hey,<div><br clear="none"></div><div>a while ago I wrote something like a light wrapper around Python.NET to embed CPython with numpy/scipy in a .NET GUI. It manages local/global dictionaries, automatically converts simple data types and numpy arrrays<->C# arrays and provides a plotting widget in C# that shows matplotlib plots. It also has some other convenience functions.</div><div><br clear="none"></div><div>The code is by no means complete, fully tested or even nice. However, for me it works.</div><div><br clear="none"></div><div>I uploaded it to github: <a rel="nofollow" shape="rect" target="_blank" href="https://github.com/Lodomir/PythonInterface">https://github.com/Lodomir/PythonInterface</a></div><div>As it demonstrates some not-well documented use of Python.NET, I thought it maybe nice to share the code.</div><div><br clear="none"></div><div>You will need to add the references to Python.NET to build the main project (PythonInterface) and additionally to the PythonInterface-DLL to build the examples.</div><div><br clear="none"></div><div>Cheers</div><span><font color="#888888"></font></span><div>Nils</div></div><div><div><div class="yiv7795563010gmail_extra"><br clear="none"><div class="yiv7795563010gmail_quote">2016-05-13 22:04 GMT+02:00 Denis Akhiyarov <span dir="ltr"><<a rel="nofollow" shape="rect" ymailto="mailto:denis.akhiyarov@gmail.com" target="_blank" href="mailto:denis.akhiyarov@gmail.com">denis.akhiyarov@gmail.com</a>></span>:<br clear="none"><blockquote class="yiv7795563010gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex;"><div dir="ltr">for embedding look at c# embedding unit tests and also here:<div><br clear="none"></div><div>1. Old API:</div><div><br clear="none"></div><div><a rel="nofollow" shape="rect" target="_blank" href="http://pythonnet.github.io/readme.html">http://pythonnet.github.io/readme.html</a><br clear="none"></div><div><br clear="none"></div><div>2. New simplified API using dynamic:</div><div><br clear="none"></div><div><a rel="nofollow" shape="rect" target="_blank" href="https://github.com/pythonnet/pythonnet/blob/master/README.md">https://github.com/pythonnet/pythonnet/blob/master/README.md</a><br clear="none"></div><div><br clear="none"></div><div><br clear="none"></div></div><div><div><div class="yiv7795563010gmail_extra"><br clear="none"><div class="yiv7795563010gmail_quote">On Thu, May 12, 2016 at 4:16 PM, Saparya K <span dir="ltr"><<a rel="nofollow" shape="rect" ymailto="mailto:spryify@gmail.com" target="_blank" href="mailto:spryify@gmail.com">spryify@gmail.com</a>></span> wrote:<br clear="none"><blockquote class="yiv7795563010gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex;"><div dir="ltr"><div>Thanks for your response, Denis. </div><div><br clear="none"></div><div>I had not come across Sho earlier. It looks very interesting. (If only Python 3.x support was available, though it does look like they have added support for their own math and visualization libraries). <br clear="none"></div><div><br clear="none"></div><div>I am going over the demos and the unit tests and I was able to write a simple console application to access .NET objects from Python. This is very encouraging! </div><div>I am still figuring out how to embed Python code in my C# WinForms application (instead of a console application).</div><div><br clear="none"></div><div>I will continue my experiments, but in the meantime if you or anyone else has any ideas on how to redirect the result from the Python interpreter (say, to a rich text box), I would love to hear them. That is one part of the puzzle that is unclear to me.</div><div><br clear="none"></div><div>Thanks,</div><div>Saparya</div></div><div class="yiv7795563010gmail_extra"><br clear="none"><div class="yiv7795563010gmail_quote">On Wed, May 11, 2016 at 4:01 PM, Denis Akhiyarov <span dir="ltr"><<a rel="nofollow" shape="rect" ymailto="mailto:denis.akhiyarov@gmail.com" target="_blank" href="mailto:denis.akhiyarov@gmail.com">denis.akhiyarov@gmail.com</a>></span> wrote:<br clear="none"><blockquote class="yiv7795563010gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex;"><div dir="ltr">This is definitely possible with WinForms or WPF. See the demo folder in pythonnet repo. One of the demo's is still in pull request.<div><br clear="none"></div><div>You should probably just try running previous IronPython attempts using pythonnet and report issues if any. Have a look at Sho from Microsoft.</div><div><br clear="none"></div><div>There is someone trying to embed ipython REPL using pythonnet/Excel-DNA or COM in Excel with <span style="font-family:Arial, Helvetica, sans-serif;font-size:13px;">Custom Task Pane (CTP)</span><span style="font-family:Arial, Helvetica, sans-serif;font-size:13px;"> written in </span>WinForms:</div><div><br clear="none"></div><div><a rel="nofollow" shape="rect" target="_blank" href="https://groups.google.com/forum/#!topic/jupyter/CVht4orvQtc">https://groups.google.com/forum/#!topic/jupyter/CVht4orvQtc</a><br clear="none"></div><div><br clear="none"></div><div><br clear="none"></div><div><div><br clear="none"></div><div><br clear="none"></div></div></div><div class="yiv7795563010gmail_extra"><br clear="none"><div class="yiv7795563010gmail_quote"><div><div>On Wed, May 11, 2016 at 4:44 PM, Saparya K <span dir="ltr"><<a rel="nofollow" shape="rect" ymailto="mailto:spryify@gmail.com" target="_blank" href="mailto:spryify@gmail.com">spryify@gmail.com</a>></span> wrote:<br clear="none"></div></div><blockquote class="yiv7795563010gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex;"><div><div><div dir="ltr">Hello PythonNet,<div><br clear="none"><div>I am looking to embed <span style="color:rgb(36,39,41);font-family:arial, helvetica, sans-serif;line-height:19.5px;">a Python interactive (REPL) shell in a .NET WinForms application.</span></div><div><span style="color:rgb(36,39,41);font-family:arial, helvetica, sans-serif;line-height:19.5px;">This C# application displays a graphical visualization of some data. Methods to manipulate the data in the C# application would be exposed via a Python API.</span></div></div><div><span style="color:rgb(36,39,41);font-family:arial, helvetica, sans-serif;line-height:19.5px;">The idea is to be able to interact with the data from the Python shell via the API, and thereby updating the graphical view. </span><span style="color:rgb(36,39,41);font-family:arial, helvetica, sans-serif;line-height:19.5px;"><br clear="none"></span></div><div><span style="color:rgb(36,39,41);font-family:arial, helvetica, sans-serif;line-height:19.5px;"><br clear="none"></span></div><div><span style="color:rgb(36,39,41);font-family:arial, helvetica, sans-serif;line-height:19.5px;">Ideally, the shell should support any valid Python syntax that is required to use the API. This would involve:</span><span style="color:rgb(36,39,41);font-family:arial, helvetica, sans-serif;line-height:19.5px;"><br clear="none"></span></div><div><ol style="margin:0px 0px 1em 30px;padding:0px;border:0px;color:rgb(36,39,41);line-height:19.5px;"><li style="margin:0px 0px 0.5em;padding:0px;border:0px;word-wrap:break-word;"><font face="arial, helvetica, sans-serif">Querying a collection of data from the application via the Python API</font></li><li style="margin:0px 0px 0.5em;padding:0px;border:0px;word-wrap:break-word;"><font face="arial, helvetica, sans-serif">Then manipulating this collection in the Python shell</font></li><li style="margin:0px;padding:0px;border:0px;word-wrap:break-word;"><font face="arial, helvetica, sans-serif">Making API calls with the modified collection as an argument</font></li></ol><div><span style="color:rgb(36,39,41);font-family:arial, helvetica, sans-serif;line-height:19.5px;">I came across a few examples where an interactive shell was developed using IronPython. A limitation with this approach is the absence of </span><strong style="color:rgb(36,39,41);font-family:arial, helvetica, sans-serif;line-height:19.5px;margin:0px;padding:0px;border:0px;">Python 3.x</strong><span style="color:rgb(36,39,41);font-family:arial, helvetica, sans-serif;line-height:19.5px;"> support (and other C-compiled libraries) in IronPython. For this reason, I would prefer to use Python.NET if it is possible.</span></div></div><div><span style="color:rgb(36,39,41);font-family:arial, helvetica, sans-serif;line-height:19.5px;"><br clear="none"></span></div><div><span style="color:rgb(36,39,41);font-family:arial, helvetica, sans-serif;line-height:19.5px;">Has anyone here tried something like this with Python.NET before? Does it looks like what I am trying to achieve is feasible?</span><span style="color:rgb(36,39,41);font-family:arial, helvetica, sans-serif;line-height:19.5px;"><br clear="none"></span></div><div><span style="color:rgb(36,39,41);font-family:arial, helvetica, sans-serif;line-height:19.5px;"><br clear="none"></span></div><div><span style="color:rgb(36,39,41);font-family:arial, helvetica, sans-serif;line-height:19.5px;">Any direction would be very helpful!</span></div></div>
<br clear="none"></div></div>_________________________________________________<br clear="none">
Python.NET mailing list - <a rel="nofollow" shape="rect" ymailto="mailto:PythonDotNet@python.org" target="_blank" href="mailto:PythonDotNet@python.org">PythonDotNet@python.org</a><br clear="none">
<a rel="nofollow" shape="rect" target="_blank" href="https://mail.python.org/mailman/listinfo/pythondotnet">https://mail.python.org/mailman/listinfo/pythondotnet</a><br clear="none"></blockquote></div><br clear="none"></div>
<br clear="none">_________________________________________________<br clear="none">
Python.NET mailing list - <a rel="nofollow" shape="rect" ymailto="mailto:PythonDotNet@python.org" target="_blank" href="mailto:PythonDotNet@python.org">PythonDotNet@python.org</a><br clear="none">
<a rel="nofollow" shape="rect" target="_blank" href="https://mail.python.org/mailman/listinfo/pythondotnet">https://mail.python.org/mailman/listinfo/pythondotnet</a><br clear="none"></blockquote></div><br clear="none"></div>
<br clear="none">_________________________________________________<br clear="none">
Python.NET mailing list - <a rel="nofollow" shape="rect" ymailto="mailto:PythonDotNet@python.org" target="_blank" href="mailto:PythonDotNet@python.org">PythonDotNet@python.org</a><br clear="none">
<a rel="nofollow" shape="rect" target="_blank" href="https://mail.python.org/mailman/listinfo/pythondotnet">https://mail.python.org/mailman/listinfo/pythondotnet</a><br clear="none"></blockquote></div><br clear="none"></div>
</div></div><br clear="none">_________________________________________________<br clear="none">
Python.NET mailing list - <a rel="nofollow" shape="rect" ymailto="mailto:PythonDotNet@python.org" target="_blank" href="mailto:PythonDotNet@python.org">PythonDotNet@python.org</a><br clear="none">
<a rel="nofollow" shape="rect" target="_blank" href="https://mail.python.org/mailman/listinfo/pythondotnet">https://mail.python.org/mailman/listinfo/pythondotnet</a><br clear="none"></blockquote></div><br clear="none"></div>
</div></div><br clear="none">_________________________________________________<br clear="none">
Python.NET mailing list - <a rel="nofollow" shape="rect" ymailto="mailto:PythonDotNet@python.org" target="_blank" href="mailto:PythonDotNet@python.org">PythonDotNet@python.org</a><br clear="none">
<a rel="nofollow" shape="rect" target="_blank" href="https://mail.python.org/mailman/listinfo/pythondotnet">https://mail.python.org/mailman/listinfo/pythondotnet</a><br clear="none"></blockquote></div><br clear="none"></div></div></div></div>
</blockquote></div><br clear="none"></div></div></div></div></div><br><div class="yqt1919942113" id="yqt09345">_________________________________________________<br clear="none">Python.NET mailing list - <a shape="rect" ymailto="mailto:PythonDotNet@python.org" href="mailto:PythonDotNet@python.org">PythonDotNet@python.org</a><br clear="none"><a shape="rect" href="https://mail.python.org/mailman/listinfo/pythondotnet" target="_blank">https://mail.python.org/mailman/listinfo/pythondotnet</a></div><br><br></div>  </div> </div>  </div></div></body></html>