##// END OF EJS Templates
demandimport: strictly check missing locals argument...
demandimport: strictly check missing locals argument locals may be an empty dict.

File last commit:

r32251:a04f5c65 default
r32365:b2b56052 default
Show More
policy.py
51 lines | 1.6 KiB | text/x-python | PythonLexer
timeless
debuginstall: expose modulepolicy...
r29266 # policy.py - module policy logic for Mercurial.
#
# Copyright 2015 Gregory Szorc <gregory.szorc@gmail.com>
#
# This software may be used and distributed according to the terms of the
# GNU General Public License version 2 or any later version.
from __future__ import absolute_import
import os
import sys
# Rules for how modules can be loaded. Values are:
#
# c - require C extensions
# allow - allow pure Python implementation when C loading fails
Maciej Fijalkowski
policy: add cffi policy for PyPy...
r29490 # cffi - required cffi versions (implemented within pure module)
# cffi-allow - allow pure Python implementation if cffi version is missing
timeless
debuginstall: expose modulepolicy...
r29266 # py - only load pure Python modules
#
Yuya Nishihara
policy: relax the default for in-place build...
r32251 # By default, fall back to the pure modules so the in-place build can
# run without recompiling the C extensions. This will be overridden by
# __modulepolicy__ generated by setup.py.
policy = b'allow'
FUJIWARA Katsunori
py3: add "b" prefix to string literals related to module policy...
r31361 policynoc = (b'cffi', b'cffi-allow', b'py')
policynocffi = (b'c', b'py')
Maciej Fijalkowski
policy: add cffi policy for PyPy...
r29490
timeless
debuginstall: expose modulepolicy...
r29266 try:
from . import __modulepolicy__
policy = __modulepolicy__.modulepolicy
except ImportError:
pass
# PyPy doesn't load C extensions.
#
# The canonical way to do this is to test platform.python_implementation().
# But we don't import platform and don't bloat for it here.
Yuya Nishihara
policy: mark all string literals as sysstr or bytes...
r32205 if r'__pypy__' in sys.builtin_module_names:
policy = b'cffi'
timeless
debuginstall: expose modulepolicy...
r29266
# Our C extensions aren't yet compatible with Python 3. So use pure Python
# on Python 3 for now.
if sys.version_info[0] >= 3:
Augie Fackler
policy: try and always have a bytes for module policy...
r31308 policy = b'py'
timeless
debuginstall: expose modulepolicy...
r29266
# Environment variable can always force settings.
FUJIWARA Katsunori
py3: add "b" prefix to string literals related to module policy...
r31361 if sys.version_info[0] >= 3:
Yuya Nishihara
policy: mark all string literals as sysstr or bytes...
r32205 if r'HGMODULEPOLICY' in os.environ:
policy = os.environ[r'HGMODULEPOLICY'].encode(r'utf-8')
FUJIWARA Katsunori
py3: add "b" prefix to string literals related to module policy...
r31361 else:
Yuya Nishihara
policy: mark all string literals as sysstr or bytes...
r32205 policy = os.environ.get(r'HGMODULEPOLICY', policy)