Search code examples
pythonfunctiondebuggingwing-ide

Execute function body ignoring certain lines without comments (Python)?


I have a couple of functions written in a single Python file. They perform a sequence of steps on a file-based dataset. My workflow:

  • After I finished coding a part of the function's body, I run the function to see how it goes.
  • It may break at a certain point.
  • I fix the code and re-run the function.

The problem is that when I re-run the function, it will execute the lines that were already completed successfully. Yet I want to be able to start not from the beginning but rather from an arbitrary point. This is because the whole function runs for several minutes and it would be a waste time to wait for it to complete.

I could implement "checks" to see whether this operation is required (e.g., don't create a file if it already exists), but this would imply adding a lot of new validation code (e.g., make sure that the existing file does contain the content needed); in reality, my function will be run on a dataset in known format and the whole function should be executed.

The most obvious solution is to comment out the parts that were executed successfully, but it's a hustle and I got tired of commenting and uncommenting parts as I move forwards and the function gets larger.

Are there are any better approaches than commenting out lines for ignoring certain part of the function's body when executing?

I am on Wing IDE if this has something to do with the debugging tricks in an IDE itself.


Solution

  • Wing can move the program counter to a different line in the function via the right-click popup menu, but you'd need to do this every time you run the function. I think a better approach is to refactor the function into smaller functions -- then you can comment out or conditionalize only the function calls. You could also write tests that call some of the functions and not others.