You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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.
The text was updated successfully, but these errors were encountered:
…sue6940)
Since Python 2.7 and 3.5, `typing.ByteString` was defined as an alias for
`bytes | bytearray | memoryview`, and `bytes` was also accepted as a shorthand
for this, so we have `bytes` sprinkled all over the codebase. But then PEP-688
reversed all of that by deprecating `typing.ByteString` and its successor
`collections.abc.ByteString` in Python 3.12 (as well as the `bytes` shorthand)[1],
and removing it completely in Python 3.14. That leaves us with a couple of
problems, namely defining something useful that spans py3.8-py3.13 and keeps
pytype happy, and finding all of the instances where `bytes` doesn't really mean
`bytes`. The current successor to all of this is `collections.abc.Buffer` in
Python 3.12 (or `typing_extensions.Buffer` in previous versions). However, the
current CI does type checking using Python 3.11 (so the former is not avaiable),
and pytype has issues with importing `typing_extensions.Buffer`[2].
The good news is we don't need to deal with this mess immediately, since the
type annotation evaluation is delayed to the type checking phase, and we're
making no effort at supporting it in all supported versions of Python. So by
delaying the import of this particular symbol, we can still use it for type
checking purposes, but can start assessing Python 3.14 problems without doing a
lot of extra work. Putting this on stable will allow people interested in 3.14
to work on it 4-5 extra months earlier (and apparently there's some interest).
[1] https://peps.python.org/pep-0688/#no-special-meaning-for-bytes
[2] google/pytype#1772
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.The text was updated successfully, but these errors were encountered: