Skip to main content

`shed` canonicalises Python code.

Project description


shed canonicalises Python code. Shed your legacy, stop bikeshedding, and move on. Black++

What does it do?

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 automate.

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.



  • Runs autoflake, to remove unused imports and variables
  • Runs pyupgrade, with autodetected minimum version >= py36
  • Runs isort, with autodetected first-party imports and --ca --profile=black args
  • Runs black, with autodetected minimum version >= py36
  • Formats code blocks in docstrings, markdown, and restructured text docs (like blacken-docs).
  • If shed --refactor, also runs pybetter to fix style issues, teyit to update deprecated unittest methods, and com2ann to 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 first-party import. src layout packages are also automatically detected, i.e. the foo in any paths like .../src/foo/

Using with pre-commit

If you use pre-commit, you can use it with Shed by adding the following to your .pre-commit-config.yaml:

- repo:
  rev: 0.2.4
  - id: shed

This is often considerably faster for large projects, because pre-commit can avoid running shed on unchanged files.


Patch notes can be found in

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for shed, version 0.2.4
Filename, size File type Python version Upload date Hashes
Filename, size shed-0.2.4-py3-none-any.whl (18.5 kB) File type Wheel Python version py3 Upload date Hashes View
Filename, size shed-0.2.4.tar.gz (6.9 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page