As a side note, if I recall correctly Python 2.7 will be EOL'd in 2020 by community, though I suspect that a couple of vendors will still maintain compatibility for a couple of years in what they ship. CentOS and RHEL enter in this category perhaps. Like Peter, I would vote for just maintaining support for Python 3 in this script, as any modern development machines have it anyway, and not a lot of commits involve it (I am counting 4 since 2015).
I realise this is an incredibly minor component of the PostgreSQL infrastructure, but as I don't want to hold up reviewers, may I ask:
It seems we have two votes for Python 3 only, and one for Python 2/3. I lean toward Python 2/3 myself because: a) many distributions still ship with Python 2 as the default and b) it's a single code block that can easily be removed. If the decision is for Python 3, I'd like at least to add a check that catches this and prints a message, rather than leaving someone with a cryptic runtime error that makes them think the script is broken;
Michael Paquier, do you have any other comments? If not, I'll adjust the documentation to use the URLs you have indicated. If you are downloading via curl or wget, the URL I used is the proper one. It gives you the XML file, whereas the other saves the HTML interface, leading to errors if you try to run it. I'll also add this to the documentation.
Once I have clarification on these, I'll update the patches.