Managing import statements

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Shane Hathaway

    #1

    Managing import statements

    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
  • Giovanni Bajo

    #2
    Re: Managing import statements

    Shane Hathaway wrote:
    [color=blue]
    > Here's the real problem: maintaining import statements when moving
    > sizable blocks of code between modules is hairy and error prone.[/color]


    You can also evaluate a solution like this:


    --
    Giovanni Bajo


    Comment

    Working...