diff --git a/jedi/evaluate/arguments.py b/jedi/evaluate/arguments.py index ef74b26c..beab4c8c 100644 --- a/jedi/evaluate/arguments.py +++ b/jedi/evaluate/arguments.py @@ -101,7 +101,9 @@ class TreeArguments(AbstractArguments): if self.argument_node is None: return - if not (self.argument_node.type == 'arglist' or ( + # Allow testlist here as well for Python2's class inheritance + # definitions. + if not (self.argument_node.type in ('arglist', 'testlist') or ( # in python 3.5 **arg is an argument, not arglist (self.argument_node.type == 'argument') and self.argument_node.children[0] in ('*', '**'))): diff --git a/test/completion/classes.py b/test/completion/classes.py index 13e8ff95..92b8dc90 100644 --- a/test/completion/classes.py +++ b/test/completion/classes.py @@ -215,6 +215,32 @@ class Dude(classgetter()): #? ['shout'] self.s +# ----------------- +# multiple inheritance # 1071 +# ----------------- + +class FactorMixin(object): + FACTOR_1 = 0.1 + +class Calc(object): + def sum(self, a, b): + self.xxx = 3 + return a + b + +class BetterCalc(Calc, FactorMixin): + def multiply_factor(self, a): + return a * self.FACTOR_1 + +calc = BetterCalc() +#? ['sum'] +calc.sum +#? ['multiply_factor'] +calc.multip +#? ['FACTOR_1'] +calc.FACTOR_1 +#? ['xxx'] +calc.xxx + # ----------------- # __call__ # -----------------