reload and work flow suggestions

Peter Cacioppi peter.cacioppi at gmail.com
Mon Sep 23 04:31:00 EDT 2013


On Saturday, September 21, 2013 2:43:13 PM UTC-7, Peter Cacioppi wrote:
> This is an idea brought over from another post.
> 
> 
> 
> When I write Python code I generally have 2 or 3 windows open simultaneously.
> 
> 
> 
> 1) An editor for the actual code.
> 
> 2) The interactive interpreter.
> 
> 3) An editor for the unit tests. (Sometimes skipped for quick one-off scripts)
> 
> 
> 
> My work flow tends to involve using 2 to debug the issues that come up with 1 and 3. I'll write some new code in 1, play around with it in 2, then solidify the tests in 3. Or a test in 3 fails and I dig around with it using 2.
> 
> 
> 
> My problem is that I tend to use reload() quite a bit. I want to call functions and construct objects that are inside the guts of 1 and pass them arguments that are stored as variables in 2. If I restart my session for 2 I lose these variables (iPython does mitigate the pain here somewhat). Hence, I reload() modules into 2 when they are changed.
> 
> 
> 
> I use ipdb a lot in 2. I usually don't feel comfortable with virgin code or a debug fix that hasn't been stepped through with the debugger.
> 
> 
> 
> Is there something wrong with this work flow? I understand most python experts avoid reload(). So what are they doing that I'm not? I love the ability of Python to quickly let you dive deep into your code and set up a difficult case with 2, it's hard to imagine giving this up, and it's hard to imagine using it without reload(). 
> 
> 
> 
> Thanks for any tips.

Thanks for the tips guys.

One thing re: editors and interactive environments. I'm not a huge emacs fan (ducking) and I really like iPython.

In order to avoid calling reload, I've changed my workflow to the following. 

1) The "real" code
2) The unit tests
3) A scratch script

Then, I launch iPython, which can intellisense launch 3 easily. Then I make whatever changes I need to 1-3 to make a baby step forward, close iPython, and repeat. 

This seems to preserve the easy-to-dive-into, play-around-with-it fun that is Python without forcing me to call reload(). I suspect I'm now a bit more close to what the "experts" are doing.

Thanks again, I love kibbutzing about work-flow, toys, etc.






More information about the Python-list mailing list