Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(26)

Unified Diff: third_party/logilab/common/modutils.py

Issue 719313003: Revert "pylint: upgrade to 1.3.1" (Closed) Base URL: https://chromium.googlesource.com/chromium/tools/depot_tools.git@master
Patch Set: Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « third_party/logilab/common/logging_ext.py ('k') | third_party/logilab/common/optik_ext.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/logilab/common/modutils.py
diff --git a/third_party/logilab/common/modutils.py b/third_party/logilab/common/modutils.py
index a426a3aeba7448aa8d7009913e28d774b4b5bea3..ce0c2971106313cc32eb8567c58dd3c6e80ad4bd 100644
--- a/third_party/logilab/common/modutils.py
+++ b/third_party/logilab/common/modutils.py
@@ -1,5 +1,5 @@
# -*- coding: utf-8 -*-
-# copyright 2003-2013 LOGILAB S.A. (Paris, FRANCE), all rights reserved.
+# copyright 2003-2011 LOGILAB S.A. (Paris, FRANCE), all rights reserved.
# contact http://www.logilab.fr/ -- mailto:contact@logilab.fr
#
# This file is part of logilab-common.
@@ -27,7 +27,6 @@
:type BUILTIN_MODULES: dict
:var BUILTIN_MODULES: dictionary with builtin module names has key
"""
-
__docformat__ = "restructuredtext en"
import sys
@@ -35,9 +34,6 @@ import os
from os.path import splitext, join, abspath, isdir, dirname, exists, basename
from imp import find_module, load_module, C_BUILTIN, PY_COMPILED, PKG_DIRECTORY
from distutils.sysconfig import get_config_var, get_python_lib, get_python_version
-from distutils.errors import DistutilsPlatformError
-
-from six.moves import range
try:
import zipimport
@@ -57,18 +53,12 @@ from logilab.common import STD_BLACKLIST, _handle_blacklist
if sys.platform.startswith('win'):
PY_SOURCE_EXTS = ('py', 'pyw')
PY_COMPILED_EXTS = ('dll', 'pyd')
+ STD_LIB_DIR = get_python_lib(standard_lib=1)
else:
PY_SOURCE_EXTS = ('py',)
PY_COMPILED_EXTS = ('so',)
-
-try:
- STD_LIB_DIR = get_python_lib(standard_lib=1)
-# get_python_lib(standard_lib=1) is not available on pypy, set STD_LIB_DIR to
-# non-valid path, see https://bugs.pypy.org/issue1164
-except DistutilsPlatformError:
- STD_LIB_DIR = '//'
-
-EXT_LIB_DIR = get_python_lib()
+ # extend lib dir with some arch-dependant paths
+ STD_LIB_DIR = join(get_config_var("LIBDIR"), "python%s" % get_python_version())
BUILTIN_MODULES = dict(zip(sys.builtin_module_names,
[1]*len(sys.builtin_module_names)))
@@ -94,7 +84,7 @@ class LazyObject(object):
def __getattribute__(self, attr):
try:
return super(LazyObject, self).__getattribute__(attr)
- except AttributeError as ex:
+ except AttributeError, ex:
return getattr(self._getobj(), attr)
def __call__(self, *args, **kwargs):
@@ -102,7 +92,7 @@ class LazyObject(object):
def load_module_from_name(dotted_name, path=None, use_sys=1):
- """Load a Python module from its name.
+ """Load a Python module from it's name.
:type dotted_name: str
:param dotted_name: python name of a module or package
@@ -127,7 +117,7 @@ def load_module_from_name(dotted_name, path=None, use_sys=1):
def load_module_from_modpath(parts, path=None, use_sys=1):
- """Load a python module from its splitted name.
+ """Load a python module from it's splitted name.
:type parts: list(str) or tuple(str)
:param parts:
@@ -161,9 +151,6 @@ def load_module_from_modpath(parts, path=None, use_sys=1):
if len(modpath) != len(parts):
# even with use_sys=False, should try to get outer packages from sys.modules
module = sys.modules.get(curname)
- elif use_sys:
- # because it may have been indirectly loaded through a parent
- module = sys.modules.get(curname)
if module is None:
mp_file, mp_filename, mp_desc = find_module(part, path)
module = load_module(curname, mp_file, mp_filename, mp_desc)
@@ -243,7 +230,10 @@ def modpath_from_file(filename, extrapath=None):
return extrapath[path_].split('.') + submodpath
for path in sys.path:
path = abspath(path)
- if path and base.startswith(path):
+ if path and base[:len(path)] == path:
+ if filename.find('site-packages') != -1 and \
+ path.find('site-packages') == -1:
+ continue
modpath = [pkg for pkg in base[len(path):].split(os.sep) if pkg]
if _check_init(path, modpath[:-1]):
return modpath
@@ -456,16 +446,13 @@ def get_source_file(filename, include_no_ext=False):
def cleanup_sys_modules(directories):
"""remove submodules of `directories` from `sys.modules`"""
- cleaned = []
- for modname, module in list(sys.modules.items()):
+ for modname, module in sys.modules.items():
modfile = getattr(module, '__file__', None)
if modfile:
for directory in directories:
if modfile.startswith(directory):
- cleaned.append(modname)
del sys.modules[modname]
break
- return cleaned
def is_python_source(filename):
@@ -497,7 +484,7 @@ def is_standard_module(modname, std_path=(STD_LIB_DIR,)):
modname = modname.split('.')[0]
try:
filename = file_from_modpath([modname])
- except ImportError as ex:
+ except ImportError, ex:
# import failed, i'm probably not so wrong by supposing it's
# not standard...
return 0
@@ -506,11 +493,13 @@ def is_standard_module(modname, std_path=(STD_LIB_DIR,)):
if filename is None:
return 1
filename = abspath(filename)
- if filename.startswith(EXT_LIB_DIR):
- return 0
for path in std_path:
- if filename.startswith(abspath(path)):
- return 1
+ path = abspath(path)
+ if filename.startswith(path):
+ pfx_len = len(path)
+ if filename[pfx_len+1:pfx_len+14] != 'site-packages':
+ return 1
+ return 0
return False
@@ -576,15 +565,10 @@ def _search_zip(modpath, pic):
if importer.find_module(modpath[0]):
if not importer.find_module('/'.join(modpath)):
raise ImportError('No module named %s in %s/%s' % (
- '.'.join(modpath[1:]), filepath, modpath))
+ '.'.join(modpath[1:]), file, modpath))
return ZIPFILE, abspath(filepath) + '/' + '/'.join(modpath), filepath
raise ImportError('No module named %s' % '.'.join(modpath))
-try:
- import pkg_resources
-except ImportError:
- pkg_resources = None
-
def _module_file(modpath, path=None):
"""get a module type / file path
@@ -615,35 +599,16 @@ def _module_file(modpath, path=None):
checkeggs = True
except AttributeError:
checkeggs = False
- # pkg_resources support (aka setuptools namespace packages)
- if (pkg_resources is not None
- and modpath[0] in pkg_resources._namespace_packages
- and modpath[0] in sys.modules
- and len(modpath) > 1):
- # setuptools has added into sys.modules a module object with proper
- # __path__, get back information from there
- module = sys.modules[modpath.pop(0)]
- path = module.__path__
imported = []
while modpath:
- modname = modpath[0]
- # take care to changes in find_module implementation wrt builtin modules
- #
- # Python 2.6.6 (r266:84292, Sep 11 2012, 08:34:23)
- # >>> imp.find_module('posix')
- # (None, 'posix', ('', '', 6))
- #
- # Python 3.3.1 (default, Apr 26 2013, 12:08:46)
- # >>> imp.find_module('posix')
- # (None, None, ('', '', 6))
try:
- _, mp_filename, mp_desc = find_module(modname, path)
+ _, mp_filename, mp_desc = find_module(modpath[0], path)
except ImportError:
if checkeggs:
return _search_zip(modpath, pic)[:2]
raise
else:
- if checkeggs and mp_filename:
+ if checkeggs:
fullabspath = [abspath(x) for x in _path]
try:
pathindex = fullabspath.index(dirname(abspath(mp_filename)))
@@ -663,21 +628,7 @@ def _module_file(modpath, path=None):
if mtype != PKG_DIRECTORY:
raise ImportError('No module %s in %s' % ('.'.join(modpath),
'.'.join(imported)))
- # XXX guess if package is using pkgutil.extend_path by looking for
- # those keywords in the first four Kbytes
- try:
- with open(join(mp_filename, '__init__.py')) as stream:
- data = stream.read(4096)
- except IOError:
- path = [mp_filename]
- else:
- if 'pkgutil' in data and 'extend_path' in data:
- # extend_path is called, search sys.path for module/packages
- # of this name see pkgutil.extend_path documentation
- path = [join(p, *imported) for p in sys.path
- if isdir(join(p, *imported))]
- else:
- path = [mp_filename]
+ path = [mp_filename]
return mtype, mp_filename
def _is_python_file(filename):
« no previous file with comments | « third_party/logilab/common/logging_ext.py ('k') | third_party/logilab/common/optik_ext.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698