boolean (@NotNull PyCallExpression call, @NotNull PyFunction function) { /* Class could be designed to be used in cooperative multiple inheritance so `super()` could be resolved to some non-object class that is able to receive passed arguments. Example: class Shape(object): def __init__(self, shapename, **kwds): self.shapename = shapename # in case of ColoredShape the call below will be executed on Colored # so warning should not be raised super(Shape, self).__init__(**kwds) class Colored(object): def __init__(self, color, **kwds): self.color = color super(Colored, self).__init__(**kwds) class ColoredShape(Shape, Colored): pass */ final PyClass receiverClass = function.getContainingClass(); if (receiverClass != null && PyUtil.isObjectClass(receiverClass)) { final PyExpression receiverExpression = call.getReceiver(null); if (receiverExpression instanceof PyCallExpression && PyUtil.isSuperCall((PyCallExpression)receiverExpression)) { return true; } } return false; }