##// END OF EJS Templates
wrapfunction: use sysstr instead of bytes as argument in "lfs"...
wrapfunction: use sysstr instead of bytes as argument in "lfs" This is as valid and simpler, it will help us to eventually get ride of `safehasattr`.

File last commit:

r51621:80c8dcfb stable
r51679:dde4b55a default
Show More
__init__.py
86 lines | 2.6 KiB | text/x-python | PythonLexer
Siddharth Agarwal
demandimport: move to separate package...
r32420 # hgdemandimport - global demand-loading of modules for Mercurial
#
# Copyright 2017 Facebook Inc.
#
# This software may be used and distributed according to the terms of the
# GNU General Public License version 2 or any later version.
'''demandimport - automatic demand-loading of modules'''
# This is in a separate package from mercurial because in Python 3,
# demand loading is per-package. Keeping demandimport in the mercurial package
# would disable demand loading for any modules in mercurial.
Jun Wu
demandimport: move HGDEMANDIMPORT test to __init__.py...
r33861 import os
Siddharth Agarwal
demandimport: move ignore list to __init__.py...
r32422 import sys
Gregory Szorc
demandimport: delete demandimportpy2 module...
r49802 from . import demandimportpy3 as demandimport
Siddharth Agarwal
demandimport: move to separate package...
r32420
Gregory Szorc
demandimport: make module ignores a set (API)...
r37862 # Full module names which can't be lazy imported.
# Extensions can add to this set.
IGNORES = {
Siddharth Agarwal
demandimport: move ignore list to __init__.py...
r32422 '__future__',
'_hashlib',
# ImportError during pkg_resources/__init__.py:fixup_namespace_package
'_imp',
'_xmlplus',
'fcntl',
Augie Fackler
formatting: blacken the codebase...
r43346 'nt', # pathlib2 tests the existence of built-in 'nt' module
Siddharth Agarwal
demandimport: move ignore list to __init__.py...
r32422 'win32com.gen_py',
Augie Fackler
formatting: blacken the codebase...
r43346 'win32com.shell', # 'appdirs' tries to import win32com.shell
'_winreg', # 2.7 mimetypes needs immediate ImportError
Siddharth Agarwal
demandimport: move ignore list to __init__.py...
r32422 'pythoncom',
# imported by tarfile, not available under Windows
'pwd',
'grp',
# imported by profile, itself imported by hotshot.stats,
# not available under Windows
'resource',
# this trips up many extension authors
'gtk',
# setuptools' pkg_resources.py expects "from __main__ import x" to
# raise ImportError if x not defined
'__main__',
Augie Fackler
hgdemandimport: bypass demandimport for _ast module (issue6407)...
r46006 '_ast', # https://bugs.python.org/issue41631
Augie Fackler
formatting: blacken the codebase...
r43346 '_ssl', # conditional imports in the stdlib, issue1964
'_sre', # issue4920
Siddharth Agarwal
demandimport: move ignore list to __init__.py...
r32422 'rfc822',
'mimetools',
Augie Fackler
formatting: blacken the codebase...
r43346 'sqlalchemy.events', # has import-time side effects (issue5085)
Ludovic Chabant
hgdemandimport: exclude more sqlalchemy modules...
r46179 'sqlalchemy.dialects', # similar problems as above
Siddharth Agarwal
demandimport: move ignore list to __init__.py...
r32422 # setuptools 8 expects this module to explode early when not on windows
'distutils.msvc9compiler',
'__builtin__',
'builtins',
Augie Fackler
formatting: blacken the codebase...
r43346 'urwid.command_map', # for pudb
Manuel Jacob
demandimport: ignore `lzma` module for demandimport...
r45600 'lzma',
Mads Kiilerich
demandimport: don't delay _distutils_hack import...
r51621 # setuptools uses this hack to inject it's own distutils at import time
'setuptools',
'_distutils_hack.override',
Gregory Szorc
demandimport: make module ignores a set (API)...
r37862 }
Siddharth Agarwal
demandimport: move ignore list to __init__.py...
r32422
_pypy = '__pypy__' in sys.builtin_module_names
if _pypy:
Gregory Szorc
demandimport: make module ignores a set (API)...
r37862 # _ctypes.pointer is shadowed by "from ... import pointer" (PyPy 5)
IGNORES.add('_ctypes.pointer')
Manuel Jacob
demandimport: eagerly load msvcrt module on PyPy
r50167 # pure Python module on PyPy, must be loaded to raise ModuleNotFoundError
# on non-Windows platforms
IGNORES.add('msvcrt')
Siddharth Agarwal
demandimport: move ignore list to __init__.py...
r32422
Gregory Szorc
demandimport: make module ignores a set (API)...
r37862 demandimport.init(IGNORES)
Siddharth Agarwal
demandimport: move ignore list to __init__.py...
r32422
Siddharth Agarwal
demandimport: move to separate package...
r32420 # Re-export.
isenabled = demandimport.isenabled
disable = demandimport.disable
deactivated = demandimport.deactivated
Jun Wu
demandimport: move HGDEMANDIMPORT test to __init__.py...
r33861
Augie Fackler
formatting: blacken the codebase...
r43346
Jun Wu
demandimport: move HGDEMANDIMPORT test to __init__.py...
r33861 def enable():
Jun Wu
demandimport: disable if chg is being used...
r33862 # chg pre-imports modules so do not enable demandimport for it
Augie Fackler
formatting: blacken the codebase...
r43346 if (
'CHGINTERNALMARK' not in os.environ
and os.environ.get('HGDEMANDIMPORT') != 'disable'
):
Jun Wu
demandimport: move HGDEMANDIMPORT test to __init__.py...
r33861 demandimport.enable()