▲ | CJefferson 8 months ago | |||||||
Mainly, the seems to be no way, in a dynamic language, to dynamically check if functions get the right types. To me, this means I don't really understand the python type hinting at all, as adding hints to just one or two functions provides no value to me at all. I assume I must be not using them usefully, as I've tried adding type hints to some projects and they just seemed to do nothing useful. | ||||||||
▲ | patrickkidger 8 months ago | parent | next [-] | |||||||
You want runtime typechecking. See either beartype [1] or typeguard [2]. And if you're doing any kind of array-based programming (JAX or not), then jaxtyping [3]. [1] https://github.com/beartype/beartype/ | ||||||||
| ||||||||
▲ | Spivak 8 months ago | parent | prev | next [-] | |||||||
Type hints alone don't do this, but you can use Pydantic to accomplish what you want. In Python type hints aren't enforced anywhere at runtime. They're for a type-checker to validate your source. https://docs.pydantic.dev/latest/concepts/validation_decorat... | ||||||||
▲ | Myrmornis 7 months ago | parent | prev | next [-] | |||||||
It's a static type-checking system, along the same lines as what Rust, Java, C++ etc have during their compilation processes (and what Typescript has during its transpilation step). The main purpose of static type-checking systems is to find bugs before you ever run the code. It's most useful if your editor shows the type errors as you type, but it can also be done by running pyright or mypy from the command line. And of course running pyright or mypy in CI to guarantee type errors don't get into main. But you are right that in Python they are optional and the value increases with the number of annotations you add! | ||||||||
▲ | zo1 8 months ago | parent | prev [-] | |||||||
How to tell me you use VScode without telling me you use VScode. |