с помощью линтеров или coverage.py
, вы можете сказать инструменту игнорировать определенные части вашего кода.
например, #pragma: no cover
указывает покрытию не считать ветвь исключения отсутствующей:
except (Exception,) as e: #pragma: no cover
if cpdb(): pdb.set_trace()
raise
Теперь я знаю, что могу исключить определенные фиксаторы из 2to3
. Например, чтобы избежать исправления импорта ниже, я могу использовать 2to3 test_import_stringio.py -x imports
.
Но можно ли использовать аннотации / директивы кода для поддержания исправителя активным, кроме как в определенных местах? Например, этот бит кода уже настроен на работу для 2 и 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
но 2to3
услужливо преобразует, потому что такой директивы / прагмы
А теперь это не сработает в 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
Причина, по которой я спрашиваю, заключается в том, что я хочу избежать подхода большого взрыва. Я намерен по частям проводить рефакторинг кода, начиная с юнит-тестов, для выполнения под 2 и 3.
Я предполагаю, что это невозможно, просто смотрю на мои варианты. Вероятно, в конечном итоге я буду запускать конвертер только при импорте с -f imports
, проверять, что он в итоге делал, делать это вручную в коде, а затем исключать импорт из будущего рассмотрения с помощью -x imports
.