A formatter extension with support for python files and notebook cell. Feel free to open an issue to tell me what feature else do you need since it's a preview version.
Note:
- This extension is supported for all actively supported versions of the python language (i.e., python >= 3.8(EOL: 2024-10)).
Setting the following can enable this formatter quickly.
"[python]": {
"editor.formatOnSaveMode": "file",
"editor.formatOnSave": true,
"editor.defaultFormatter": "eeyore.yapf",
"editor.formatOnType": false
}
- Install
yapf
package from pip in following. This is optional but recommended way, else it will use the bundledyapf=0.40.2
pip install yapf
- Select this fotmatter
eeyore.yapf
by adding the following to your vscode settings
"[python]": {
"editor.defaultFormatter": "eeyore.yapf"
}
- Enable format on save by adding the following
"[python]": {
"editor.formatOnSave": true
}
Use yapf.interpreter
property to select a python interpreter that 3.8 or higher to run this tool by subprocess
Choose the mode by the following
- Use file mode
"[python]": {
"editor.formatOnSaveMode": "file"
}
- Use modifications mode
"[python]": {
"editor.formatOnSaveMode": "modifications"
}
- Format on cell execution
"notebook.formatOnCellExecution": true
- Format on save
"notebook.formatOnSave.enabled": true
Note this setting has to be in the global scope of settings.json
, not in a [python]
block.
- Set style by the following vscode settings which is equal to
yapf --style '{based_on_style: pep8, indent_width: 2}'
"yapf.args": ["--style", "{based_on_style: pep8, indent_width: 2}"]
- Use a style file, like
.style.yapf
,setup.cfg
,pyproject.toml
,~/.config/yapf/style
. For details, see google/yapf
"yapf.args": ["--style", "/home/example/.yapf"]
This extension supports the following magic functions by default
"capture",
"prun",
"pypy",
"python",
"python3",
"time",
"timeit"
Other magic functions like %matplotlib inline, you need to add it to the yapf.cellMagics
property.
"yapf.cellMagics": ["matplotlib inline"]