<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Generating call graphs for understanding and refactoring python code</title>
	<atom:link href="http://blog.prashanthellina.com/2007/11/14/generating-call-graphs-for-understanding-and-refactoring-python-code/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.prashanthellina.com/2007/11/14/generating-call-graphs-for-understanding-and-refactoring-python-code/</link>
	<description>( to ) ? be : ! be;</description>
	<lastBuildDate>Thu, 11 Feb 2010 04:06:39 -0800</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Ashish yadav</title>
		<link>http://blog.prashanthellina.com/2007/11/14/generating-call-graphs-for-understanding-and-refactoring-python-code/comment-page-1/#comment-36493</link>
		<dc:creator>Ashish yadav</dc:creator>
		<pubDate>Tue, 27 Oct 2009 09:51:30 +0000</pubDate>
		<guid isPermaLink="false">http://blog.prashanthellina.com/2007/11/14/generating-call-graphs-for-understanding-and-refactoring-python-code/#comment-36493</guid>
		<description>Really saved me a lot of time, thanks a ton.
.-= Ashish yadav&#180;s last undefined ..&lt;a href=&quot;0&quot; rel=&quot;nofollow&quot;&gt;If you register your site for free at &lt;/a&gt; =-.</description>
		<content:encoded><![CDATA[<p>Really saved me a lot of time, thanks a ton.<br />
.-= Ashish yadav&#180;s last undefined ..<a href="0" rel="nofollow">If you register your site for free at </a> =-.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ernie</title>
		<link>http://blog.prashanthellina.com/2007/11/14/generating-call-graphs-for-understanding-and-refactoring-python-code/comment-page-1/#comment-17076</link>
		<dc:creator>Ernie</dc:creator>
		<pubDate>Mon, 26 Jan 2009 09:29:19 +0000</pubDate>
		<guid isPermaLink="false">http://blog.prashanthellina.com/2007/11/14/generating-call-graphs-for-understanding-and-refactoring-python-code/#comment-17076</guid>
		<description>Very cool and was very impressed by Python&#039;s power. But I was coding in Version 2.5.2 and  your call graph service generated an error on modern Python 
ternary if construction. Hope you can update your 2.3.5 server or I will rewrite my own code not to use the modern constructs.
 You make feel so  happy I am using Python.</description>
		<content:encoded><![CDATA[<p>Very cool and was very impressed by Python&#8217;s power. But I was coding in Version 2.5.2 and  your call graph service generated an error on modern Python<br />
ternary if construction. Hope you can update your 2.3.5 server or I will rewrite my own code not to use the modern constructs.<br />
 You make feel so  happy I am using Python.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: lbolla</title>
		<link>http://blog.prashanthellina.com/2007/11/14/generating-call-graphs-for-understanding-and-refactoring-python-code/comment-page-1/#comment-8337</link>
		<dc:creator>lbolla</dc:creator>
		<pubDate>Thu, 09 Oct 2008 11:57:32 +0000</pubDate>
		<guid isPermaLink="false">http://blog.prashanthellina.com/2007/11/14/generating-call-graphs-for-understanding-and-refactoring-python-code/#comment-8337</guid>
		<description>I&#039;ve been working on a very similar project recently.
It is freely available from pypi!
http://pypi.python.org/pypi/py2dot

let me know your thoughts!

lbollas last blog post..&lt;a href=&quot;http://pypi.python.org/pypi/Products.kupu/1.4.12.1&quot; rel=&quot;nofollow&quot;&gt;Products.kupu 1.4.12.1&lt;/a&gt;</description>
		<content:encoded><![CDATA[<p>I&#8217;ve been working on a very similar project recently.<br />
It is freely available from pypi!<br />
<a href="http://pypi.python.org/pypi/py2dot" rel="nofollow">http://pypi.python.org/pypi/py2dot</a></p>
<p>let me know your thoughts!</p>
<p>lbollas last blog post..<a href="http://pypi.python.org/pypi/Products.kupu/1.4.12.1" rel="nofollow">Products.kupu 1.4.12.1</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: prashanthellina</title>
		<link>http://blog.prashanthellina.com/2007/11/14/generating-call-graphs-for-understanding-and-refactoring-python-code/comment-page-1/#comment-5139</link>
		<dc:creator>prashanthellina</dc:creator>
		<pubDate>Tue, 29 Jul 2008 16:25:57 +0000</pubDate>
		<guid isPermaLink="false">http://blog.prashanthellina.com/2007/11/14/generating-call-graphs-for-understanding-and-refactoring-python-code/#comment-5139</guid>
		<description>Mike, that&#039;s great. Can you share the code?</description>
		<content:encoded><![CDATA[<p>Mike, that&#8217;s great. Can you share the code?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: mike</title>
		<link>http://blog.prashanthellina.com/2007/11/14/generating-call-graphs-for-understanding-and-refactoring-python-code/comment-page-1/#comment-5122</link>
		<dc:creator>mike</dc:creator>
		<pubDate>Mon, 28 Jul 2008 21:52:23 +0000</pubDate>
		<guid isPermaLink="false">http://blog.prashanthellina.com/2007/11/14/generating-call-graphs-for-understanding-and-refactoring-python-code/#comment-5122</guid>
		<description>I&#039;ve extended the script to handle &quot;methods&quot;, in that it will recognize the invocation of name.attribute as a function call. It works properly for self in a class (unless self is used in a class to refer to something other than an object instance) and module attributes. It doesn&#039;t work for invocations of instance attributes; I&#039;m not sure that can be done in python without some form of dynamic analysis.</description>
		<content:encoded><![CDATA[<p>I&#8217;ve extended the script to handle &#8220;methods&#8221;, in that it will recognize the invocation of name.attribute as a function call. It works properly for self in a class (unless self is used in a class to refer to something other than an object instance) and module attributes. It doesn&#8217;t work for invocations of instance attributes; I&#8217;m not sure that can be done in python without some form of dynamic analysis.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: prashanthellina</title>
		<link>http://blog.prashanthellina.com/2007/11/14/generating-call-graphs-for-understanding-and-refactoring-python-code/comment-page-1/#comment-5116</link>
		<dc:creator>prashanthellina</dc:creator>
		<pubDate>Mon, 28 Jul 2008 14:25:47 +0000</pubDate>
		<guid isPermaLink="false">http://blog.prashanthellina.com/2007/11/14/generating-call-graphs-for-understanding-and-refactoring-python-code/#comment-5116</guid>
		<description>&quot;Computer Forum&quot;, Glad you liked it! Enjoy.</description>
		<content:encoded><![CDATA[<p>&#8220;Computer Forum&#8221;, Glad you liked it! Enjoy.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Computer Forum</title>
		<link>http://blog.prashanthellina.com/2007/11/14/generating-call-graphs-for-understanding-and-refactoring-python-code/comment-page-1/#comment-4863</link>
		<dc:creator>Computer Forum</dc:creator>
		<pubDate>Tue, 22 Jul 2008 11:21:11 +0000</pubDate>
		<guid isPermaLink="false">http://blog.prashanthellina.com/2007/11/14/generating-call-graphs-for-understanding-and-refactoring-python-code/#comment-4863</guid>
		<description>Amazing article! Detailed and very interested. I am going to recommend this blog to my friends.</description>
		<content:encoded><![CDATA[<p>Amazing article! Detailed and very interested. I am going to recommend this blog to my friends.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: prashanthellina</title>
		<link>http://blog.prashanthellina.com/2007/11/14/generating-call-graphs-for-understanding-and-refactoring-python-code/comment-page-1/#comment-4338</link>
		<dc:creator>prashanthellina</dc:creator>
		<pubDate>Sun, 15 Jun 2008 05:10:28 +0000</pubDate>
		<guid isPermaLink="false">http://blog.prashanthellina.com/2007/11/14/generating-call-graphs-for-understanding-and-refactoring-python-code/#comment-4338</guid>
		<description>Rick, the code is available already for download. You can find the link in the blog post.</description>
		<content:encoded><![CDATA[<p>Rick, the code is available already for download. You can find the link in the blog post.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Rick</title>
		<link>http://blog.prashanthellina.com/2007/11/14/generating-call-graphs-for-understanding-and-refactoring-python-code/comment-page-1/#comment-4335</link>
		<dc:creator>Rick</dc:creator>
		<pubDate>Sun, 15 Jun 2008 01:42:58 +0000</pubDate>
		<guid isPermaLink="false">http://blog.prashanthellina.com/2007/11/14/generating-call-graphs-for-understanding-and-refactoring-python-code/#comment-4335</guid>
		<description>Thanks for this - great idea. 

I was wondering if you would be willing to send me the script (and any dependencies) you use on this site to generate the graph. 
I have an entirely different kind of data that I would like to graph in a similar way.

Thanks again,
Rick</description>
		<content:encoded><![CDATA[<p>Thanks for this &#8211; great idea. </p>
<p>I was wondering if you would be willing to send me the script (and any dependencies) you use on this site to generate the graph.<br />
I have an entirely different kind of data that I would like to graph in a similar way.</p>
<p>Thanks again,<br />
Rick</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: prashanthellina</title>
		<link>http://blog.prashanthellina.com/2007/11/14/generating-call-graphs-for-understanding-and-refactoring-python-code/comment-page-1/#comment-630</link>
		<dc:creator>prashanthellina</dc:creator>
		<pubDate>Fri, 23 Nov 2007 12:55:54 +0000</pubDate>
		<guid isPermaLink="false">http://blog.prashanthellina.com/2007/11/14/generating-call-graphs-for-understanding-and-refactoring-python-code/#comment-630</guid>
		<description>I find it hard to imagine that &quot;entirely different&quot; functions will be calling each other. an example? I believe that functions that call each other will be doing some common task. Also, increase in speed is not a necessary goal of refactoring. In fact in python when you split a function into smaller functions, you incur a performace hit (albeit very small). The goal is to make the code more maintainable.</description>
		<content:encoded><![CDATA[<p>I find it hard to imagine that &#8220;entirely different&#8221; functions will be calling each other. an example? I believe that functions that call each other will be doing some common task. Also, increase in speed is not a necessary goal of refactoring. In fact in python when you split a function into smaller functions, you incur a performace hit (albeit very small). The goal is to make the code more maintainable.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: vikraman</title>
		<link>http://blog.prashanthellina.com/2007/11/14/generating-call-graphs-for-understanding-and-refactoring-python-code/comment-page-1/#comment-627</link>
		<dc:creator>vikraman</dc:creator>
		<pubDate>Fri, 23 Nov 2007 10:42:49 +0000</pubDate>
		<guid isPermaLink="false">http://blog.prashanthellina.com/2007/11/14/generating-call-graphs-for-understanding-and-refactoring-python-code/#comment-627</guid>
		<description>This is a good way to split a big python script into smaller ones and including them in one &quot;master script&quot;.  But i&#039;m not sure whether such a division will be correct &quot;functionally&quot; because you might have to group functions that perform entirely different things in one file. 
plus, There may not be an increase in speed in doing such a thing. However from the point of view of a programmer its pretty neat.</description>
		<content:encoded><![CDATA[<p>This is a good way to split a big python script into smaller ones and including them in one &#8220;master script&#8221;.  But i&#8217;m not sure whether such a division will be correct &#8220;functionally&#8221; because you might have to group functions that perform entirely different things in one file.<br />
plus, There may not be an increase in speed in doing such a thing. However from the point of view of a programmer its pretty neat.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: prashanthellina</title>
		<link>http://blog.prashanthellina.com/2007/11/14/generating-call-graphs-for-understanding-and-refactoring-python-code/comment-page-1/#comment-445</link>
		<dc:creator>prashanthellina</dc:creator>
		<pubDate>Wed, 14 Nov 2007 07:08:46 +0000</pubDate>
		<guid isPermaLink="false">http://blog.prashanthellina.com/2007/11/14/generating-call-graphs-for-understanding-and-refactoring-python-code/#comment-445</guid>
		<description>Although I have not tried yet, extending the script to handle modules and classes should be straight-forward. Like you said, evals, execs and functions being passed around are difficult to handle. Do keep me posted if you get somewhere along these lines. Thanks!</description>
		<content:encoded><![CDATA[<p>Although I have not tried yet, extending the script to handle modules and classes should be straight-forward. Like you said, evals, execs and functions being passed around are difficult to handle. Do keep me posted if you get somewhere along these lines. Thanks!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Hugo</title>
		<link>http://blog.prashanthellina.com/2007/11/14/generating-call-graphs-for-understanding-and-refactoring-python-code/comment-page-1/#comment-444</link>
		<dc:creator>Hugo</dc:creator>
		<pubDate>Wed, 14 Nov 2007 06:56:24 +0000</pubDate>
		<guid isPermaLink="false">http://blog.prashanthellina.com/2007/11/14/generating-call-graphs-for-understanding-and-refactoring-python-code/#comment-444</guid>
		<description>Wow! That&#039;s sweet... I&#039;ll give it a whirl when I have a big graph to generate. pycallgraph&#039;s speed (slow) made me think it is most useful to use it selectively on particular unit tests - but then I&#039;d have to have good unit tests, which I don&#039;t always have.

How tough is it to extend this kind of thing to multiple modules? And what will it not work on, eval statements, obviously. How about use of &quot;getattr&quot; and similar? Basically any time a function is passed as a string, the call will be missed. Right?</description>
		<content:encoded><![CDATA[<p>Wow! That&#8217;s sweet&#8230; I&#8217;ll give it a whirl when I have a big graph to generate. pycallgraph&#8217;s speed (slow) made me think it is most useful to use it selectively on particular unit tests &#8211; but then I&#8217;d have to have good unit tests, which I don&#8217;t always have.</p>
<p>How tough is it to extend this kind of thing to multiple modules? And what will it not work on, eval statements, obviously. How about use of &#8220;getattr&#8221; and similar? Basically any time a function is passed as a string, the call will be missed. Right?</p>
]]></content:encoded>
	</item>
</channel>
</rss>
