У меня есть файл Python с многострочным оператором импорта:
from itertools import (
accumulate,
chain,
combinations,
combinations_with_replacement,
compress,
count,
islice,
product
)
, из которого я пытаюсь удалить неиспользуемые операции импорта, сначала изменив оператор многострочного импорта на однострочный импорт:
isort -sl totest.py
autoflake --remove-all-unused-imports --remove-unused-variables -i totest.py
Он отлично работает в командной строке, но при использовании File Watchers в Intellij он не запускает autoflake при сохранении файла в первый раз. В основном, чтобы обойти это, мне нужно:
- Сделать некоторые изменения, например, добавить пробел
- Сохранить файл
Он форматируется так:
from itertools import accumulate
from itertools import chain
from itertools import combinations
from itertools import combinations_with_replacement
from itertools import compress
from itertools import count
from itertools import islice
from itertools import product
А затем сделайте еще одно изменение
- Сохранить файл
- И лишний импорт будет удален
Шаги 4 и 5 являются избыточными.
Интересно, в чем может быть причина и где мне сообщить об этом? Команде IDEA Intellij, в isort или куда?
Вот мой watchers.xml
для импорта в Intellij.
<TaskOptions>
<TaskOptions>
<option name="arguments" value="--remove-all-unused-imports --remove-unused-variables -i $FilePath$" />
<option name="checkSyntaxErrors" value="true" />
<option name="description" />
<option name="exitCodeBehavior" value="ERROR" />
<option name="fileExtension" value="py" />
<option name="immediateSync" value="false" />
<option name="name" value="Remove unused variables and imports" />
<option name="output" value="$FilePath$" />
<option name="outputFilters">
<array />
</option>
<option name="outputFromStdout" value="false" />
<option name="program" value="autoflake" />
<option name="runOnExternalChanges" value="true" />
<option name="scopeName" value="Project Files" />
<option name="trackOnlyRoot" value="false" />
<option name="workingDir" value="" />
<envs />
</TaskOptions>
<TaskOptions>
<option name="arguments" value="-sp $$ProjectFileDir$/.isort.cfg $FilePath$" />
<option name="checkSyntaxErrors" value="true" />
<option name="description" />
<option name="exitCodeBehavior" value="ERROR" />
<option name="fileExtension" value="py" />
<option name="immediateSync" value="false" />
<option name="name" value="Organize imports" />
<option name="output" value="$FilePath$" />
<option name="outputFilters">
<array />
</option>
<option name="outputFromStdout" value="false" />
<option name="program" value="isort" />
<option name="runOnExternalChanges" value="true" />
<option name="scopeName" value="Project Files" />
<option name="trackOnlyRoot" value="false" />
<option name="workingDir" value="" />
<envs />
</TaskOptions>
<TaskOptions>
<option name="arguments" value="--config="$ProjectFileDir$"/pyproject.toml $FilePath$" />
<option name="checkSyntaxErrors" value="true" />
<option name="description" />
<option name="exitCodeBehavior" value="ERROR" />
<option name="fileExtension" value="py" />
<option name="immediateSync" value="false" />
<option name="name" value="Format code (with Black)" />
<option name="output" value="$FilePath$" />
<option name="outputFilters">
<array />
</option>
<option name="outputFromStdout" value="false" />
<option name="program" value="black" />
<option name="runOnExternalChanges" value="true" />
<option name="scopeName" value="Project Files" />
<option name="trackOnlyRoot" value="false" />
<option name="workingDir" value="" />
<envs />
</TaskOptions>
</TaskOptions>