# HG changeset patch # User Augie Fackler # Date 1500647992 14400 # Node ID e0bbe32d8b55686ffcaa9e82df485c11e1d04ea6 # Parent b7304e1cc914a0ee894eb684e3b6ea40ce1b2351 setup: explicitly declare supported Python versions I think we should probably backport this to 4.2 as well, and do one more release there that explicitly declares 2.6 support. That way anyone stuck on Python 2.6 will end up getting the right hg if they use a modern pip to install. Users can still use `python setup.py` incantations to attempt installing Mercurial on unsupported Pythons, including 3.5 and 3.6. A followup change will switch to only doing our own Python-version-check logic if we're not being installed by a reasonable pip. diff -r b7304e1cc914 -r e0bbe32d8b55 setup.py --- a/setup.py Mon Jul 24 15:37:57 2017 -0400 +++ b/setup.py Fri Jul 21 10:39:52 2017 -0400 @@ -4,6 +4,25 @@ # 'python setup.py install', or # 'python setup.py --help' for more options +supportedpy = '~= 2.7' +if 'HGALLOWPYTHON3': + # Mercurial will never work on Python 3 before 3.5 due to a lack + # of % formatting on bytestrings, and can't work on 3.6.0 or 3.6.1 + # due to a bug in % formatting in bytestrings. + # + # TODO: when we actually work on Python 3, use this string as the + # actual supportedpy string. + supportedpy = ','.join([ + '>=2.7', + '!=3.0.*', + '!=3.1.*', + '!=3.2.*', + '!=3.3.*', + '!=3.4.*', + '!=3.6.0', + '!=3.6.1', + ]) + import sys, platform if sys.version_info < (2, 7, 0, 'final'): raise SystemExit('Mercurial requires Python 2.7 or later.') @@ -892,4 +911,5 @@ 'welcome': 'contrib/macosx/Welcome.html', }, }, + python_requires=supportedpy, **extra)