3 ms·
Typing is declarative In the end, it ensures nothing and accepts everything $ cat test.py from typing import TypedDict class MyDict(TypedDict):
by JackSlateur 1y ago
Typing is declarative
In the end, it ensures nothing and accepts everything
$ cat test.py
from typing import TypedDict
class MyDict(TypedDict):
some_bool: bool
print(MyDict(some_bool="test", unknown_field="blabla"))
=>
$ ./test.py
{'some_bool': 'test', 'unknown_field': 'blabla'}
- codethief 1y agoRolls eyes… Of course you need to use a type checker. Who doesn't these days?
- JackSlateur 1y agoOf course, I need runtime validation
- codethief 1y agoSure, runtime validation is useful – at the boundaries of your domain! After that your type checker should ensure your data has the shape your code expects. In other words: Parse, don't validate. https://lexi-lambda.github.io/blog/2019/11/05/parse-don-t-validate/ https://lexi-lambda.github.io/blog/2019/11/05/parse-don-t-va...
- JackSlateur 1y agoYes The boundaries of my domain is everywhere, because stuff are built everywhere. I'm sure I am a bad dev, yet prebuilding all possibles objects I might need everytime I receive an input sounds stupid at best (btw, this post sounds a lot like "if it compiles, it works", not gonna do this, especially in Python)