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 basically black plus autoflake plus isort plus pyupgrade plus some custom fixers.

shed is all about convention over configuration. It's 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.

Only works in git repos, because version control is great and so is git ls-files, or in single-file mode.

Features

shed...

  1. Runs autoflake, to remove unused imports and variables, and expand star-imports
  2. Runs pyupgrade, with autodetected minimum version >= py36
  3. Runs isort, with autodetected first-party imports and --ca --profile=black args
  4. Runs black, with autodetected minimum version >= py36
  5. (WIP) Runs some custom fixers based on flake8-bugbear
  6. 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.

First-party import detection is disabled in single-file mode. 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.

Changelog

0.1.1 - 2020-07-10

  • combine "as" imports with isort on a single line

0.1.0 - 2020-07-09

  • automatic and isolated isort configuration. I am now happy to recommend that you try shed!

0.0.5 - 2020-05-29

  • better handling of permissions issues or deleted files

0.0.4 - 2020-05-13

  • compatible with pyupgrade==2.4

0.0.3 - 2020-04-23

  • compatible with pyupgrade==2.2

0.0.2 - 2020-03-08

  • usable CLI
  • better isort autoconfig

0.0.1 - 2020-02-15

  • project kickoff

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

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

shed-0.1.1-py3-none-any.whl (16.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: shed-0.1.1.tar.gz
  • Upload date:
  • Size: 4.6 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.1.0 requests-toolbelt/0.9.1 tqdm/4.47.0 CPython/3.8.3

File hashes

Hashes for shed-0.1.1.tar.gz
Algorithm Hash digest
SHA256 50bca584af9a63730abb3e112cc277142acb9d2052c17e93a5096610441b802b
MD5 10ea844e820455d77ded85f74ec50b59
BLAKE2b-256 6e6415a0869434e7cfb2cfbff09987d37384d377d8d3fb9f0256ad3fe2d2598f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: shed-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 16.6 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.1.0 requests-toolbelt/0.9.1 tqdm/4.47.0 CPython/3.8.3

File hashes

Hashes for shed-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 f4b6270e08a3892066859f32cf4775b068949cf07f6a637f6226a7ea1b28dea7
MD5 595159072c6a7b782a950dcfac50b04c
BLAKE2b-256 ca85a09313eb37e006989825af2682bc7f060ef798710fa07412a63f648e7bec

See more details on using hashes here.

Supported by

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