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:
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):
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.
Recent versions of pytype seem to have settled on
from typing_extensions import Buffer
and then usingBuffer
for things that can bebytes
ormemoryview
, 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 usedBuffer
, due to the fact they're just aliased here instead of defined as functions. (We also want to narrow the allowed usage to disallowstr
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.