# HG changeset patch # User Mike Hommey # Date 2018-07-17 00:47:58 # Node ID 7d8aa0746b7166e45cc7dff51690be68a424f6ff # Parent d12415b8f833a1a27777b52f0877eb2f2545dbcd 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 --git a/setup.py b/setup.py --- a/setup.py +++ b/setup.py @@ -74,7 +74,7 @@ if sys.version_info[0] != 2: 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 @@ try: from mercurial import __version__ version = __version__.version except ImportError: - version = 'unknown' + version = b'unknown' finally: if oldpolicy is None: del os.environ['HGMODULEPOLICY']