Support override for attr-defined
errors (something like a promise to mypy that the attr is defined going forward)
#18109
Labels
Feature
There are cases where mypy spits out an
attr-defined
error when accessingbar.foo
; these can be ignore per-use with a# type: ignore[attr-defined]
, however, there doesn't currently seem to be a way to tell mypy thatbar
does indeed definefoo
.In this case, it'd be nice if there was a way to tell mypy that
bar
does definefoo
, so thatbar.foo
can be used without spamming# type: ignore[attr-defined]
comments everywhere.How this is done I don't have an opinion about, but for example, it could be something like:
# type: bar.foo: int
.Pitch
There are multiple useful cases of this:
Although this is not the primary motivation, it would cover the case brought up here: Support hints for dynamically set attributes #15085
This could allow type hinting for attributes added after a class definition. One example would be for users who enjoy using a
TRACE
log level with the logging module. That is, if a user adds aTRACE
logging level to thelogging
module such as shown here: https://stackoverflow.com/questions/2183233/how-to-add-a-custom-loglevel-to-pythons-logging-facilityIn this instance, this would allow use of
logging.trace
andlogging.TRACE
without requiring#type: ignore[attr-defined]
used at every occurrence.In general, this handles the case where you have something like:
mypy
. For example:This gives an
attr-defined
warning, although this import statement works just fine.The text was updated successfully, but these errors were encountered: