1

with either linters or coverage.py, you can tell the tool to ignore certain parts of your code.

for example, #pragma: no cover tells coverage not to count an exception branch as missing:

    except (Exception,) as e:    #pragma: no cover
        if cpdb(): pdb.set_trace()
        raise

Now, I know I can exclude specific fixers from 2to3. For example, to avoid fixing imports below, I can use 2to3 test_import_stringio.py -x imports.

But can use code annotations/directives to keep the fixer active, except at certain locations? For example, this bit of code is already adjusted to work for 2 and 3.

#this import should work fine in 2 AND 3.
try:
    from io import StringIO
except ImportError:
    #pragma-for-2to3:  skip
    from StringIO import StringIO

but 2to3 helpfully converts, because there is no such directive/pragma

And now this won't work in 2:

#this tests should work fine in 2 and 3.
try:
    from io import StringIO
except ImportError:
    #pragma-for-2to3:  skip
    from io import StringIO

Reason I am asking is because I want to avoid a big-bang approach. I intend to refactor code bit by bit, starting with unittests, to run under 2 and 3.

I am guessing this is not possible, just looking at my options. What I'll probably end up doing is to run the converter only on imports with -f imports for example, check what it ended up doing, do that manually myself on the code and then exclude imports from future consideration with -x imports.

JL Peyret
  • 10,917
  • 2
  • 54
  • 73

0 Answers0