# HG changeset patch # User Mike Hommey # Date 1531788478 25200 # Node ID dbbe45ae5ad1d80ada459bbfd7fbd59e2275e018 # Parent d12415b8f833a1a27777b52f0877eb2f2545dbcd setup: allow to run setup.py with python 3 without a mercurial checkout Some people may want to test mercurial in a python 3 environment through e.g. pip, in which case setup.py doesn't run in a mercurial checkout, so the hack in setup.py to allow python 3 cannot be overcome. This change allows a manual override with the HGPYTHON3 environment variable. Additionally, when for some reason the version is unknown (for crazy people like me, who have a git checkout of the mercurial repo), the version variable ends up being an unicode string, which fails the `isinstance(version, bytes)` assertion. So fix that at the same time. Differential Revision: https://phab.mercurial-scm.org/D3958 diff -r d12415b8f833 -r dbbe45ae5ad1 setup.py --- a/setup.py Thu Jun 21 18:05:55 2018 +0200 +++ b/setup.py Mon Jul 16 17:47:58 2018 -0700 @@ -74,7 +74,7 @@ badpython = True # Allow Python 3 from source checkouts. - if os.path.isdir('.hg'): + if os.path.isdir('.hg') or 'HGPYTHON3' in os.environ: badpython = False if badpython: @@ -369,7 +369,7 @@ from mercurial import __version__ version = __version__.version except ImportError: - version = 'unknown' + version = b'unknown' finally: if oldpolicy is None: del os.environ['HGMODULEPOLICY']