Skip to main content

check-oldies is a collection of programs that warn about old things in code:

  • check-fixmes warns about old FIXME or TODO annotations.

    If we did not regularly check, we would forget about that FIXME note we wrote a few months ago. check-fixmes warns us about it. It is then our choice to act: fix it, remove it (because we decided it is not worth to fix, or because it is not relevant anymore), or postpone it.

  • check-future-tags warns about orphan FUTURE tags.

    We sometimes plan a broad modification that will span multiple files. Instead of littering FIXME annotations everywhere, we set a single FIXME annotation and a FUTURE-xxx tag on the same line. Then, wherever we need to make a modification, we only mention this FUTURE-xxx tag without any FIXME. If we ever remove the FIXME but keep a FUTURE-xxx tag somewhere, it is a mistake and this tool warns us. (See documentation <https://check-oldies.readthedocs.io/en/latest/check_future_tags.html> for an example.)

  • check-branches warns about old branches, surprisingly.

  • forget-me-not runs both programs above on a set of Git repositories and sends warning e-mails to authors of soon-to-be-old annotations or branches.

In other words: check-fixmes, check-branches and check-future-tags can be run as part of the test suite of each project (by a continuous integration system such as Jenkins). They break builds when they detect old things. On the other hand, forget-me-not can be run once a week on a set of projects to warn authors that some builds will break soon if they do not take care of their old annotations or branches.

Example output

$ check-fixmes
NOK: Some annotations are too old, or there are orphan FUTURE tags.
jdoe            -  181 days - frobulator/api.py:12: # FIXME (jdoe): we should catch errors
jdoe            -  100 days - frobulator/api.py:25: # TODO: this is slow, use the batch API instead
jsmith          -   12 days - docs/index.rst:1: # FIXME: write documentation before open sourcing
$ check-branches
NOK: Some branches are too old.
john.smith@example.com     -   92 days - jsmith/fix_frobs (https://github.com/Polyconseil/check-oldies/tree/jsmith/fix_frobs), linked to open PR/MR #1 (https://github.com/Polyconseil/check-oldies/pull/1)

Applicability

check-oldies is written in Python but is language-agnostic. It works on Git repositories but could be extended to other version control systems. It integrates with GitHub and GitLab but can do without it, and could be extended to work with other code hosting platforms.

Requirements and installation

You must have Python 3.10 or later, and Git 2.19.0 or later.

Install with pip, preferably in a virtual environment:

$ python3 -m venv /path/to/your/virtualenv
$ source /path/to/your/virtualenv/bin/activate

$ pip install check-oldies

Features, configuration and more

The full documentation has more details about the features and the configuration, examples of the usage of FUTURE tags, how to contribute, etc.

Release files for check-oldies 1.0.1

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

Source distribution (sdist)

Source distribution for check-oldies 1.0.1
File Size Uploaded
check_oldies-1.0.1.tar.gz 39.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for check-oldies 1.0.1
File Interpreter ABI Platform
check_oldies-1.0.1-py3-none-any.whl Python 3 none any Details

Total release size: 61.7 kB

Release files / check_oldies-1.0.1.tar.gz

Download URL check_oldies-1.0.1.tar.gz
Size 39.9 kB
Tags Source
SHA-256 checksum
How to use checksums
c8054005517566aeb72bdfa35969943bdb9c2d3ff621df94e767646dfc89154a
BLAKE2b-256 checksum
How to use checksums
f5e6b68be57513df47086adbf58133bf6490e5db049c390926cddcbacdfa7a78
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

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 Jul 29, 2026.

Transparency log

Release files / check_oldies-1.0.1-py3-none-any.whl

Download URL check_oldies-1.0.1-py3-none-any.whl
Size 21.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2ef811b1d0b2c6e994dfca59384e68eb354b96f4e75d312a0f846b44c753936d
BLAKE2b-256 checksum
How to use checksums
220ea74592b56fd207a499df9c74964c0ae95f16a84097edc37f64343bfa8dc4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

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 Jul 29, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

1.0.1 This release

2 release files

1.0.0

1 release file

0.8.10

1 release file

0.8.9

1 release file

0.8.8

1 release file

0.8.7

2 release files

0.8.6

2 release files

0.8.4

1 release file

0.8.3

2 release files

0.8.2

1 release file

0.8.1

1 release file

0.8.0

2 release files

0.0.0

1 release file

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