shed

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

https://github.com/zac-hd/shed

Science Score: 13.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (14.5%) to scientific vocabulary

Keywords from Contributors

fuzzing property-based-testing unit-testing
Last synced: 11 months ago · JSON representation

Repository

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

Basic Info
Statistics
  • Stars: 343
  • Watchers: 7
  • Forks: 24
  • Open Issues: 5
  • Releases: 0
Created over 6 years ago · Last pushed about 1 year ago
Metadata Files
Readme Changelog Funding License

README.md

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 ruff, to remove unused imports and variables, upgrade code, sort imports, and more.
  • Runs black, with autodetected minimum version >= py38
  • Formats code blocks in docstrings, markdown, and restructured text docs (based on blacken-docs).
  • If shed --refactor, also runs com2ann and custom refactoring logic using libcst. See documentation for the codemods in CODEMODS.md

The version detection logic is provided by black. Because shed supports the same versions of Python as upstream, it assumes that the minimum version is Python 3.8.

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.

Jupyter Notebook support

We recommend using jupytext to save your notebooks in .py or .md files, 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.

Using shed in your editor

We recommend using black in your editor instead of shed, since it provides our core formatting logic and shed's extra smarts can be counterproductive while you're actively editing code - for example, removing an "unused" import just after you add it!

Then, when you're done editing, you can run shed from the command-line, pre-commit hooks, and your CI system.

Using shed with pre-commit

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

yaml minimum_pre_commit_version: '2.9.0' repos: - repo: https://github.com/Zac-HD/shed rev: 2025.6.1 hooks: - id: shed # args: [--refactor, --py311-plus] types_or: [python, pyi, markdown, rst]

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

See also

shed inherits 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 flynt.

For Django upgrades, see django-codemod or django-upgrade.

The ssort project sorts the contents of python modules so that statements are placed after the things they depend on, for easier navigation and consistency of design.

Semgrep supports some autofixes, with patterns for a wide variety of languages. This includes a variety of both security and style checks, with manual inspection of results recommended.

Changelog

Patch notes can be found in CHANGELOG.md.

Owner

  • Name: Zac Hatfield-Dodds
  • Login: Zac-HD
  • Kind: user
  • Location: San Francisco
  • Company: Anthropic

Researcher, maintainer of libraries, speaker at conferences, PSF Fellow.

GitHub Events

Total
  • Issues event: 2
  • Watch event: 5
  • Issue comment event: 1
  • Push event: 1
  • Pull request review comment event: 4
  • Pull request review event: 3
  • Pull request event: 2
  • Fork event: 1
  • Create event: 1
Last Year
  • Issues event: 2
  • Watch event: 5
  • Issue comment event: 1
  • Push event: 1
  • Pull request review comment event: 4
  • Pull request review event: 3
  • Pull request event: 2
  • Fork event: 1
  • Create event: 1

Committers

Last synced: about 1 year ago

All Time
  • Total Commits: 242
  • Total Committers: 12
  • Avg Commits per committer: 20.167
  • Development Distribution Score (DDS): 0.339
Past Year
  • Commits: 3
  • Committers: 1
  • Avg Commits per committer: 3.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email Commits
Zac-HD z****s@g****m 160
jakkdl h****b@p****e 36
Cheukting c****o@g****m 16
David R. MacIver d****d@d****m 12
Rudyard Richter r****1@g****m 5
Jack Lee j****2@g****m 4
JoshuaTianYangLiu j****u@s****a 3
Elliot Ford e****d@h****k 2
chaimjfishman 4****n 1
Reid Hochstedler r****h@g****m 1
Leigh Brenecki l@l****u 1
Batuhan Taskaya i****l@g****m 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 11 months ago

All Time
  • Total issues: 69
  • Total pull requests: 43
  • Average time to close issues: about 2 months
  • Average time to close pull requests: 16 days
  • Total issue authors: 34
  • Total pull request authors: 20
  • Average comments per issue: 2.74
  • Average comments per pull request: 1.53
  • Merged pull requests: 31
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 1
  • Pull requests: 2
  • Average time to close issues: about 6 hours
  • Average time to close pull requests: about 23 hours
  • Issue authors: 1
  • Pull request authors: 1
  • Average comments per issue: 3.0
  • Average comments per pull request: 0.0
  • Merged pull requests: 2
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • Zac-HD (22)
  • jakkdl (7)
  • DRMacIver (4)
  • TomFryers (2)
  • phillco (2)
  • OtherBarry (2)
  • danielknell (2)
  • The-Compiler (2)
  • isidentical (1)
  • tclasen (1)
  • saroad2 (1)
  • tommorris (1)
  • 34j (1)
  • and-semakin (1)
  • lmmx (1)
Pull Request Authors
  • jakkdl (12)
  • Cheukting (7)
  • DRMacIver (6)
  • rudyardrichter (2)
  • jacklee1792 (2)
  • OtherBarry (2)
  • jobh (2)
  • timsankara (2)
  • tybug (2)
  • isidentical (1)
  • mariusvniekerk (1)
  • alok (1)
  • EFord36 (1)
  • SimonBiggs (1)
  • reidhoch (1)
Top Labels
Issue Labels
bug (1)
Pull Request Labels

Packages

  • Total packages: 1
  • Total downloads:
    • pypi 31,887 last-month
  • Total docker downloads: 1,098
  • Total dependent packages: 4
  • Total dependent repositories: 37
  • Total versions: 62
  • Total maintainers: 1
pypi.org: shed

`shed` canonicalises Python code.

  • Versions: 62
  • Dependent Packages: 4
  • Dependent Repositories: 37
  • Downloads: 31,887 Last month
  • Docker Downloads: 1,098
Rankings
Docker downloads count: 2.3%
Dependent packages count: 2.4%
Dependent repos count: 2.4%
Downloads: 2.8%
Stargazers count: 3.5%
Average: 3.6%
Forks count: 8.4%
Maintainers (1)
Last synced: 12 months ago

Dependencies

setup.py pypi
  • autoflake *
  • black *
  • com2ann *
  • isort *
  • libcst *
  • pyupgrade *
.github/workflows/ci.yml actions
  • actions/checkout v2 composite
  • actions/setup-python v1 composite
  • actions/setup-python v2 composite