Even with those retrofits, it's still a language designed for maximum flexibility and maximum ease of use. This has trade offs with regard to reasoning for correctness.
What’s your point? That their type checks are incomplete?
That Python makes the wrong trade-offs for mission critical software. This goes beyond just lacking static types.
Which trade offs do you make when you opt in for full static typing? Except for performance.