Considering the last item in the changelog is:
- Add type hinting. https://github.com/pallets/flask/pull/3973
I think it's fair to assume annotations is the big reason.
Annotations were added in 3.5, so no reason to drop 3.5 for them, and 3.5 support had been dropped from Flask over a year ago.
Order-preserving dicts were added as a side effect of an optimization in CPython 3.6 [0]. They were considered an implementation detail of CPython in 3.6, it wasn't until Python 3.7 that is was declared an official part of the language [1].
[0] https://docs.python.org/3/whatsnew/3.6.html#whatsnew36-compa... [1] https://mail.python.org/pipermail/python-dev/2017-December/1...
Ordering was stable within a process (and within a given PYTHONHASHSEED value), but not stable across processes.
They are now insertion ordered.
I don't know too much about it but raymond hettinger gave a talk about it. https://www.youtube.com/watch?v=p33CVV29OG8