google / pytype

A static type analyzer for Python code
https://google.github.io/pytype
Other
4.78k stars 281 forks source link

"No Buffer in module typing, referenced from 'inferred + unknowns'" when importing from typing_extensions #1772

Open mharbison72 opened 2 months ago

mharbison72 commented 2 months ago

Recent versions of pytype seem to have settled on from typing_extensions import Buffer and then using Buffer for things that can be bytes or memoryview, or... Here's the baseline file where it generates such a *.pyi:

node_py-start.zip

That runs successfully as part of a larger project, so I ran merge-pyi on it, and had to manually add the typing definitions for a few of the functions that used Buffer, due to the fact they're just aliased here instead of defined as functions. (We also want to narrow the allowed usage to disallow str and the extra arguments):

node_py-annotated.zip

That generates a huge error output in the *.pyi file:

node_pyi-error.zip

I first noticed this with pytype==2023.11.21, but it looks like the same error in 2024.09.13, both running Python 3.10.11. But when pytype annotates similar to this on its own, everything seems to work. The idea behind delaying the typing_extensions import is so that we don't have to vendor a copy of it for production builds, and can rely on whatever pytype provides when it is run.