diff options
author | Claudiu Popa <cpopa@cloudbasesolutions.com> | 2015-07-11 18:12:18 +0300 |
---|---|---|
committer | Claudiu Popa <cpopa@cloudbasesolutions.com> | 2015-07-11 18:12:18 +0300 |
commit | 90ef70abfa57397ce34aab4e9b23a7623e48d66f (patch) | |
tree | f1614b9ea928b561d14ad725f6242fed40d79710 /astroid | |
parent | bd25fc260e6f66086746eec57ccfe87d6fd56aaa (diff) | |
download | astroid-git-90ef70abfa57397ce34aab4e9b23a7623e48d66f.tar.gz |
Add a new convenience API, `astroid.parse`.
This API can be used to retrieve an astroid AST from a source code string,
similar to how ast.parse can be used to obtain a Python AST from a source string.
This is the test_utils.build_module promoted to a public API.
Diffstat (limited to 'astroid')
-rw-r--r-- | astroid/__init__.py | 1 | ||||
-rw-r--r-- | astroid/builder.py | 13 | ||||
-rw-r--r-- | astroid/test_utils.py | 17 | ||||
-rw-r--r-- | astroid/tests/unittest_brain.py | 11 | ||||
-rw-r--r-- | astroid/tests/unittest_builder.py | 36 | ||||
-rw-r--r-- | astroid/tests/unittest_helpers.py | 3 | ||||
-rw-r--r-- | astroid/tests/unittest_inference.py | 99 | ||||
-rw-r--r-- | astroid/tests/unittest_lookup.py | 29 | ||||
-rw-r--r-- | astroid/tests/unittest_nodes.py | 14 | ||||
-rw-r--r-- | astroid/tests/unittest_peephole.py | 3 | ||||
-rw-r--r-- | astroid/tests/unittest_scoped_nodes.py | 87 |
11 files changed, 159 insertions, 154 deletions
diff --git a/astroid/__init__.py b/astroid/__init__.py index 65300756..c00c678c 100644 --- a/astroid/__init__.py +++ b/astroid/__init__.py @@ -63,6 +63,7 @@ from astroid import raw_building from astroid.bases import YES, Instance, BoundMethod, UnboundMethod from astroid.node_classes import are_exclusive, unpack_infer from astroid.scoped_nodes import builtin_lookup +from astroid.builder import parse # make a manager instance (borg) accessible from astroid package from astroid.manager import AstroidManager diff --git a/astroid/builder.py b/astroid/builder.py index 7f3a0661..8f0a1d07 100644 --- a/astroid/builder.py +++ b/astroid/builder.py @@ -25,6 +25,7 @@ from __future__ import with_statement import _ast import os import sys +import textwrap from astroid import bases from astroid import exceptions @@ -233,3 +234,15 @@ class AstroidBuilder(raw_building.InspectBuilder): values.append(node) except exceptions.InferenceError: pass + + +def parse(code, module_name='', path=None): + """Parses a source string in order to obtain an astroid AST from it + + :param str code: The code for the module. + :param str module_name: The name for the module, if any + :param str path: The path for the module + """ + code = textwrap.dedent(code) + return AstroidBuilder(MANAGER).string_build( + code, modname=module_name, path=path) diff --git a/astroid/test_utils.py b/astroid/test_utils.py index 19bd7b96..e45177a4 100644 --- a/astroid/test_utils.py +++ b/astroid/test_utils.py @@ -152,7 +152,7 @@ def extract_node(code, module_name=''): if line.strip().endswith(_STATEMENT_SELECTOR): requested_lines.append(idx + 1) - tree = build_module(code, module_name=module_name) + tree = builder.parse(code, module_name=module_name) extracted = [] if requested_lines: for line in requested_lines: @@ -171,21 +171,6 @@ def extract_node(code, module_name=''): return extracted -def build_module(code, module_name='', path=None): - """Parses a string module with a builder. - :param code: The code for the module. - :type code: str - :param module_name: The name for the module - :type module_name: str - :param path: The path for the module - :type module_name: str - :returns: The module AST. - :rtype: astroid.bases.NodeNG - """ - code = textwrap.dedent(code) - return builder.AstroidBuilder(None).string_build(code, modname=module_name, path=path) - - def require_version(minver=None, maxver=None): """ Compare version of python interpreter to the given one. Skip the test if older. diff --git a/astroid/tests/unittest_brain.py b/astroid/tests/unittest_brain.py index 543f584e..978486cf 100644 --- a/astroid/tests/unittest_brain.py +++ b/astroid/tests/unittest_brain.py @@ -22,6 +22,7 @@ import six from astroid import MANAGER from astroid import bases +from astroid import builder from astroid import nodes from astroid import test_utils import astroid @@ -277,7 +278,7 @@ class MultiprocessingBrainTest(unittest.TestCase): def test_multiprocessing_manager(self): # Test that we have the proper attributes # for a multiprocessing.managers.SyncManager - module = test_utils.build_module(""" + module = builder.parse(""" import multiprocessing manager = multiprocessing.Manager() queue = manager.Queue() @@ -335,7 +336,7 @@ class MultiprocessingBrainTest(unittest.TestCase): class EnumBrainTest(unittest.TestCase): def test_simple_enum(self): - module = test_utils.build_module(""" + module = builder.parse(""" import enum class MyEnum(enum.Enum): @@ -360,7 +361,7 @@ class EnumBrainTest(unittest.TestCase): self.assertIsInstance(meth, astroid.Function) def test_enum_multiple_base_classes(self): - module = test_utils.build_module(""" + module = builder.parse(""" import enum class Mixin: @@ -377,7 +378,7 @@ class EnumBrainTest(unittest.TestCase): 'Enum instance should share base classes with generating class') def test_int_enum(self): - module = test_utils.build_module(""" + module = builder.parse(""" import enum class MyEnum(enum.IntEnum): @@ -396,7 +397,7 @@ class EnumBrainTest(unittest.TestCase): @unittest.skipUnless(HAS_DATEUTIL, "This test requires the dateutil library.") class DateutilBrainTest(unittest.TestCase): def test_parser(self): - module = test_utils.build_module(""" + module = builder.parse(""" from dateutil.parser import parse d = parse('2000-01-01') """) diff --git a/astroid/tests/unittest_builder.py b/astroid/tests/unittest_builder.py index 21266506..65dd1908 100644 --- a/astroid/tests/unittest_builder.py +++ b/astroid/tests/unittest_builder.py @@ -110,7 +110,7 @@ class FromToLineNoTest(unittest.TestCase): '(no line number on function args)') def test_decorated_function_lineno(self): - astroid = test_utils.build_module(''' + astroid = builder.parse(''' @decorator def function( arg): @@ -173,7 +173,7 @@ class FromToLineNoTest(unittest.TestCase): else: print ("bouh") '''): - astroid = test_utils.build_module(code, __name__) + astroid = builder.parse(code, __name__) stmt = astroid.body[0] self.assertEqual(stmt.fromlineno, 2) self.assertEqual(stmt.tolineno, 6) @@ -182,7 +182,7 @@ class FromToLineNoTest(unittest.TestCase): self.assertEqual(stmt.orelse[0].tolineno, 6) def test_try_except_lineno(self): - astroid = test_utils.build_module(''' + astroid = builder.parse(''' try: print (a) except: @@ -203,7 +203,7 @@ class FromToLineNoTest(unittest.TestCase): def test_try_finally_lineno(self): - astroid = test_utils.build_module(''' + astroid = builder.parse(''' try: print (a) finally: @@ -218,7 +218,7 @@ class FromToLineNoTest(unittest.TestCase): def test_try_finally_25_lineno(self): - astroid = test_utils.build_module(''' + astroid = builder.parse(''' try: print (a) except: @@ -235,7 +235,7 @@ class FromToLineNoTest(unittest.TestCase): def test_with_lineno(self): - astroid = test_utils.build_module(''' + astroid = builder.parse(''' from __future__ import with_statement with file("/tmp/pouet") as f: print (f) @@ -418,7 +418,7 @@ class BuilderTest(unittest.TestCase): class F: "new style" ''' - mod_ast = test_utils.build_module(data, __name__) + mod_ast = builder.parse(data, __name__) if IS_PY3: self.assertTrue(mod_ast['A'].newstyle) self.assertTrue(mod_ast['B'].newstyle) @@ -443,7 +443,7 @@ class BuilderTest(unittest.TestCase): global CSTE2 print (CSTE) ''' - astroid = test_utils.build_module(data, __name__) + astroid = builder.parse(data, __name__) self.assertEqual(len(astroid.getattr('CSTE')), 2) self.assertIsInstance(astroid.getattr('CSTE')[0], nodes.AssName) self.assertEqual(astroid.getattr('CSTE')[0].fromlineno, 2) @@ -472,7 +472,7 @@ class BuilderTest(unittest.TestCase): def test_gen_expr_var_scope(self): data = 'l = list(n for n in range(10))\n' - astroid = test_utils.build_module(data, __name__) + astroid = builder.parse(data, __name__) # n unavailable outside gen expr scope self.assertNotIn('n', astroid) # test n is inferable anyway @@ -482,15 +482,15 @@ class BuilderTest(unittest.TestCase): [YES.__class__]) def test_no_future_imports(self): - mod = test_utils.build_module("import sys") + mod = builder.parse("import sys") self.assertEqual(set(), mod.future_imports) def test_future_imports(self): - mod = test_utils.build_module("from __future__ import print_function") + mod = builder.parse("from __future__ import print_function") self.assertEqual(set(['print_function']), mod.future_imports) def test_two_future_imports(self): - mod = test_utils.build_module(""" + mod = builder.parse(""" from __future__ import print_function from __future__ import absolute_import """) @@ -505,7 +505,7 @@ class BuilderTest(unittest.TestCase): print (self) A.ass_type = A_ass_type ''' - astroid = test_utils.build_module(code) + astroid = builder.parse(code) lclass = list(astroid.igetattr('A')) self.assertEqual(len(lclass), 1) lclass = lclass[0] @@ -513,7 +513,7 @@ class BuilderTest(unittest.TestCase): self.assertIn('type', lclass.locals) def test_augassign_attr(self): - test_utils.build_module(""" + builder.parse(""" class Counter: v = 0 def inc(self): @@ -529,7 +529,7 @@ class BuilderTest(unittest.TestCase): def func2(a={}): a.custom_attr = 0 ''' - test_utils.build_module(code) + builder.parse(code) nonetype = nodes.const_factory(None) self.assertNotIn('custom_attr', nonetype.locals) self.assertNotIn('custom_attr', nonetype.instance_attrs) @@ -539,13 +539,13 @@ class BuilderTest(unittest.TestCase): def test_asstuple(self): code = 'a, b = range(2)' - astroid = test_utils.build_module(code) + astroid = builder.parse(code) self.assertIn('b', astroid.locals) code = ''' def visit_if(self, node): node.test, body = node.tests[0] ''' - astroid = test_utils.build_module(code) + astroid = builder.parse(code) self.assertIn('body', astroid['visit_if'].locals) def test_build_constants(self): @@ -556,7 +556,7 @@ class BuilderTest(unittest.TestCase): return return 'None' ''' - astroid = test_utils.build_module(code) + astroid = builder.parse(code) none, nothing, chain = [ret.value for ret in astroid.body[0].body] self.assertIsInstance(none, nodes.Const) self.assertIsNone(none.value) diff --git a/astroid/tests/unittest_helpers.py b/astroid/tests/unittest_helpers.py index 9ba3e6b3..a69c1361 100644 --- a/astroid/tests/unittest_helpers.py +++ b/astroid/tests/unittest_helpers.py @@ -22,6 +22,7 @@ import six from six.moves import builtins
from astroid import bases
+from astroid import builder
from astroid import helpers
from astroid import manager
from astroid import raw_building
@@ -117,7 +118,7 @@ class TestHelpers(unittest.TestCase): @test_utils.require_version(minver='3.0')
def test_object_type_metaclasses(self):
- module = test_utils.build_module('''
+ module = builder.parse('''
import abc
class Meta(metaclass=abc.ABCMeta):
pass
diff --git a/astroid/tests/unittest_inference.py b/astroid/tests/unittest_inference.py index eba665c8..df048b74 100644 --- a/astroid/tests/unittest_inference.py +++ b/astroid/tests/unittest_inference.py @@ -25,6 +25,7 @@ import unittest import six from astroid import InferenceError, builder, nodes +from astroid.builder import parse from astroid.inference import infer_end as inference_infer_end from astroid.bases import YES, Instance, BoundMethod, UnboundMethod,\ path_wrapper, BUILTINS @@ -123,10 +124,10 @@ class InferenceTest(resources.SysPathSetup, unittest.TestCase): a, b= b, a # Gasp ! ''' - ast = test_utils.build_module(CODE, __name__) + ast = parse(CODE, __name__) def test_infer_abstract_property_return_values(self): - module = test_utils.build_module(''' + module = parse(''' import abc class A(object): @@ -362,7 +363,7 @@ class InferenceTest(resources.SysPathSetup, unittest.TestCase): a = f() ''' - ast = test_utils.build_module(code, __name__) + ast = parse(code, __name__) a = ast['a'] a_infered = a.infered() self.assertEqual(a_infered[0].value, 1) @@ -392,7 +393,7 @@ class InferenceTest(resources.SysPathSetup, unittest.TestCase): ex2 = ex raise ''' - ast = test_utils.build_module(code, __name__) + ast = parse(code, __name__) ex1 = ast['ex1'] ex1_infer = ex1.infer() ex1 = next(ex1_infer) @@ -422,7 +423,7 @@ class InferenceTest(resources.SysPathSetup, unittest.TestCase): a = 2 d = a ''' - ast = test_utils.build_module(code, __name__) + ast = parse(code, __name__) n = ast['b'] n_infer = n.infer() infered = next(n_infer) @@ -447,7 +448,7 @@ class InferenceTest(resources.SysPathSetup, unittest.TestCase): s = '' s2 = '_' ''' - ast = test_utils.build_module(code, __name__) + ast = parse(code, __name__) n = ast['l'] infered = next(n.infer()) self.assertIsInstance(infered, nodes.List) @@ -481,7 +482,7 @@ class InferenceTest(resources.SysPathSetup, unittest.TestCase): self.assertEqual(infered.getitem(0).value, '_') code = 's = {1}' - ast = test_utils.build_module(code, __name__) + ast = parse(code, __name__) n = ast['s'] infered = next(n.infer()) self.assertIsInstance(infered, nodes.Set) @@ -492,7 +493,7 @@ class InferenceTest(resources.SysPathSetup, unittest.TestCase): @test_utils.require_version(maxver='3.0') def test_unicode_type(self): code = '''u = u""''' - ast = test_utils.build_module(code, __name__) + ast = parse(code, __name__) n = ast['u'] infered = next(n.infer()) self.assertIsInstance(infered, nodes.Const) @@ -507,7 +508,7 @@ class InferenceTest(resources.SysPathSetup, unittest.TestCase): statm = staticmethod(open) clsm = classmethod('whatever') ''' - ast = test_utils.build_module(code, __name__) + ast = parse(code, __name__) statm = next(ast['A'].igetattr('statm')) self.assertTrue(statm.callable()) clsm = next(ast['A'].igetattr('clsm')) @@ -518,7 +519,7 @@ class InferenceTest(resources.SysPathSetup, unittest.TestCase): class Warning(Warning): pass ''' - ast = test_utils.build_module(code, __name__) + ast = parse(code, __name__) w = ast['Warning'] ancestors = w.ancestors() ancestor = next(ancestors) @@ -540,7 +541,7 @@ class InferenceTest(resources.SysPathSetup, unittest.TestCase): from astroid.modutils import load_module_from_name xxx = load_module_from_name('__pkginfo__') ''' - ast = test_utils.build_module(code, __name__) + ast = parse(code, __name__) xxx = ast['xxx'] self.assertSetEqual({n.__class__ for n in xxx.infered()}, {nodes.Const, YES.__class__}) @@ -556,7 +557,7 @@ class InferenceTest(resources.SysPathSetup, unittest.TestCase): kwargs['e_type'] = e_type.capitalize().encode() print(args) ''' - ast = test_utils.build_module(code, __name__) + ast = parse(code, __name__) arg = test_utils.get_name_node(ast['ErudiEntitySchema']['__init__'], 'e_type') self.assertEqual([n.__class__ for n in arg.infer()], [YES.__class__]) @@ -621,7 +622,7 @@ class InferenceTest(resources.SysPathSetup, unittest.TestCase): if ok: fct(a_line) ''' - ast = test_utils.build_module(code, __name__) + ast = parse(code, __name__) self.assertEqual(len(list(ast['process_line'].infer_call_result(None))), 3) self.assertEqual(len(list(ast['tupletest'].infer())), 3) values = ['Function(first_word)', 'Function(last_word)', 'Const(NoneType)'] @@ -657,7 +658,7 @@ class InferenceTest(resources.SysPathSetup, unittest.TestCase): something = 1.0j return something.conjugate() ''' - ast = test_utils.build_module(code, __name__) + ast = parse(code, __name__) values = [i.value for i in test_utils.get_name_node(ast, 'something', -1).infer()] self.assertEqual(values, [1.0, 1.0j]) @@ -715,7 +716,7 @@ class InferenceTest(resources.SysPathSetup, unittest.TestCase): self.assertEqual(inferred.value, 97) def test_simple_tuple(self): - module = test_utils.build_module(""" + module = parse(""" a = (1,) b = (22,) some = a + b #@ @@ -736,7 +737,7 @@ class InferenceTest(resources.SysPathSetup, unittest.TestCase): print ([(d,e) for e,d in ([1,2], [3,4])]) ''' - ast = test_utils.build_module(code, __name__) + ast = parse(code, __name__) self.assertEqual([i.value for i in test_utils.get_name_node(ast, 'a', -1).infer()], [1, 2, 3]) self.assertEqual([i.value for i in @@ -752,7 +753,7 @@ class InferenceTest(resources.SysPathSetup, unittest.TestCase): code = ''' print ((d,e) for e,d in ([1,2], [3,4])) ''' - ast = test_utils.build_module(code, __name__) + ast = parse(code, __name__) self.assertEqual([i.value for i in test_utils.get_name_node(ast, 'd', -1).infer()], [2, 4]) self.assertEqual([i.value for i in @@ -795,7 +796,7 @@ class InferenceTest(resources.SysPathSetup, unittest.TestCase): un = mirror(1) ''' - ast = test_utils.build_module(code, __name__) + ast = parse(code, __name__) infered = list(ast.igetattr('un')) self.assertEqual(len(infered), 1) self.assertIsInstance(infered[0], nodes.Const) @@ -807,7 +808,7 @@ class InferenceTest(resources.SysPathSetup, unittest.TestCase): un = mirror(1) ''' - ast = test_utils.build_module(code, __name__) + ast = parse(code, __name__) infered = list(ast.igetattr('mirror')) self.assertEqual(len(infered), 1) self.assertIsInstance(infered[0], nodes.Lambda) @@ -829,7 +830,7 @@ class InferenceTest(resources.SysPathSetup, unittest.TestCase): sub = Sub.instance() ''' - ast = test_utils.build_module(code, __name__) + ast = parse(code, __name__) infered = list(ast.igetattr('sub')) self.assertEqual(len(infered), 1) self.assertIsInstance(infered[0], Instance) @@ -844,7 +845,7 @@ class InferenceTest(resources.SysPathSetup, unittest.TestCase): from os.path import exists as e assert e(__file__) ''' - ast = test_utils.build_module(code, __name__) + ast = parse(code, __name__) infered = list(ast.igetattr('osp')) self.assertEqual(len(infered), 1) self.assertIsInstance(infered[0], nodes.Module) @@ -1020,7 +1021,7 @@ class InferenceTest(resources.SysPathSetup, unittest.TestCase): x = randint(1) ''' - ast = test_utils.build_module(code, __name__) + ast = parse(code, __name__) infered = list(ast.igetattr('x')) self.assertEqual(len(infered), 2) value = [str(v) for v in infered] @@ -1047,7 +1048,7 @@ class InferenceTest(resources.SysPathSetup, unittest.TestCase): def f(x): a = ()[x] ''' - ast = test_utils.build_module(code, __name__) + ast = parse(code, __name__) infered = list(ast['f'].ilookup('a')) self.assertEqual(len(infered), 1) self.assertEqual(infered[0], YES) @@ -1066,7 +1067,7 @@ class InferenceTest(resources.SysPathSetup, unittest.TestCase): def __init__(self): self.attr = 41 """ - ast = test_utils.build_module(code, __name__) + ast = parse(code, __name__) foo_class = ast['Foo'] bar_class = ast['Bar'] bar_self = ast['Bar']['__init__']['self'] @@ -1131,7 +1132,7 @@ class InferenceTest(resources.SysPathSetup, unittest.TestCase): print(Browser) b = Browser() ''' - ast = test_utils.build_module(data, __name__) + ast = parse(data, __name__) browser = next(test_utils.get_name_node(ast, 'Browser').infer()) self.assertIsInstance(browser, nodes.Class) bopen = list(browser.igetattr('open')) @@ -1163,7 +1164,7 @@ class InferenceTest(resources.SysPathSetup, unittest.TestCase): my_me = SendMailController().me ''' decorators = set(['%s.property' % BUILTINS]) - ast = test_utils.build_module(code, __name__) + ast = parse(code, __name__) self.assertEqual(ast['SendMailController']['smtp'].decoratornames(), decorators) propinfered = list(ast.body[2].value.infer()) @@ -1193,7 +1194,7 @@ class InferenceTest(resources.SysPathSetup, unittest.TestCase): pactions = EnvBasedTC.pactions.im_func print (pactions) ''' - ast = test_utils.build_module(code, __name__) + ast = parse(code, __name__) pactions = test_utils.get_name_node(ast, 'pactions') infered = list(pactions.infer()) self.assertEqual(len(infered), 1) @@ -1209,7 +1210,7 @@ class InferenceTest(resources.SysPathSetup, unittest.TestCase): a += 2 print (a) ''' - ast = test_utils.build_module(code, __name__) + ast = parse(code, __name__) infered = list(test_utils.get_name_node(ast, 'a').infer()) self.assertEqual(len(infered), 1) @@ -1226,7 +1227,7 @@ class InferenceTest(resources.SysPathSetup, unittest.TestCase): spam = bar(None, qux) print (spam) ''' - ast = test_utils.build_module(code, __name__) + ast = parse(code, __name__) infered = list(test_utils.get_name_node(ast['foo'], 'spam').infer()) self.assertEqual(len(infered), 1) self.assertIs(infered[0], YES) @@ -1251,7 +1252,7 @@ class InferenceTest(resources.SysPathSetup, unittest.TestCase): p = self.app print (p) ''' - ast = test_utils.build_module(code, __name__) + ast = parse(code, __name__) infered = list(Instance(ast['DataManager']).igetattr('app')) self.assertEqual(len(infered), 2, infered) # None / Instance(Application) infered = list(test_utils.get_name_node(ast['DataManager']['test'], 'p').infer()) @@ -1277,7 +1278,7 @@ class InferenceTest(resources.SysPathSetup, unittest.TestCase): Z = test() ''' - ast = test_utils.build_module(code, __name__) + ast = parse(code, __name__) infered = next(ast['Z'].infer()) self.assertIsInstance(infered, nodes.List) self.assertEqual(len(infered.elts), 0) @@ -1293,7 +1294,7 @@ class InferenceTest(resources.SysPathSetup, unittest.TestCase): n = NewTest() ''' - ast = test_utils.build_module(code, __name__) + ast = parse(code, __name__) self.assertRaises(InferenceError, list, ast['NewTest'].igetattr('arg')) n = next(ast['n'].infer()) infered = list(n.igetattr('arg')) @@ -1306,7 +1307,7 @@ class InferenceTest(resources.SysPathSetup, unittest.TestCase): class Xxx(nonregr.Aaa, nonregr.Ccc): "doc" ''' - ast = test_utils.build_module(code, __name__) + ast = parse(code, __name__) parents = list(ast['Xxx'].ancestors()) self.assertEqual(len(parents), 3, parents) # Aaa, Ccc, object @@ -1316,7 +1317,7 @@ class InferenceTest(resources.SysPathSetup, unittest.TestCase): A = namedtuple('A', ['a', 'b']) B = namedtuple('B', 'a b') ''' - ast = test_utils.build_module(code, __name__) + ast = parse(code, __name__) aclass = ast['A'].infered()[0] self.assertIsInstance(aclass, nodes.Class) self.assertIn('a', aclass.instance_attrs) @@ -1348,7 +1349,7 @@ class InferenceTest(resources.SysPathSetup, unittest.TestCase): empty = A.empty() empty_list = A().empty_method() ''' - ast = test_utils.build_module(code, __name__) + ast = parse(code, __name__) int_node = ast['x'].infered()[0] self.assertIsInstance(int_node, nodes.Const) self.assertEqual(int_node.value, 1) @@ -1369,7 +1370,7 @@ class InferenceTest(resources.SysPathSetup, unittest.TestCase): vararg = args kwarg = kwargs ''' - ast = test_utils.build_module(code, __name__) + ast = parse(code, __name__) func = ast['test'] vararg = func.body[0].value kwarg = func.body[1].value @@ -1393,7 +1394,7 @@ class InferenceTest(resources.SysPathSetup, unittest.TestCase): """ # Test that inferring Thread.__init__ looks up in # the nested scope. - ast = test_utils.build_module(code, __name__) + ast = parse(code, __name__) callfunc = next(ast.nodes_of_class(nodes.CallFunc)) func = callfunc.func infered = func.infered()[0] @@ -1409,7 +1410,7 @@ class InferenceTest(resources.SysPathSetup, unittest.TestCase): sub = a - b mul = a * b """ - ast = test_utils.build_module(code, __name__) + ast = parse(code, __name__) sub = ast['sub'].infered()[0] mul = ast['mul'].infered()[0] self.assertIs(sub, YES) @@ -1428,7 +1429,7 @@ class InferenceTest(resources.SysPathSetup, unittest.TestCase): sub = a - b mul = a * b """ - ast = test_utils.build_module(code, __name__) + ast = parse(code, __name__) sub = ast['sub'].infered()[0] mul = ast['mul'].infered()[0] self.assertIs(sub, YES) @@ -1448,7 +1449,7 @@ class InferenceTest(resources.SysPathSetup, unittest.TestCase): sub = a - b mul = a * b """ - ast = test_utils.build_module(code, __name__) + ast = parse(code, __name__) sub = ast['sub'].infered()[0] mul = ast['mul'].infered()[0] self.assertIs(sub, YES) @@ -1466,7 +1467,7 @@ class InferenceTest(resources.SysPathSetup, unittest.TestCase): b = A() c = a * b """ - ast = test_utils.build_module(code, __name__) + ast = parse(code, __name__) node = ast['c'] self.assertEqual(node.infered(), [YES]) @@ -1488,7 +1489,7 @@ class InferenceTest(resources.SysPathSetup, unittest.TestCase): def do_a_thing(): pass """ - ast = test_utils.build_module(code, __name__) + ast = parse(code, __name__) node = ast['do_a_thing'] self.assertEqual(node.type, 'function') @@ -1768,7 +1769,7 @@ class InferenceTest(resources.SysPathSetup, unittest.TestCase): return "second" ''' - ast = test_utils.build_module(code, __name__) + ast = parse(code, __name__) bases = ast['Second'].bases[0] inferred = next(bases.infer()) self.assertTrue(inferred) @@ -1776,7 +1777,7 @@ class InferenceTest(resources.SysPathSetup, unittest.TestCase): self.assertEqual(inferred.qname(), 'collections.Counter') def test_inferring_with_statement_failures(self): - module = test_utils.build_module(''' + module = parse(''' class NoEnter(object): pass class NoMethod(object): @@ -1797,7 +1798,7 @@ class InferenceTest(resources.SysPathSetup, unittest.TestCase): self.assertRaises(InferenceError, next, module['no_elts'].infer()) def test_inferring_with_statement(self): - module = test_utils.build_module(''' + module = parse(''' class SelfContext(object): def __enter__(self): return self @@ -1848,7 +1849,7 @@ class InferenceTest(resources.SysPathSetup, unittest.TestCase): self.assertEqual(inferred.value, 2) def test_inferring_with_contextlib_contextmanager(self): - module = test_utils.build_module(''' + module = parse(''' import contextlib from contextlib import contextmanager @@ -1906,7 +1907,7 @@ class InferenceTest(resources.SysPathSetup, unittest.TestCase): # indices. This is the case of contextlib.nested, where the # result is a list, which is mutated later on, so it's # undetected by astroid. - module = test_utils.build_module(''' + module = parse(''' class Manager(object): def __enter__(self): return [] @@ -1916,7 +1917,7 @@ class InferenceTest(resources.SysPathSetup, unittest.TestCase): self.assertRaises(InferenceError, next, module['a'].infer()) def test_inferring_with_contextlib_contextmanager_failures(self): - module = test_utils.build_module(''' + module = parse(''' from contextlib import contextmanager def no_decorators_mgr(): @@ -2144,7 +2145,7 @@ class InferenceTest(resources.SysPathSetup, unittest.TestCase): def test_bool_value(self): # Verify the truth value of nodes. - module = test_utils.build_module(''' + module = parse(''' import collections collections_module = collections def function(): pass diff --git a/astroid/tests/unittest_lookup.py b/astroid/tests/unittest_lookup.py index cec8de37..42c50d6b 100644 --- a/astroid/tests/unittest_lookup.py +++ b/astroid/tests/unittest_lookup.py @@ -24,6 +24,7 @@ import unittest from astroid import nodes, InferenceError, NotFoundError, UnresolvableName from astroid.scoped_nodes import builtin_lookup from astroid.bases import YES +from astroid import builder from astroid import test_utils from astroid.tests import resources @@ -48,7 +49,7 @@ class LookupTest(resources.SysPathSetup, unittest.TestCase): def func(): c = 1 ''' - astroid = test_utils.build_module(code, __name__) + astroid = builder.parse(code, __name__) # a & b a = next(astroid.nodes_of_class(nodes.Name)) self.assertEqual(a.lineno, 2) @@ -72,7 +73,7 @@ class LookupTest(resources.SysPathSetup, unittest.TestCase): self.assertEqual(len(func.lookup('c')[1]), 1) def test_module(self): - astroid = test_utils.build_module('pass', __name__) + astroid = builder.parse('pass', __name__) # built-in objects none = next(astroid.ilookup('None')) self.assertIsNone(none.value) @@ -92,7 +93,7 @@ class LookupTest(resources.SysPathSetup, unittest.TestCase): class A(A): pass ''' - astroid = test_utils.build_module(code, __name__) + astroid = builder.parse(code, __name__) cls1 = astroid.locals['A'][0] cls2 = astroid.locals['A'][1] name = next(cls2.nodes_of_class(nodes.Name)) @@ -132,7 +133,7 @@ class LookupTest(resources.SysPathSetup, unittest.TestCase): def test_loopvar_hiding(self): - astroid = test_utils.build_module(""" + astroid = builder.parse(""" x = 10 for x in range(5): print (x) @@ -148,7 +149,7 @@ class LookupTest(resources.SysPathSetup, unittest.TestCase): self.assertEqual(len(xnames[2].lookup('x')[1]), 2) def test_list_comps(self): - astroid = test_utils.build_module(""" + astroid = builder.parse(""" print ([ i for i in range(10) ]) print ([ i for i in range(10) ]) print ( list( i for i in range(10) ) ) @@ -163,7 +164,7 @@ class LookupTest(resources.SysPathSetup, unittest.TestCase): def test_list_comp_target(self): """test the list comprehension target""" - astroid = test_utils.build_module(""" + astroid = builder.parse(""" ten = [ var for var in range(10) ] var """) @@ -174,7 +175,7 @@ class LookupTest(resources.SysPathSetup, unittest.TestCase): self.assertRaises(UnresolvableName, var.infered) def test_dict_comps(self): - astroid = test_utils.build_module(""" + astroid = builder.parse(""" print ({ i: j for i in range(10) for j in range(10) }) print ({ i: j for i in range(10) for j in range(10) }) """, __name__) @@ -191,7 +192,7 @@ class LookupTest(resources.SysPathSetup, unittest.TestCase): self.assertEqual(xnames[1].lookup('i')[1][0].lineno, 3) def test_set_comps(self): - astroid = test_utils.build_module(""" + astroid = builder.parse(""" print ({ i for i in range(10) }) print ({ i for i in range(10) }) """, __name__) @@ -202,7 +203,7 @@ class LookupTest(resources.SysPathSetup, unittest.TestCase): self.assertEqual(xnames[1].lookup('i')[1][0].lineno, 3) def test_set_comp_closure(self): - astroid = test_utils.build_module(""" + astroid = builder.parse(""" ten = { var for var in range(10) } var """) @@ -210,7 +211,7 @@ class LookupTest(resources.SysPathSetup, unittest.TestCase): self.assertRaises(UnresolvableName, var.infered) def test_generator_attributes(self): - tree = test_utils.build_module(""" + tree = builder.parse(""" def count(): "test" yield 0 @@ -240,7 +241,7 @@ class LookupTest(resources.SysPathSetup, unittest.TestCase): class NoName: pass p3 = NoName() ''' - astroid = test_utils.build_module(code, __name__) + astroid = builder.parse(code, __name__) p1 = next(astroid['p1'].infer()) self.assertTrue(p1.getattr('__name__')) p2 = next(astroid['p2'].infer()) @@ -251,7 +252,7 @@ class LookupTest(resources.SysPathSetup, unittest.TestCase): def test_function_module_special(self): - astroid = test_utils.build_module(''' + astroid = builder.parse(''' def initialize(linter): """initialize linter with checkers in this package """ package_load(linter, __path__[0]) @@ -322,7 +323,7 @@ class LookupTest(resources.SysPathSetup, unittest.TestCase): def __init__(self): print (FileA.funcA()) ''' - astroid = test_utils.build_module(code, __name__) + astroid = builder.parse(code, __name__) it = astroid['Test']['__init__'].ilookup('FileA') obj = next(it) self.assertIsInstance(obj, nodes.Class) @@ -343,7 +344,7 @@ class LookupTest(resources.SysPathSetup, unittest.TestCase): def run1(): f = Frobble() ''' - astroid = test_utils.build_module(code, __name__) + astroid = builder.parse(code, __name__) stmts = astroid['run2'].lookup('Frobbel')[1] self.assertEqual(len(stmts), 0) stmts = astroid['run1'].lookup('Frobbel')[1] diff --git a/astroid/tests/unittest_nodes.py b/astroid/tests/unittest_nodes.py index 3e53750b..86e42b85 100644 --- a/astroid/tests/unittest_nodes.py +++ b/astroid/tests/unittest_nodes.py @@ -159,7 +159,7 @@ class _NodeTest(unittest.TestCase): try: return self.__class__.__dict__['CODE_Astroid'] except KeyError: - astroid = test_utils.build_module(self.CODE) + astroid = builder.parse(self.CODE) self.__class__.CODE_Astroid = astroid return astroid @@ -359,7 +359,7 @@ from ..cave import wine\n\n""" except PickleError: pass ''' - astroid = test_utils.build_module(code) + astroid = builder.parse(code) handler_type = astroid.body[1].handlers[0].type excs = list(unpack_infer(handler_type)) @@ -435,9 +435,9 @@ class NameNodeTest(unittest.TestCase): """ if sys.version_info >= (3, 0): with self.assertRaises(AstroidBuildingException): - test_utils.build_module(code) + builder.parse(code) else: - ast = test_utils.build_module(code) + ast = builder.parse(code) ass_true = ast['True'] self.assertIsInstance(ass_true, nodes.AssName) self.assertEqual(ass_true.name, "True") @@ -448,7 +448,7 @@ class NameNodeTest(unittest.TestCase): class ArgumentsNodeTC(unittest.TestCase): def test_linenumbering(self): - ast = test_utils.build_module(''' + ast = builder.parse(''' def func(a, b): pass x = lambda x: None @@ -481,7 +481,7 @@ class UnboundMethodNodeTest(unittest.TestCase): # https://bitbucket.org/logilab/astroid/issue/91, which tests # that UnboundMethod doesn't call super when doing .getattr. - ast = test_utils.build_module(''' + ast = builder.parse(''' class A(object): def test(self): pass @@ -498,7 +498,7 @@ class UnboundMethodNodeTest(unittest.TestCase): class BoundMethodNodeTest(unittest.TestCase): def test_is_property(self): - ast = test_utils.build_module(''' + ast = builder.parse(''' import abc def cached_property(): diff --git a/astroid/tests/unittest_peephole.py b/astroid/tests/unittest_peephole.py index aa8c6aef..68a00633 100644 --- a/astroid/tests/unittest_peephole.py +++ b/astroid/tests/unittest_peephole.py @@ -24,6 +24,7 @@ import unittest import astroid from astroid import astpeephole +from astroid import builder from astroid import manager from astroid import test_utils from astroid.tests import resources @@ -104,7 +105,7 @@ class PeepholeOptimizer(unittest.TestCase): def test_optimisation_disabled(self): try: MANAGER.optimize_ast = False - module = test_utils.build_module(""" + module = builder.parse(""" '1' + '2' + '3' """) self.assertIsInstance(module.body[0], astroid.Discard) diff --git a/astroid/tests/unittest_scoped_nodes.py b/astroid/tests/unittest_scoped_nodes.py index f995661d..2e946a36 100644 --- a/astroid/tests/unittest_scoped_nodes.py +++ b/astroid/tests/unittest_scoped_nodes.py @@ -34,6 +34,7 @@ from astroid.bases import ( BUILTINS, Instance, BoundMethod, UnboundMethod, Generator ) +from astroid import builder from astroid import __pkginfo__ from astroid import test_utils from astroid.tests import resources @@ -108,7 +109,7 @@ class ModuleNodeTest(ModuleLoader, unittest.TestCase): res = sorted(m.wildcard_import_names()) self.assertEqual(res, ['Aaa', 'func', 'name', 'other']) - m = test_utils.build_module(''' + m = builder.parse(''' from missing import tzop trop = "test" __all__ = (trop, "test1", tzop, 42) @@ -116,7 +117,7 @@ class ModuleNodeTest(ModuleLoader, unittest.TestCase): res = sorted(m.wildcard_import_names()) self.assertEqual(res, ["test", "test1"]) - m = test_utils.build_module(''' + m = builder.parse(''' test = tzop = 42 __all__ = ('test', ) + ('tzop', ) ''') @@ -129,7 +130,7 @@ class ModuleNodeTest(ModuleLoader, unittest.TestCase): appli += 2 del appli ''' - astroid = test_utils.build_module(data, __name__) + astroid = builder.parse(data, __name__) # test del statement not returned by getattr self.assertEqual(len(astroid.getattr('appli')), 2, astroid.getattr('appli')) @@ -161,7 +162,7 @@ class ModuleNodeTest(ModuleLoader, unittest.TestCase): def test_import_1(self): data = '''from . import subpackage''' sys.path.insert(0, resources.find('data')) - astroid = test_utils.build_module(data, 'package', 'data/package/__init__.py') + astroid = builder.parse(data, 'package', 'data/package/__init__.py') try: m = astroid.import_module('', level=1) self.assertEqual(m.name, 'package') @@ -174,7 +175,7 @@ class ModuleNodeTest(ModuleLoader, unittest.TestCase): def test_import_2(self): data = '''from . import subpackage as pouet''' - astroid = test_utils.build_module(data, 'package', 'data/package/__init__.py') + astroid = builder.parse(data, 'package', 'data/package/__init__.py') sys.path.insert(0, resources.find('data')) try: m = astroid.import_module('', level=1) @@ -188,7 +189,7 @@ class ModuleNodeTest(ModuleLoader, unittest.TestCase): def test_file_stream_in_memory(self): data = '''irrelevant_variable is irrelevant''' - astroid = test_utils.build_module(data, 'in_memory') + astroid = builder.parse(data, 'in_memory') with warnings.catch_warnings(record=True): self.assertEqual(astroid.file_stream.read().decode(), data) @@ -280,7 +281,7 @@ class FunctionNodeTest(ModuleLoader, unittest.TestCase): def nested_args(a, (b, c, d)): "nested arguments test" ''' - tree = test_utils.build_module(code) + tree = builder.parse(code) func = tree['nested_args'] self.assertEqual(sorted(func.locals), ['a', 'b', 'c', 'd']) self.assertEqual(func.args.format_args(), 'a, (b, c, d)') @@ -353,12 +354,12 @@ class FunctionNodeTest(ModuleLoader, unittest.TestCase): def f(): g = lambda: None ''' - astroid = test_utils.build_module(data) + astroid = builder.parse(data) g = list(astroid['f'].ilookup('g'))[0] self.assertEqual(g.pytype(), '%s.function' % BUILTINS) def test_lambda_qname(self): - astroid = test_utils.build_module('lmbd = lambda: None', __name__) + astroid = builder.parse('lmbd = lambda: None', __name__) self.assertEqual('%s.<lambda>' % __name__, astroid['lmbd'].parent.value.qname()) def test_is_method(self): @@ -380,7 +381,7 @@ class FunctionNodeTest(ModuleLoader, unittest.TestCase): def sfunction(): return -1 ''' - astroid = test_utils.build_module(data) + astroid = builder.parse(data) self.assertTrue(astroid['A']['meth1'].is_method()) self.assertTrue(astroid['A']['meth2'].is_method()) self.assertTrue(astroid['A']['meth3'].is_method()) @@ -392,7 +393,7 @@ class FunctionNodeTest(ModuleLoader, unittest.TestCase): code = 'def f(a, (b, c), *args, **kwargs): pass' else: code = 'def f(a, b, c, *args, **kwargs): pass' - astroid = test_utils.build_module(code, __name__) + astroid = builder.parse(code, __name__) self.assertEqual(astroid['f'].argnames(), ['a', 'b', 'c', 'args', 'kwargs']) def test_return_nothing(self): @@ -403,7 +404,7 @@ class FunctionNodeTest(ModuleLoader, unittest.TestCase): a = func() ''' - astroid = test_utils.build_module(data) + astroid = builder.parse(data) call = astroid.body[1].value func_vals = call.infered() self.assertEqual(len(func_vals), 1) @@ -419,7 +420,7 @@ class FunctionNodeTest(ModuleLoader, unittest.TestCase): test.bar = 1 test() """ - astroid = test_utils.build_module(data, 'mod') + astroid = builder.parse(data, 'mod') func = astroid.body[2].value.func.infered()[0] self.assertIsInstance(func, nodes.Function) self.assertEqual(func.name, 'test') @@ -428,7 +429,7 @@ class FunctionNodeTest(ModuleLoader, unittest.TestCase): self.assertEqual(one.value, 1) def test_type_builtin_descriptor_subclasses(self): - astroid = test_utils.build_module(""" + astroid = builder.parse(""" class classonlymethod(classmethod): pass class staticonlymethod(staticmethod): @@ -459,7 +460,7 @@ class FunctionNodeTest(ModuleLoader, unittest.TestCase): 'staticmethod') def test_decorator_builtin_descriptors(self): - astroid = test_utils.build_module(""" + astroid = builder.parse(""" def static_decorator(platform=None, order=50): def wrapper(f): f.cgm_module = True @@ -582,7 +583,7 @@ class ClassNodeTest(ModuleLoader, unittest.TestCase): self.assertEqual(len(cls.getattr('__mro__')), 1) def test_cls_special_attributes_2(self): - astroid = test_utils.build_module(''' + astroid = builder.parse(''' class A: pass class B: pass @@ -611,7 +612,7 @@ class ClassNodeTest(ModuleLoader, unittest.TestCase): self.assertEqual(r_sibling.name, 'YOUPI') def test_local_attr_ancestors(self): - module = test_utils.build_module(''' + module = builder.parse(''' class A(): def __init__(self): pass class B(A): pass @@ -646,7 +647,7 @@ class ClassNodeTest(ModuleLoader, unittest.TestCase): self.assertRaises(StopIteration, partial(next, it)) def test_local_attr_mro(self): - module = test_utils.build_module(''' + module = builder.parse(''' class A(object): def __init__(self): pass class B(A): @@ -748,7 +749,7 @@ class ClassNodeTest(ModuleLoader, unittest.TestCase): return cls registered = classmethod(registered) ''' - astroid = test_utils.build_module(data, __name__) + astroid = builder.parse(data, __name__) cls = astroid['WebAppObject'] self.assertEqual(sorted(cls.locals.keys()), ['appli', 'config', 'registered', 'schema']) @@ -760,7 +761,7 @@ class ClassNodeTest(ModuleLoader, unittest.TestCase): appli += 2 del self.appli ''' - astroid = test_utils.build_module(data, __name__) + astroid = builder.parse(data, __name__) cls = astroid['WebAppObject'] # test del statement not returned by getattr self.assertEqual(len(cls.getattr('appli')), 2) @@ -774,7 +775,7 @@ class ClassNodeTest(ModuleLoader, unittest.TestCase): self.appli += 2 del self.appli ''' - astroid = test_utils.build_module(data) + astroid = builder.parse(data) inst = Instance(astroid['WebAppObject']) # test del statement not returned by getattr self.assertEqual(len(inst.getattr('appli')), 2) @@ -798,7 +799,7 @@ class ClassNodeTest(ModuleLoader, unittest.TestCase): val = self.bb self.aa += val ''' - astroid = test_utils.build_module(data) + astroid = builder.parse(data) inst = Instance(astroid['Klass']) self.assertEqual(len(inst.getattr('aa')), 3, inst.getattr('aa')) self.assertEqual(len(inst.getattr('bb')), 1, inst.getattr('bb')) @@ -821,7 +822,7 @@ class ClassNodeTest(ModuleLoader, unittest.TestCase): inst = Clazz() inst.m4 = func ''' - astroid = test_utils.build_module(data) + astroid = builder.parse(data) cls = astroid['Clazz'] # test del statement not returned by getattr for method in ('m1', 'm2', 'm3'): @@ -846,7 +847,7 @@ class ClassNodeTest(ModuleLoader, unittest.TestCase): class Past(Present): pass ''' - astroid = test_utils.build_module(data) + astroid = builder.parse(data) past = astroid['Past'] attr = past.getattr('attr') self.assertEqual(len(attr), 1) @@ -866,7 +867,7 @@ class ClassNodeTest(ModuleLoader, unittest.TestCase): def g2(): pass ''' - astroid = test_utils.build_module(data) + astroid = builder.parse(data) self.assertEqual(astroid['g1'].fromlineno, 4) self.assertEqual(astroid['g1'].tolineno, 5) self.assertEqual(astroid['g2'].fromlineno, 9) @@ -874,7 +875,7 @@ class ClassNodeTest(ModuleLoader, unittest.TestCase): @test_utils.require_version(maxver='3.0') def test_simple_metaclass(self): - astroid = test_utils.build_module(""" + astroid = builder.parse(""" class Test(object): __metaclass__ = type """) @@ -884,7 +885,7 @@ class ClassNodeTest(ModuleLoader, unittest.TestCase): self.assertEqual(metaclass.name, 'type') def test_metaclass_error(self): - astroid = test_utils.build_module(""" + astroid = builder.parse(""" class Test(object): __metaclass__ = typ """) @@ -893,7 +894,7 @@ class ClassNodeTest(ModuleLoader, unittest.TestCase): @test_utils.require_version(maxver='3.0') def test_metaclass_imported(self): - astroid = test_utils.build_module(""" + astroid = builder.parse(""" from abc import ABCMeta class Test(object): __metaclass__ = ABCMeta @@ -905,7 +906,7 @@ class ClassNodeTest(ModuleLoader, unittest.TestCase): self.assertEqual(metaclass.name, 'ABCMeta') def test_metaclass_yes_leak(self): - astroid = test_utils.build_module(""" + astroid = builder.parse(""" # notice `ab` instead of `abc` from ab import ABCMeta @@ -917,7 +918,7 @@ class ClassNodeTest(ModuleLoader, unittest.TestCase): @test_utils.require_version(maxver='3.0') def test_newstyle_and_metaclass_good(self): - astroid = test_utils.build_module(""" + astroid = builder.parse(""" from abc import ABCMeta class Test: __metaclass__ = ABCMeta @@ -925,7 +926,7 @@ class ClassNodeTest(ModuleLoader, unittest.TestCase): klass = astroid['Test'] self.assertTrue(klass.newstyle) self.assertEqual(klass.metaclass().name, 'ABCMeta') - astroid = test_utils.build_module(""" + astroid = builder.parse(""" from abc import ABCMeta __metaclass__ = ABCMeta class Test: @@ -937,7 +938,7 @@ class ClassNodeTest(ModuleLoader, unittest.TestCase): @test_utils.require_version(maxver='3.0') def test_nested_metaclass(self): - astroid = test_utils.build_module(""" + astroid = builder.parse(""" from abc import ABCMeta class A(object): __metaclass__ = ABCMeta @@ -960,7 +961,7 @@ class ClassNodeTest(ModuleLoader, unittest.TestCase): @test_utils.require_version(maxver='3.0') def test_parent_metaclass(self): - astroid = test_utils.build_module(""" + astroid = builder.parse(""" from abc import ABCMeta class Test: __metaclass__ = ABCMeta @@ -974,7 +975,7 @@ class ClassNodeTest(ModuleLoader, unittest.TestCase): @test_utils.require_version(maxver='3.0') def test_metaclass_ancestors(self): - astroid = test_utils.build_module(""" + astroid = builder.parse(""" from abc import ABCMeta class FirstMeta(object): @@ -1074,7 +1075,7 @@ class ClassNodeTest(ModuleLoader, unittest.TestCase): self.assertIsNone(inferred.metaclass()) def test_nonregr_infer_callresult(self): - astroid = test_utils.build_module(""" + astroid = builder.parse(""" class Delegate(object): def __get__(self, obj, cls): return getattr(obj._subject, self.attribute) @@ -1091,7 +1092,7 @@ class ClassNodeTest(ModuleLoader, unittest.TestCase): self.assertEqual(list(instance.infer()), [YES]) def test_slots(self): - astroid = test_utils.build_module(""" + astroid = builder.parse(""" from collections import deque from textwrap import dedent @@ -1138,7 +1139,7 @@ class ClassNodeTest(ModuleLoader, unittest.TestCase): @test_utils.require_version(maxver='3.0') def test_slots_py2(self): - module = test_utils.build_module(""" + module = builder.parse(""" class UnicodeSlots(object): __slots__ = (u"a", u"b", "c") """) @@ -1150,7 +1151,7 @@ class ClassNodeTest(ModuleLoader, unittest.TestCase): @test_utils.require_version(maxver='3.0') def test_slots_py2_not_implemented(self): - module = test_utils.build_module(""" + module = builder.parse(""" class OldStyle: __slots__ = ("a", "b") """) @@ -1160,7 +1161,7 @@ class ClassNodeTest(ModuleLoader, unittest.TestCase): self.assertEqual(str(cm.exception), msg) def test_slots_empty_list_of_slots(self): - module = test_utils.build_module(""" + module = builder.parse(""" class Klass(object): __slots__ = () """) @@ -1199,7 +1200,7 @@ class ClassNodeTest(ModuleLoader, unittest.TestCase): self.assertTrue(node.newstyle) def test_with_metaclass_mro(self): - astroid = test_utils.build_module(""" + astroid = builder.parse(""" import six class C(object): @@ -1212,7 +1213,7 @@ class ClassNodeTest(ModuleLoader, unittest.TestCase): self.assertEqualMro(astroid['A'], ['A', 'B', 'C', 'object']) def test_mro(self): - astroid = test_utils.build_module(""" + astroid = builder.parse(""" class C(object): pass class D(dict, C): pass @@ -1346,7 +1347,7 @@ class ClassNodeTest(ModuleLoader, unittest.TestCase): self.assertEqual(inferred.value, 42) def test_has_dynamic_getattr(self): - module = test_utils.build_module(""" + module = builder.parse(""" class Getattr(object): def __getattr__(self, attrname): pass @@ -1370,7 +1371,7 @@ class ClassNodeTest(ModuleLoader, unittest.TestCase): self.assertFalse(module['timedelta'].has_dynamic_getattr()) def test_duplicate_bases_namedtuple(self): - module = test_utils.build_module(""" + module = builder.parse(""" import collections _A = collections.namedtuple('A', 'a') |