shed canonicalises Python code. Shed your legacy, stop bikeshedding, and move on. Black++
shed is the maximally opinionated autoformatting tool. It's all about
convention over configuration,
and designed to be a single opinionated tool that fully canonicalises my
code - formatting, imports, updates, and every other fix I can possibly
There are no configuration options at all, but if the defaults aren't for you that's OK - you can still use the underlying tools directly and get most of the same effect... though you'll have to configure them yourself.
shed must either be run in a git repo to auto-detect the files to format,
or explicitly passed a list of files to format on the command-line.
autoflake, to remove unused imports and variables
pyupgrade, with autodetected minimum version >= py36
isort, with autodetected first-party imports and
black, with autodetected minimum version >= py36
shed --refactor, also runs
pybetterto fix style issues,
teyitto update deprecated
com2annto convert type comments to annotations.
The version detection logic is provided by
black, with an extra step to discard
versions before Python 3.6.
If you run
shed in a Git repository, the name of the root directory is assumed to be a
packages are also automatically detected, i.e. the
foo in any paths like
We recommend using
jupytext to save your notebooks in
in which case
shed supports them natively. For a quick-and-dirty workflow,
you can use
nbqa shed notebook.ipynb -
nbqa works for any linter or formatter.
If you use pre-commit, you can use it with Shed by
adding the following to your
minimum_pre_commit_version: '2.9.0' repos: - repo: https://github.com/Zac-HD/shed rev: 0.4.2 hooks: - id: shed # args: [--refactor, --py39-plus] types_or: [python, markdown, rst]
This is often considerably faster for large projects, because
can avoid running
shed on unchanged files.
pyupgrade's careful approach to converting string formatting
code. If you want a more aggressive refactoring tool and don't mind checking
for breaking changes, check out
Patch notes can be found in