Skip to content

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

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

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 added 9 commits June 23, 2026 20:22
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>
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 added this to the 1.13 milestone Jun 23, 2026
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