2016-10-25 2 views
4

Я бегу 2to3 -f all -f idioms -f buffer -f set_literal -f ws_comma foo.py2to3 говорит: "Никаких изменений не требуется", а затем "файлы, которые должны быть изменены"

Выход:

RefactoringTool: No changes to foo.py 
RefactoringTool: Files that need to be modified: 
RefactoringTool: foo.py 

Содержание foo.py:

print("Hi") 

Как я интерпретировать этот вывод?

ответ

3

Модификация инициируется the unicode fixer. Этот фиксаж будет интерпретировать содержимое каждой строки литералов, и пытается повторно избежать недопустимых последовательностей Unicode, и удалить U/U строки префикс: (? Ошибка)

def transform(self, node, results): 
    ... 
    elif node.type == token.STRING: 
     # 1. Replace the invalid \u sequences. 
     val = node.value 
     if not self.unicode_literals and val[0] in '\'"' and '\\' in val: 
      val = r'\\'.join([ 
       v.replace('\\u', r'\\u').replace('\\U', r'\\U') 
       for v in val.split(r'\\') 
      ]) 

     # 2. Strip the leading `u` in u"...." 
     if val[0] in 'uU': 
      val = val[1:] 

     # 3. If the whole string is the same, return the original node. 
     if val == node.value: 
      return node # <-------------- 

     # 4. Otherwise, create a new node. 
     new = node.clone() 
     new.value = val 
     return new 

По какой-то неизвестной причине, даже если исходный узел возвращается на шаге 3, lib2to3 все еще интерпретирует это как изменение дерева маркеров, поэтому он говорит «Файлы, которые необходимо изменить». Однако исходный код тот же, поэтому есть «Нет изменений в foo.py».

Если шаг 3 возвращает None вместо этого, он действительно скажет: «Нет файлов, которые необходимо изменить».

Поврежденные файлы будут просто перезаписаны исходным вводом. Так что ошибка безвредна.

2

Согласно Steven D'Aprano, это ошибка, а вторая строка текста в вашем выводе должно быть истолковано как:

Файлы, которые включают в себя то, что фиксаж небезразлично, или нет он модифицируется.

В вашем случае код foo.py полностью совместим с Python 3 и никаких изменений не требуется, поскольку первая строка состояния вывода.

+0

«Что-то, о чем заботится фиксатор» ... что это значит? Я должен заботиться? – JETM

+2

@JETM Чтобы уточнить, это значит, что файл был проверен, а не на то, что необходимы изменения –

+2

И я подумал, что * * * сосал в пользовательском интерфейсе. ;) – JETM

 Смежные вопросы

  • Нет связанных вопросов^_^