However, this brings me to my biggest gripe with the Python ecosystem. For better or for worse, Python is used EVERYWHERE. And, to make matters worse, standard tooling that manages dependencies and versions of Python is a complete mess.
Just in the last couple of months I've written Python packages for applications embed a Python 3.3 interpreter. And I still work with code that runs only in Python 2.6 (working with hardware). In these projects, I can't use these new "features" even if I wanted to.
The tenet of my comment is this:
I really wish there was a standard source to source transpiler that helped in converting Python 3.x code to Python (2|3).(y).
Almost all the features I'm envious of either have a way to be represented in older languages more verbosely (f-strings, :=) or don't need to be in the source on the user end (type hinting, dataclasses, keyword only arguments). I know there's not a one to one mapping here, but even a best effort would go a long way to helping adoption of these new features. I don't see the Python folks slowing down when adding new features to the language.
I really wish I could use these features today but I know I can't. I also hesitate sometimes when I'm making a package open source because I'm worried someone else might want to use my code in an older version of Python and won't be able to because I wanted some syntactic sugar (I've even received PRs on project to revert some changes), and I now actively choose not to use these features against my desires. Larry Hastings may have said farewell to Python 3.5 but lord knows when I will be able to do the same.
Is this just me? How many people use `:=` or `@dataclass` or `|` for dict merges in their code today?