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 teyit, on Python 3.9 or later, to replace deprecated unittest methods with the new aliases
  • Runs docformatter, to format and rewrap docstrings
  • Runs pyupgrade, with autodetected minimum version >= py36
  • Runs isort, with autodetected first-party imports and --ca --profile=black args
  • Runs pybetter, applying libCST-based codemods
  • Runs black, with autodetected minimum version >= py36
  • Runs logic inspired by blacken-docs to format code in docstrings (via the shed.docshed function)
  • Iterates those steps until the source code stops changing.

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.2.0
  hooks:
  - id: shed

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.2.0.tar.gz (5.7 kB view details)

Uploaded Source

Built Distribution

shed-0.2.0-py3-none-any.whl (17.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: shed-0.2.0.tar.gz
  • Upload date:
  • Size: 5.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.3.1 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.8.5

File hashes

Hashes for shed-0.2.0.tar.gz
Algorithm Hash digest
SHA256 0c8a797d71c462a9a28772ed6d06158292fd1efc1fecc8cddf4449acc10b6fce
MD5 a558854302c23de7e88e82bf0673dfe4
BLAKE2b-256 83e6b82ac2f6e8ee118d35b212eb66b6bad4b00ef86b0f66da8f2c6a69f3369f

See more details on using hashes here.

Provenance

File details

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

File metadata

  • Download URL: shed-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 17.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.3.1 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.8.5

File hashes

Hashes for shed-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 440054e403f4fcd130661e67ebd6785771118b7e398be464c55d57a5f44d5828
MD5 6a363e5f22381f51c64875c9c4d10be1
BLAKE2b-256 c9ea53d51c2b93c466b22c95b8e5ef45f8cd66eda94be19822ee65affcf2dfdd

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