summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClaudiu Popa <pcmanticore@gmail.com>2016-01-04 10:43:36 +0200
committerClaudiu Popa <pcmanticore@gmail.com>2016-01-04 10:45:53 +0200
commit0a55e866e32548ea2de39db529802c22f2041b7f (patch)
treed14056a1cb178461ce5cbfe12cb8f145b94f4f1c
parent95f8a878bd496af39b700de2748fc315289a11cc (diff)
downloadastroid-git-0a55e866e32548ea2de39db529802c22f2041b7f.tar.gz
Add .builtins() method to the manager, for retrieving the builtins module. Close #300
-rw-r--r--astroid/brain/brain_builtin_inference.py2
-rw-r--r--astroid/interpreter/lookup.py2
-rw-r--r--astroid/interpreter/objects.py6
-rw-r--r--astroid/interpreter/util.py2
-rw-r--r--astroid/manager.py7
-rw-r--r--astroid/tests/unittest_manager.py4
-rw-r--r--astroid/tree/node_classes.py14
7 files changed, 24 insertions, 13 deletions
diff --git a/astroid/brain/brain_builtin_inference.py b/astroid/brain/brain_builtin_inference.py
index 0d1e890d..fef4183c 100644
--- a/astroid/brain/brain_builtin_inference.py
+++ b/astroid/brain/brain_builtin_inference.py
@@ -82,7 +82,7 @@ def _extend_str(class_node, rvalue):
method.parent = class_node
def extend_builtins(class_transforms):
- builtin_ast = MANAGER.astroid_cache[BUILTINS]
+ builtin_ast = MANAGER.builtins()
for class_name, transform in class_transforms.items():
transform(builtin_ast[class_name])
diff --git a/astroid/interpreter/lookup.py b/astroid/interpreter/lookup.py
index 11991eb5..d8e5931a 100644
--- a/astroid/interpreter/lookup.py
+++ b/astroid/interpreter/lookup.py
@@ -145,7 +145,7 @@ def builtin_lookup(name):
"""
from astroid import MANAGER # TODO(cpopa) needs to be removed.
- builtin_astroid = MANAGER.ast_from_module(six.moves.builtins)
+ builtin_astroid = MANAGER.builtins()
if name == '__dict__':
return builtin_astroid, ()
stmts = builtin_astroid.locals.get(name, ())
diff --git a/astroid/interpreter/objects.py b/astroid/interpreter/objects.py
index 7af5b687..b097273b 100644
--- a/astroid/interpreter/objects.py
+++ b/astroid/interpreter/objects.py
@@ -363,7 +363,7 @@ class Generator(BaseInstance):
@decorators.cachedproperty
def _proxied(self):
- builtins = MANAGER.astroid_cache[BUILTINS]
+ builtins = MANAGER.builtins()
return builtins.getattr(types.GeneratorType.__name__)[0]
@@ -376,7 +376,7 @@ class FrozenSet(base.BaseContainer, Instance):
@decorators.cachedproperty
def _proxied(self):
- builtins = MANAGER.astroid_cache[BUILTINS]
+ builtins = MANAGER.builtins()
return builtins.getattr('frozenset')[0]
@@ -441,7 +441,7 @@ class Super(base.NodeNG):
@decorators.cachedproperty
def _proxied(self):
- builtins = MANAGER.astroid_cache[BUILTINS]
+ builtins = MANAGER.builtins()
return builtins.getattr('super')[0]
def pytype(self):
diff --git a/astroid/interpreter/util.py b/astroid/interpreter/util.py
index b6613484..93ff831b 100644
--- a/astroid/interpreter/util.py
+++ b/astroid/interpreter/util.py
@@ -227,7 +227,7 @@ def is_supertype(type1, type2):
def _object_type(node, context=None):
context = context or contextmod.InferenceContext()
- builtins_ast = MANAGER.astroid_cache[BUILTINS]
+ builtins_ast = MANAGER.builtins()
for inferred in node.infer(context=context):
if isinstance(inferred, treeabc.ClassDef):
diff --git a/astroid/manager.py b/astroid/manager.py
index ed1c2739..533d102a 100644
--- a/astroid/manager.py
+++ b/astroid/manager.py
@@ -205,6 +205,13 @@ class AstroidManager(object):
self.astroid_cache[modname] = mock_ast
return mock_ast
+ def builtins(self):
+ """Get the builtins module
+
+ This module is special since it's always built.
+ """
+ return self.astroid_cache[six.moves.builtins.__name__]
+
def register_failed_import_hook(self, hook):
"""Registers a hook to resolve imports that cannot be found otherwise.
diff --git a/astroid/tests/unittest_manager.py b/astroid/tests/unittest_manager.py
index cdc03e64..12674516 100644
--- a/astroid/tests/unittest_manager.py
+++ b/astroid/tests/unittest_manager.py
@@ -173,6 +173,10 @@ class AstroidManagerTest(resources.SysPathSetup,
self.manager.ast_from_module_name('foo.bar.baz')
del self.manager._failed_import_hooks[0]
+ def test_builtins(self):
+ builtins_module = self.manager.builtins()
+ self.assertEqual(builtins_module.name, BUILTINS)
+
class BorgAstroidManagerTC(unittest.TestCase):
diff --git a/astroid/tree/node_classes.py b/astroid/tree/node_classes.py
index 07237384..f2261450 100644
--- a/astroid/tree/node_classes.py
+++ b/astroid/tree/node_classes.py
@@ -550,7 +550,7 @@ class Const(base.NodeNG, objects.BaseInstance):
@decorators.cachedproperty
def _proxied(self):
- builtins = MANAGER.astroid_cache[BUILTINS]
+ builtins = MANAGER.builtins()
return builtins.getattr(type(self.value).__name__)[0]
@@ -564,7 +564,7 @@ class NameConstant(Const):
# @decorators.cachedproperty
# def _proxied(self):
# return self
- # # builtins = MANAGER.astroid_cache[BUILTINS]
+ # # builtins = MANAGER.builtins()
# # return builtins.getattr(str(self.value))[0]
@@ -677,7 +677,7 @@ class Dict(base.NodeNG, objects.BaseInstance):
@decorators.cachedproperty
def _proxied(self):
- builtins = MANAGER.astroid_cache[BUILTINS]
+ builtins = MANAGER.builtins()
return builtins.getattr('dict')[0]
@@ -956,7 +956,7 @@ class List(base.BaseContainer, AssignedStmtsMixin, objects.BaseInstance):
@decorators.cachedproperty
def _proxied(self):
- builtins = MANAGER.astroid_cache[BUILTINS]
+ builtins = MANAGER.builtins()
return builtins.getattr('list')[0]
@@ -1044,7 +1044,7 @@ class Set(base.BaseContainer, objects.BaseInstance):
@decorators.cachedproperty
def _proxied(self):
- builtins = MANAGER.astroid_cache[BUILTINS]
+ builtins = MANAGER.builtins()
return builtins.getattr('set')[0]
@@ -1069,7 +1069,7 @@ class Slice(base.NodeNG):
@decorators.cachedproperty
def _proxied(self):
- builtins = MANAGER.astroid_cache[BUILTINS]
+ builtins = MANAGER.builtins()
return builtins.getattr('slice')[0]
def pytype(self):
@@ -1196,7 +1196,7 @@ class Tuple(base.BaseContainer, AssignedStmtsMixin, objects.BaseInstance):
@decorators.cachedproperty
def _proxied(self):
- builtins = MANAGER.astroid_cache[BUILTINS]
+ builtins = MANAGER.builtins()
return builtins.getattr('tuple')[0]