Skip to main content

Applier of fine source code fixes since 2025

Project description

Ick

Ick is lightweight polyglot automation for running language-specific tools (including auto-fixes) and letting developers know what they can improve.

Full documentation at https://ick.readthedocs.io.

The problem

Let's say you have a bunch of repos that might need updating.

Not like "format my code" updating, but things that reduce tech debt like moving from pinned urllib3 1.x to urllib3 2.x. That'd be good, right? But maybe not for everyone. And certainly not right now, because you don't want to block pull requests.

The traditional dev loop generally looks like this:

    /----------------\  push  /----------------\
    |  code          |------->|  integrate     |
    |      build     |        |     test       |
    |          test  |        |        deploy  |
    \----------------/        \----------------/

       inner loop                 outer loop

but that discounts the big-picture software maintenance stuff that healthy projects ought to do, and commonly forget (or accomplish with one-off scripts) on a longer term basis. For that we really ought to keep track of things that aren't "right now" and aren't "today" but are "important, yet not urgent".

    /----------------\  push  /----------------\  stable  /==================\
    |  code          |------->|  integrate     |--------->| tech debt week   |
    |      build     |        |     test       |          |  quantified proj |
    |          test  |        |        deploy  |          |   bootcamp tasks |
    \----------------/        \----------------/          |    deprecations  |
                                                          \==================/
       inner loop                 outer loop                 planning cycle

Ick manages and runs rules to help you update repos on your timeline.

Elevator pitch

ick looks at your source code and gives you an evaluation against a set of rules. Those rules might come from a central team at your work, or a trusted friend, or they might be ones you maintain yourself (like my hobbyhorse, "text files must end with a newline").

If you're ever tempted to make a one-off shell script, or create a scripts/release-check.sh that you run once in a while, then ick is the loose automation framework you're looking for. Ick makes that kind of work easier to scale past a couple of repos.

Ick also has the explicit goal of being able to scale from low-risk, easy changes ("text files should end with a newline") to medium changes ("you should drop Python 3.6 support and sync your GitHub actions matrix") to large ones ("here's the beginning of a refactor to enable testcontainers") or even ones that involve external state. The effort to write rules should be roughly proportional to how complex they are -- easy things should be easy (and fast!), but it's OK for hard things to still be hard.

Who is ick for?

  • Central teams with opinions. For example, at a company, there might be a language team, a testing team, a load-balancing team, and they all might want to let you know if there are deprecations coming.
  • Projects with opinions. Say your ML project has decided to only bless a certain model or license).
  • Developers with multiple repositories they want to keep looking similar.
  • Developers with hobby horses, who are stricter about things others don't (yet) care about.

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

ick-0.8.0.tar.gz (316.7 kB view details)

Uploaded Source

Built Distribution

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

ick-0.8.0-py3-none-any.whl (44.1 kB view details)

Uploaded Python 3

File details

Details for the file ick-0.8.0.tar.gz.

File metadata

  • Download URL: ick-0.8.0.tar.gz
  • Upload date:
  • Size: 316.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for ick-0.8.0.tar.gz
Algorithm Hash digest
SHA256 e3122a593fabd47c32549ba5b2793a01fd59202daf476c4db4eb4bfaf9513ad0
MD5 510bdd708e0e28a1d70b27ea82204ecc
BLAKE2b-256 5d139d09ddc6b9a810f33c3473412c6e0171291553189ce0948d4a26381b17e7

See more details on using hashes here.

Provenance

The following attestation bundles were made for ick-0.8.0.tar.gz:

Publisher: build.yml on advice-animal/ick

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ick-0.8.0-py3-none-any.whl.

File metadata

  • Download URL: ick-0.8.0-py3-none-any.whl
  • Upload date:
  • Size: 44.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for ick-0.8.0-py3-none-any.whl
Algorithm Hash digest
SHA256 37b95805d2018be0cb7ff2362cbf2e0e46ce1adbc947bc67e4af60b75202a4b1
MD5 ff51bfb3227cdb9b1d8ac2bdfe785a1b
BLAKE2b-256 5e9767ec61ff0f62c39a523b34b113e0a64b3c4b8a297edafa0c310cca0b5d03

See more details on using hashes here.

Provenance

The following attestation bundles were made for ick-0.8.0-py3-none-any.whl:

Publisher: build.yml on advice-animal/ick

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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