Skip to content

Make strict_optional opt out for mesonbuild, not opt in - #15954

Open
bonzini wants to merge 9 commits into
mesonbuild:masterfrom
bonzini:mypy-strict-optional
Open

Make strict_optional opt out for mesonbuild, not opt in#15954
bonzini wants to merge 9 commits into
mesonbuild:masterfrom
bonzini:mypy-strict-optional

Conversation

@bonzini

@bonzini bonzini commented Jun 23, 2026

Copy link
Copy Markdown
Contributor

I'm not too interested in getting this forward, but I can at least try to avoid making it worse.

Fix some of the lowest hanging fruit and list all failing modules in .mypy.ini.

Here are the remaining files with 10 or less errors (80% of the files, 25% of the errors):

mesonbuild/scripts/coverage.py 10
mesonbuild/ast/introspection.py 10
mesonbuild/interpreter/dependencyfallbacks.py 9
mesonbuild/dependencies/python.py 9
mesonbuild/dependencies/configtool.py 9
mesonbuild/msetup.py 8
mesonbuild/modules/python.py 8
mesonbuild/modules/__init__.py 8
mesonbuild/interpreterbase/decorators.py 8
mesonbuild/dependencies/dev.py 8
mesonbuild/compilers/mixins/clike.py 8
mesonbuild/utils/universal.py 7
mesonbuild/dependencies/misc.py 7
mesonbuild/compilers/rust.py 7
mesonbuild/compilers/mixins/visualstudio.py 7
mesonbuild/cmake/interpreter.py 7
mesonbuild/linkers/detect.py 6
mesonbuild/dependencies/qt.py 6
mesonbuild/wrap/wrap.py 5
mesonbuild/scripts/scanbuild.py 5
mesonbuild/msubprojects.py 5
mesonbuild/modules/pkgconfig.py 5
mesonbuild/compilers/d.py 5
mesonbuild/options.py 4
mesonbuild/modules/cmake.py 4
mesonbuild/mintro.py 4
mesonbuild/dependencies/boost.py 4
mesonbuild/compilers/detect.py 4
mesonbuild/cmake/toolchain.py 4
mesonbuild/modules/_qt.py 3
mesonbuild/modules/gnome.py 3
mesonbuild/interpreter/interpreterobjects.py 3
mesonbuild/dependencies/pkgconfig.py 3
mesonbuild/dependencies/detect.py 3
mesonbuild/dependencies/base.py 3
mesonbuild/compilers/mixins/islinker.py 3
mesonbuild/cmake/tracetargets.py 3
mesonbuild/wrap/wraptool.py 2
mesonbuild/modules/cuda.py 2
mesonbuild/modules/codegen.py 2
mesonbuild/dependencies/ui.py 2
mesonbuild/dependencies/framework.py 2
mesonbuild/compilers/mixins/clang.py 2
mesonbuild/compilers/mixins/apple.py 2
mesonbuild/mparser.py 1
mesonbuild/interpreterbase/baseobjects.py 1
mesonbuild/dependencies/mpi.py 1
mesonbuild/dependencies/hdf5.py 1
mesonbuild/dependencies/dub.py 1
mesonbuild/compilers/vala.py 1
mesonbuild/compilers/mixins/elbrus.py 1
mesonbuild/compilers/mixins/arm.py 1
mesonbuild/compilers/cython.py 1
mesonbuild/compilers/cuda.py 1

The worst offenders (10% of the files, 50% of the issues) are

mesonbuild/backend/ninjabackend.py 150
mesonbuild/backend/backends.py 118
mesonbuild/mformat.py 90
mesonbuild/backend/vs2010backend.py 68
mesonbuild/scripts/depfixer.py 48
mesonbuild/backend/xcodebackend.py 43

and it's likely that something clever will fix most of the issues.

@bonzini bonzini added this to the 1.13 milestone Jun 23, 2026
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
mypy is now able to deal with extra optional arguments.
Also export env_validator instead of fishing it out of ENV_KW.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
@bonzini
bonzini force-pushed the mypy-strict-optional branch from 9ab76ec to 4ba2a06 Compare August 11, 2026 11:59
@bonzini
bonzini marked this pull request as ready for review August 11, 2026 12:32
@bonzini
bonzini force-pushed the mypy-strict-optional branch from 4ba2a06 to f7b45d1 Compare August 11, 2026 14:28
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
There are roughly 70 modules that fail mypy without implicit optional,
versus 200 that do.  mesonbuild.compilers is the only one that is uniformly
pretty bad; mesonbuild.dependencies comes close but a lot of modules
have only 1-2 failures.  List everything else in .mypy.ini one by one.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
@bonzini
bonzini force-pushed the mypy-strict-optional branch from f7b45d1 to 206652c Compare August 11, 2026 20:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant