Datasette currently has a few API internals that return sqlite3.Row objects. I was thinking about how this might work in the future - if Datasette ever expands beyond SQLite (plugin-provided backends for PostgreSQL and DuckDB for example) I'd want a way to return data from other stores using objects that behave like sqlite3.Row but are not exactly that class.
Python provides flexibility. You want to use it for fast experiments in a jupiter notebook? Skip types. You’re doing a months long backend project? Add types, either through implicit types (protocols) or explicit types.
I don’t see how flexibility is a bad thing. Don’t want it? Don’t use it. You can still use it in the simple way, like 30 years ago, it’s just providing more options to be used in different contexts.
Considering Python is almost as old as C++, I would say that Python has done a much better job at incorporating new features in a sound architectural way compared to C++, while keeping new features at the same complexity level as the older ones. Or compared to javascript, which let a spinoff language emerge (something that Van Rossum very much wanted to avoid with mypy) and drive it towards adopting some features that were being asked for years (ie classes in ES6)