mercurial/scmposix.py
author Chris Jerdonek <chris.jerdonek@gmail.com>
Sun, 22 Dec 2013 14:10:26 -0800
changeset 20197 761f2929a6ad
parent 18690 4c6f7f0dadab
child 22583 23c995ed466b
permissions -rw-r--r--
import-checker: refactor sys.path prefix check (issue4129) This patch refactors the logic in contrib/import-checker.py responsible for checking the beginnings of the paths in sys.path. In particular, it adds a variable that defines the set of allowed prefixes. The primary purpose of this change is to make it easier to add more allowed prefixes. This will be useful in resolving issue4129, which involves making the function list_stdlib_modules() work when run from a virtualenv.

import sys, os
import osutil

def _rcfiles(path):
    rcs = [os.path.join(path, 'hgrc')]
    rcdir = os.path.join(path, 'hgrc.d')
    try:
        rcs.extend([os.path.join(rcdir, f)
                    for f, kind in osutil.listdir(rcdir)
                    if f.endswith(".rc")])
    except OSError:
        pass
    return rcs

def systemrcpath():
    path = []
    if sys.platform == 'plan9':
        root = 'lib/mercurial'
    else:
        root = 'etc/mercurial'
    # old mod_python does not set sys.argv
    if len(getattr(sys, 'argv', [])) > 0:
        p = os.path.dirname(os.path.dirname(sys.argv[0]))
        path.extend(_rcfiles(os.path.join(p, root)))
    path.extend(_rcfiles('/' + root))
    return path

def userrcpath():
    if sys.platform == 'plan9':
        return [os.environ['home'] + '/lib/hgrc']
    else:
        return [os.path.expanduser('~/.hgrc')]