Skip to main content

`shed` canonicalises Python code.

Project description

shed

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.

Features

shed...

  • 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/__init__.py.

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:

repos:
- repo: https://github.com/Zac-HD/shed
  rev: 0.3.8
  hooks:
  - id: shed

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

Changelog

Patch notes can be found in CHANGELOG.md.

Project details


Download files

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

Source Distribution

shed-0.3.8.tar.gz (20.0 kB view details)

Uploaded Source

Built Distribution

shed-0.3.8-py3-none-any.whl (19.8 kB view details)

Uploaded Python 3

File details

Details for the file shed-0.3.8.tar.gz.

File metadata

  • Download URL: shed-0.3.8.tar.gz
  • Upload date:
  • Size: 20.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.6.3 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.0 CPython/3.8.11

File hashes

Hashes for shed-0.3.8.tar.gz
Algorithm Hash digest
SHA256 dcabd27e86b82893a7b79bd7c6401571c105dc553a4d00a3fc32c13a30450ded
MD5 5d88b2579d9f6c79f15a43e8f2bfce31
BLAKE2b-256 0c13026723e712535ce3f47fc4ab6031afeaf25c6cda298f09868387b8d60f0d

See more details on using hashes here.

Provenance

File details

Details for the file shed-0.3.8-py3-none-any.whl.

File metadata

  • Download URL: shed-0.3.8-py3-none-any.whl
  • Upload date:
  • Size: 19.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.6.3 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.0 CPython/3.8.11

File hashes

Hashes for shed-0.3.8-py3-none-any.whl
Algorithm Hash digest
SHA256 147a9d4fe81b8aebf8a375e12a1a3663fac69db4b2e13a3594eb29b5c1c280cc
MD5 70a7daa0d7314dbe2b8a3c2d621c02fe
BLAKE2b-256 04156a5837fee06958b664793676807f49296fd4e0315df4f2dcca39710ac69c

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page