Managing import statements

S

Shane Hathaway

Let's talk about the problem I really want help with. I brought up a
proposal earlier, but it was only half serious. I realize Python is too
sacred to accept such a heretical change. ;-)

Here's the real problem: maintaining import statements when moving
sizable blocks of code between modules is hairy and error prone.

I move major code sections almost every day. I'm constantly
restructuring the code to make it clearer and simpler, to minimize
duplication, and to meet new requirements. To give you an idea of the
size I'm talking about, just today I moved around 600 lines between
about 8 modules, resulting in a 1400 line diff. It wasn't just
cut-n-paste, either: nearly every line I moved needed adjustment to work
in its new context.

While moving and adjusting the code, I also adjusted the import
statements. When I finished, I ran the test suite, and sure enough, I
had missed some imports. While the test suite helps a lot, it's
prohibitively difficult to cover all code in the test suite, and I had
lingering doubts about the correctness of all those import statements.
So I examined them some more and found a couple more mistakes.
Altogether I estimate I spent 20% of my time just examining and fixing
import statements, and who knows what other imports I missed.

I'm surprised this problem isn't more familiar to the group. Perhaps
some thought I was asking a newbie question. I'm definitely a newbie in
the sum of human knowledge, but at least I've learned some tiny fraction
of it that includes Python, DRY, test-first methodology, OOP, design
patterns, XP, and other things that are commonly understood by this
group. Let's move beyond that. I'm looking for ways to gain just a
little more productivity, and improving the process of managing imports
could be low-hanging fruit.

So, how about PyDev? Does it generate import statements for you? I've
never succeeded in configuring PyDev to perform autocompletion, but if
someone can say it's worth the effort, I'd be willing to spend time
debugging my PyDev configuration.

How about PyLint / PyChecker? Can I configure one of them to tell me
only about missing / extra imports? Last time I used one of those
tools, it spewed excessively pedantic warnings. Should I reconsider?

Is there a tool that simply scans each module and updates the import
statements, subject to my approval? Maybe someone has worked on this,
but I haven't found the right Google incantation to discover it.

Shane
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Similar Threads


Members online

Forum statistics

Threads
473,744
Messages
2,569,483
Members
44,901
Latest member
Noble71S45

Latest Threads

Top