Terrible is using a dynamic programming language and expecting static features from it. Besides, linters and type hinting have come a long way.
You acknowledge that the kinds of static analysis that are feasible in Python are valuable, but it's "terrible" to want the kinds of static analysis that are infeasible. How interesting that the two boundaries line up exactly.
If you want the freedom to easily mangle json or other dynamic types, you'd enjoy python.
Linting has saved my bacon more than once, granted.
Ocaml is an interesting example imho, as the type inference engine is so good you hardly have to specify types. When you read it and squint, it looks dynamic. It's not.