| Recently had to touch a Python project at work. Just setting up the editor needed me to use 2-3 tools out of: pyright, basedpyright, ruff, ty, mypy, and possibly other tools I'm forgetting that kind of do the same thing but throw errors in different parts of the codebase. Also, for some reason Optional[T] became deprecated, just as the ecosystem finally embraced types ~3 years ago. In fact, one my company's greenfield projects decided to use TypeScript instead of Python for the [surprisingly] more consistent tooling, and the fact that the big LLM providers all have official TypeScript SDKs anyway. Also, for agentic coding, LLMs don't seem noticeably worse at TypeScript than Python. My experience can be summarized as: - for some reason we need 2-3 static analysis tools just for typechecking - no tool understands each other's comment directives - each tool reports a different error in your codebase - even big libraries (e.g. matplotlib) make half their functions return Any - you'll be tempted to silence the "partially unknown type" warnings, and you'll have to do it for each tool that's running. |
Optional[T] is now T | None. Means exactly the same thing but doesn't require an import. Support for the older syntax presumably won't be removed for a long while regardless.