YAPF is supported by multiple editors via community extensions or plugins.
Use the File Watchers
plugin to run YAPF against a file when you perform a save.
- Install the File Watchers Plugin
- Add the following
.idea/watcherTasks.xml
to your project. If you already have this file just add theTaskOptions
section from below. This example uses Windows and a virtual environment, modify theprogram
option as appropriate.<?xml version="1.0" encoding="UTF-8"?> <project version="4"> <component name="ProjectTasksOptions"> <TaskOptions isEnabled="true"> <option name="arguments" value="-i $FilePathRelativeToProjectRoot$" /> <option name="checkSyntaxErrors" value="true" /> <option name="description" /> <option name="exitCodeBehavior" value="ERROR" /> <option name="fileExtension" value="py" /> <option name="immediateSync" value="true" /> <option name="name" value="yapf" /> <option name="output" value="" /> <option name="outputFilters"> <array /> </option> <option name="outputFromStdout" value="false" /> <option name="program" value="$PROJECT_DIR$/.venv/Scripts/yapf.exe" /> <option name="runOnExternalChanges" value="true" /> <option name="scopeName" value="Project Files" /> <option name="trackOnlyRoot" value="false" /> <option name="workingDir" value="$Projectpath$" /> <envs /> </TaskOptions> </component> </project>
IPython supports formatting lines automatically when you press the <Enter>
button to submit the current code block.
Make sure that the YAPF module is available to the IPython runtime:
pip install ipython yapf
pipx example:
pipx install ipython
pipx inject ipython yapf
Add following to ~/.ipython/profile_default/ipython_config.py
:
c.TerminalInteractiveShell.autoformatter = 'yapf'
VSCode has deprecated support for YAPF in its official Python extension in favor of dedicated formatter extensions.
- Install EeyoreLee's yapf extension.
- Install the yapf package from pip.
pip install yapf
- Add the following to VSCode's
settings.json
:"[python]": { "editor.formatOnSaveMode": "file", "editor.formatOnSave": true, "editor.defaultFormatter": "eeyore.yapf" # choose this extension },