@@ -1455,13 +1455,13 @@ def visit_call(self, node: nodes.Call) -> None:
14551455 """
14561456
14571457 def _dp (s , val = None ):
1458- if "Attribute.__init__ l.13" not in str ( node ):
1459- # print("Not in init")
1460- return
1461- if val is None :
1462- print (f" { s } " , flush = True )
1463- else :
1464- print (f" { s } : { val } " , flush = True )
1458+ return
1459+ ## if "Attribute.__init__" not in str(node):
1460+ ## return
1461+ ## if val is None:
1462+ ## print(f" {s}", flush=True)
1463+ ## else:
1464+ ## print(f" {s}: {val}", flush=True)
14651465
14661466 _dp ("-" * 25 )
14671467 _dp ("visit call, node" , node )
@@ -1477,24 +1477,44 @@ def _dp(s, val=None):
14771477
14781478 _dp ("Data dump for __init__ call" )
14791479 call_site = astroid .arguments .CallSite .from_call (node )
1480- num_positional_args = len (call_site .positional_arguments )
1480+ _dp ("call_site" , call_site )
1481+ # _dp("call_site args", call_site.arguments)
1482+ # _dp("call site positional args:", call_site.positional_arguments)
1483+ # _dp("call site keyword args:", call_site.keyword_arguments)
1484+ # _dp("call site invalid args", call_site.has_invalid_arguments())
1485+ # _dp("call site inv keywords", call_site.has_invalid_keywords())
1486+ _dp ("node args" , node .args )
14811487 _dp ("node frame" , node .frame ())
1482- _dp ("isinst" , isinstance (node .frame (), nodes .ClassDef ))
1483- _dp ("funcdef" , isinstance (called , nodes .FunctionDef ))
1488+ # _dp("isinst", isinstance(node.frame(), nodes.ClassDef))
1489+ # _dp("funcdef", isinstance(called, nodes.FunctionDef))
14841490 _dp ("called" , called )
1491+ _dp ("bound method init in called" , "BoundMethod __init__ of builtins.object" in str (called ))
1492+ _dp ("called.args" , called .args )
14851493 _dp ("frame body" , node .frame ().body )
1486- _dp ("called in frame body" , called in node .frame ().body )
1487- _dp ("npa" , num_positional_args )
1488- _dp ("dec names" , called .decoratornames ())
1494+ # _dp("called in frame body", called in node.frame().body)
1495+ # _dp("dec names", called.decoratornames())
1496+
1497+ def _call_site_has_args (cs ):
1498+ "True if any args passed."
1499+ has_args = (
1500+ False
1501+ or len (cs .positional_arguments ) > 0
1502+ or len (cs .keyword_arguments .items ()) > 0
1503+ or cs .starargs is not None
1504+ or cs .kwargs is not None
1505+ )
1506+ return has_args
14891507
14901508 if called .args .args is None :
1491- _dp ("called.args.args is None" )
1492- _dp ("called.name" , called .name )
14931509 if called .name == "isinstance" :
14941510 # Verify whether second argument of isinstance is a valid type
14951511 self ._check_isinstance_args (node , callable_name )
14961512 # Built-in functions have no argument information.
1497- _dp ("Returning now" )
1513+ # Check built-in __init__ ... a user-defined __init__ function
1514+ # is handled elsewhere.
1515+ if "BoundMethod __init__ of builtins.object" in str (called ):
1516+ if _call_site_has_args (call_site ):
1517+ self .add_message ("too-many-function-args" , node = node , args = ("__init__" ,))
14981518 return
14991519
15001520 if len (called .argnames ()) != len (set (called .argnames ())):
0 commit comments