Python ML maybe. That's a different community to Python in general. The only place where there's been churn in general Python is probably package management.
10 years ago there was a new Python web framework every month. Now that space is pretty much stable (dead).
The fact that JavaScript front-end is going through so much churn just shows that it's not obvious yet what the proper design looks like.
Rust is going through the same thing now with GUI frameworks, every couple months a new approach appears. Because it's not obvious yet what's the proper design for a Rust GUI API.
I wouldn't say it's stable or dead. Starlette and FastAPI are great async frameworks that seem to have replaced Tornado. Django is only recently getting some async support.
JS frontend seems to have been going through churn for over a decade now. It's a messy language, and because we've been forced to use it as the sole frontend language for a while people have been trying to figure out how best develop with it. Hopefully, with more language support in Wasm, JS will finally be replaced.
Zope was an oddity and had already started to fade into the background 10 years ago. Bottle was eclipsed quickly by Flask. Werkzeug was more of a toolkit than a framework.
Is Tornado even a web framework?
There was some interest in the others you mention but I don't remember them ever being major contenders.
I guess my point was that it never felt like the javascript situation where there was genuine paralysis of choice on many fronts. You generally either went Django or Flask depending on your preference for "batteries included". All the other choices were pretty niche.
Javascript has stabilized a bit in the last few years but the number of choices needed to start a project are still much higher than anything I experienced in Python web dev.
But it was not clear at all that Flask would be the other winner. There were a lot of articles discussing Flask vs Bottle vs web.py.
> like the javascript situation where there was genuine paralysis of choice on many fronts.
I think that's the perception from the outside. If you start a project, it's pretty clear what's the recommended stack of the day. Sure, next year might be different, but today it's React/Vite/Tailwind/...
Python ML maybe. That's a different community to Python in general. The only place where there's been churn in general Python is probably package management.