diff код Python: игнорирование только нейтральных (PEP8) изменений пробелов

Я хочу diff -u файлы кода Python, в которых целевая версия получила некоторую чистку, в основном небольшое изменение пробелов из-за PEP8, но с небольшими существенными изменениями (включая отступы и даже пробелы в строках).

Как мне лучше всего получить разницу для просмотра только существенных изменений или для создания патча только для радиолюбителей?

Пример теста diff ИСТОЧНИК:

def f(a, b = 0):
    c = a*2
    c+=b%37
    if a//7 + ( b&0x3 ) ==7 :
        c+= 8
    print "indentlevel"
    return a^b+c

и diff TARGET:

def f(a, b=0):
    c = a * 2
    c += b % 37
    if a // 7 + (b & 0x3) == 7:
        if a - b > 5:
            c += 8
    print "indent level"
    return a ^ b + c

--ignore-tab-expansion, --ignore-trailing-space, --ignore-space-change, --ignore-all-space, --ignore-blank-lines GNU diff не подходят для этого.

Примечание: дается требование смешанных изменений. (Двухэтапное редактирование в будущем во многих случаях даже нецелесообразно)


person kxr    schedule 15.03.2016    source источник
comment
А как насчет git diff -w?   -  person Jérôme    schedule 15.03.2016
comment
Разве это не --ignore-all-space, о котором он упомянул?   -  person Mathias711    schedule 15.03.2016
comment
Разве нельзя передать оба кода с помощью autopep8, а затем сравнить их?   -  person Bernardo Meurer    schedule 15.03.2016
comment
@Bernard, это действительно неплохо для первой задачи (обзор существенных изменений), когда нет изначально толерантного метода сравнения. Просто он не может создать, возможно, патч, который можно применить к исходному / подобному SOURCE файлу (например, к основному дереву без обновления). Даже patch --ignore-whitespace --force не прошел здесь все тестовые блоки, хотя это была просто проблема с пробелами в строке.?   -  person kxr    schedule 16.03.2016