petercorke / petercorke/machinevision-toolbox-python

Type-hint coverage audit: ~75% overall, parameter annotations lagging in several modules

Open
#60 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

tech-debt
Dominant language
Python
Stars
219
Forks
30
Avg merge
12d 23h
Merged PRs (30d)
5

Description

Found 2026-08-10 while reviewing unmerged branches during a cleanup pass. An old typing branch (base commit 2022-10-18, predates the src/-layout restructure) attempted a broader typing pass but is no longer mergeable — its module paths no longer exist. Later, separate efforts did land on main (e.g. acc8222b, 524c7b8c, PR #32/fix/annotations-and-deprecation-warnings), so coverage today is real but partial, not complete.

An AST-based audit of parameter/return annotations across src/machinevisiontoolbox gives:

OVERALL: 54.3% params, 95.4% returns, 74.9% average

Return-type coverage is already strong almost everywhere (many modules at 100%); the gap is almost entirely on parameter annotations. Full per-module breakdown, sorted by average:

Module                       Param %   Return %   Avg %
cvfuncs.py                    100.0%      0.0%     50.0%
ImageCore.py                   30.9%     94.7%     62.8%
Sources.py                     38.0%     91.1%     64.6%
ImageRegionFeatures.py         31.0%    100.0%     65.5%
BagOfWords.py                  39.1%     95.7%     67.4%
ImageBlobs.py                  38.0%    100.0%     69.0%
ImageConstants.py              72.3%     71.4%     71.9%
ImageMultiview.py              68.2%     83.3%     75.8%
ImageIO.py                     58.5%     93.3%     75.9%
ImageWholeFeatures.py          55.6%     97.6%     76.6%
ImageProcessing.py             68.0%     86.4%     77.2%
ImagePointFeatures.py          55.6%    100.0%     77.8%
BundleAdjust.py                56.0%    100.0%     78.0%
VisualServo.py                 63.2%     93.2%     78.2%
Kernel.py                      57.5%    100.0%     78.8%
PointCloud.py                  57.9%    100.0%     78.9%
Camera.py                      61.3%     99.0%     80.1%
ImageColor.py                  60.9%    100.0%     80.4%
ImageFiducials.py              69.6%     94.1%     81.9%
ImageLineFeatures.py           66.7%    100.0%     83.3%
ImageReshape.py                72.8%     96.0%     84.4%
ImageMorph.py                  77.1%    100.0%     88.5%
ImageTensor.py                 77.8%    100.0%     88.9%
ImageSpatial.py                78.7%    100.0%     89.4%
camera_derivatives.py         100.0%    100.0%    100.0%
decorators.py                 100.0%    100.0%    100.0%
docbugs.py                    100.0%    100.0%    100.0%
fiducial.py                   100.0%    100.0%    100.0%
mvtb_types.py                 100.0%    100.0%    100.0%

Fix

Work through the lowest-param-coverage modules first (cvfuncs.py, ImageCore.py, Sources.py, ImageRegionFeatures.py, BagOfWords.py, ImageBlobs.py — all under 40% param coverage), adding modern X | Y / X | None / list[X] annotations per the project's typing convention. No architectural changes needed, just incremental annotation additions per module.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start in src/machinevisiontoolbox/cvfuncs.py, ImageCore.py, Sources.py, ImageRegionFeatures.py, BagOfWords.py, and ImageBlobs.py, comparing their annotations with the project's existing typing convention and fully annotated modules such as mvtb_types.py. Add the missing parameter annotations using the stated modern forms while preserving behavior; done means the six lowest-coverage modules have been addressed.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
computer-vision
Issue type
Refactor
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
52/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.