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
Currently the numpy.typing module is only available at typing time; now that the stubs have been merged into NumPy we need to also make it available at runtime. See the mailing list discussion here:
Closesnumpy#16550.
This makes `np.typing.ArrayLike` and `np.typing.DtypeLike` available
at runtime in addition to typing time. Some things to consider:
- `ArrayLike` uses protocols, which are only in the standard library
in 3.8+, but are backported in `typing_extensions`. This
conditionally imports `Protocol` and sets `_SupportsArray` to `Any`
at runtime if the module is not available to prevent NumPy from
having a hard dependency on `typing_extensions`. Since e.g. mypy
already includes `typing_extensions` as a dependency, anybody
actually doing type checking will have it set correctly.
- We are starting to hit the edges of "the fiction of the stubs". In
particular, they could just cram everything into `__init__.pyi` and
ignore the real structure of NumPy. But now that typing is available
a runtime, we have to e.g. carefully import `ndarray` from `numpy`
in the typing module and not from `..core.multiarray`, because
otherwise mypy will think you are talking about a different
ndarray. We will probably need to do some shuffling the stubs into
more fitting locations to mitigate weirdness like this.
Uh oh!
There was an error while loading. Please reload this page.
Currently the
numpy.typing
module is only available at typing time; now that the stubs have been merged into NumPy we need to also make it available at runtime. See the mailing list discussion here:http://numpy-discussion.10968.n7.nabble.com/Feelings-about-type-aliases-in-NumPy-td48059.html
as well as some more discussion here:
numpy/numpy-stubs#66
Reproducing code example:
fails at runtime, but succeeds at typing time; i.e. you can do:
Make the first example work in all cases.
The text was updated successfully, but these errors were encountered: