Skip to content

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

Description

@petercorke

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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    tech-debtKnown technical debt / deferred cleanup, not a live bug

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions