Skip to main content

Pimp My Repo

PyPI CI codecov Ruff Type checked: mypy

🧙🏼‍♂️ One command to modernize them all.

Strict linting, type checking, and CI for your legacy Python repo, with near-zero manual work. Run it once in your repo root — it creates its own local branch (nothing is pushed), so you can always walk away:

uvx pimp-my-repo

Alternatively, hand it off to your LLM — it can run PMR, review the result with full knowledge of the codebase, and clean up anything the automated run got slightly wrong:

📋 LLM prompt (click to expand)
From the repo root, on a clean branch, run `uvx pimp-my-repo`.

When the run finishes, read the output and follow any instructions printed.
Since you know this repo's structure, conventions, and goals, review the
created branch and fix anything that looks wrong or misconfigured — CI jobs,
pre-commit hooks, justfile recipes, etc.

If the run failed:
  1. Find and inspect the log file it mentions.
  2. If the failure has a straightforward fix in the repo's own code
     (e.g. a broken import, a missing config key, an incompatible
     dependency), go back to the original branch, delete the PMR branch,
     apply the minimal fix on a new branch, then re-run `uvx pimp-my-repo`
     from there.
  3. If the failure looks like a PMR bug or something you can't easily fix,
     stop and report what you found.

For context and reference on PMR, see https://github.com/asaf-kali/pimp-my-repo/blob/main/README.md.

Why legacy repos stay legacy

Adopting strict linting and type checking sounds great — until you run Ruff or Mypy for the first time and see 17,000 violations. Fixing them all before you can enforce a single rule isn't practical, so the tools stay off or "loose," and the debt compounds.

The baseline approach

pimp-my-repo skips the manual fix step entirely:

  1. Configures tools in strict mode: Ruff with all rules enabled, Mypy with --strict (or ty with error-on-warning).
  2. Suppresses all existing violations: automatically adds # noqa and # type: ignore / # ty: ignore to every current offender.
  3. Commits the result: you get a clean, passing CI baseline immediately.

New code must comply from day one. Legacy violations are silenced but visible; fix them incrementally, at your own pace, without blocking anyone.

What gets added

  • 🚀 uv — modern dependency management
  • ✨ Ruff — linting and formatting, strict mode, all existing violations suppressed
  • 🐍 Mypy — static type checking, strict mode, all existing errors suppressed
  • ⚡ ty (opt-in via --ty) — Astral's fast type checker as a drop-in alternative to mypy
  • 🏖️ pre-commit — hooks to enforce quality before every commit
  • 🎢 just — task runner with install, test, and lint recipes out of the box
  • 🏗️ CI (coming soon) — GitHub Actions or GitLab Pipeline configuration

Using ty instead of mypy

Pass --ty to replace the mypy boost with ty:

uvx pimp-my-repo --ty

ty runs dramatically faster than mypy and catches a different (often broader) set of type errors.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Release files for pimp-my-repo 0.5.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pimp-my-repo 0.5.2
File Size Uploaded
pimp_my_repo-0.5.2.tar.gz 170.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pimp-my-repo 0.5.2
File Interpreter ABI Platform
pimp_my_repo-0.5.2-py3-none-any.whl Python 3 none any Details

Total release size: 232.0 kB

Release files / pimp_my_repo-0.5.2.tar.gz

Download URL pimp_my_repo-0.5.2.tar.gz
Size 170.5 kB
Tags Source
SHA-256 checksum
How to use checksums
86383a56be9908c40411d59a28e7a8e0bab1246ce1cb893ac9b983c9725517ba
BLAKE2b-256 checksum
How to use checksums
4133e647651c6b718ca19f06bfe77479d42b1e6f349e71b50e19962aacd092b1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on May 15, 2026.

Transparency log

Release files / pimp_my_repo-0.5.2-py3-none-any.whl

Download URL pimp_my_repo-0.5.2-py3-none-any.whl
Size 61.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b8bedeef3eba7cf7bb9bc7c1d7789b9cfd60599a9794ddc1e1fda56afe5a8595
BLAKE2b-256 checksum
How to use checksums
a5a69e4e4dcb8ae872fb0c34a21e69c01628dfce8479011bd94a81d4f7dff494
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on May 15, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.5.2 This release

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.15

2 release files

0.4.14

2 release files

0.4.13

2 release files

0.4.12

2 release files

0.4.11

2 release files

0.4.10

2 release files

0.4.9

2 release files

0.4.8

2 release files

0.4.7

2 release files

0.4.6

2 release files

0.4.5

2 release files

0.4.4

2 release files

0.4.3

2 release files

0.4.2

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.9

2 release files

0.3.8

2 release files

0.3.7

2 release files

0.3.6

2 release files

0.3.5

2 release files

0.3.4

2 release files

0.3.3

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.2.12

2 release files

0.2.11

2 release files

0.2.7

2 release files

0.2.6

2 release files

0.2.5

2 release files

0.2.4

2 release files

0.2.2

2 release files

0.2.0

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page