def extractBuiltinArgs(node, builtin_spec, builtin_class, empty_special_class=None): try: kw = node.getCallKw() # TODO: Could check for too many / too few, even if they are unknown, we might # raise that error, but that need not be optimized immediately. if not kw.isMappingWithConstantStringKeys(): return None pairs = kw.getMappingStringKeyPairs() if pairs and not builtin_spec.allowsKeywords(): raise TooManyArguments( TypeError(builtin_spec.getKeywordRefusalText())) args = node.getCallArgs() if not args.canPredictIterationValues(): return None positional = args.getIterationValues() if not positional and not pairs and empty_special_class is not None: return empty_special_class(source_ref=node.getSourceReference()) args_dict = matchCall( func_name=builtin_spec.getName(), args=builtin_spec.getArgumentNames(), star_list_arg=builtin_spec.getStarListArgumentName(), star_dict_arg=builtin_spec.getStarDictArgumentName(), num_defaults=builtin_spec.getDefaultCount(), positional=positional, pairs=pairs) except TooManyArguments as e: from nuitka.nodes.NodeMakingHelpers import ( makeRaiseExceptionReplacementExpressionFromInstance, wrapExpressionWithSideEffects) return wrapExpressionWithSideEffects( new_node=makeRaiseExceptionReplacementExpressionFromInstance( expression=node, exception=e.getRealException()), old_node=node, side_effects=node.extractPreCallSideEffects()) args_list = [] for argument_name in builtin_spec.getArgumentNames(): args_list.append(args_dict[argument_name]) if builtin_spec.getStarListArgumentName() is not None: args_list.append(args_dict[builtin_spec.getStarListArgumentName()]) if builtin_spec.getStarDictArgumentName() is not None: args_list.append(args_dict[builtin_spec.getStarDictArgumentName()]) # Using list reference for passing the arguments without names, pylint: disable=W0142 return builtin_class(*args_list, source_ref=node.getSourceReference())
def extractBuiltinArgs(node, builtin_spec, builtin_class, empty_special_class = None): try: kw = node.getCallKw() # TODO: Could check for too many / too few, even if they are unknown, we # might raise that error, but that need not be optimized immediately. if not kw.isMappingWithConstantStringKeys(): return None pairs = kw.getMappingStringKeyPairs() if pairs and not builtin_spec.allowsKeywords(): raise TooManyArguments( TypeError(builtin_spec.getKeywordRefusalText()) ) args = node.getCallArgs() if not args.canPredictIterationValues(): return None positional = args.getIterationValues() if not positional and not pairs and empty_special_class is not None: return empty_special_class(source_ref = node.getSourceReference()) args_dict = matchCall( func_name = builtin_spec.getName(), args = builtin_spec.getArgumentNames(), star_list_arg = builtin_spec.getStarListArgumentName(), star_dict_arg = builtin_spec.getStarDictArgumentName(), num_defaults = builtin_spec.getDefaultCount(), positional = positional, pairs = pairs ) except TooManyArguments as e: from nuitka.nodes.NodeMakingHelpers import ( makeRaiseExceptionReplacementExpressionFromInstance, wrapExpressionWithSideEffects ) return wrapExpressionWithSideEffects( new_node = makeRaiseExceptionReplacementExpressionFromInstance( expression = node, exception = e.getRealException() ), old_node = node, side_effects = node.extractPreCallSideEffects() ) args_list = [] for argument_name in builtin_spec.getArgumentNames(): args_list.append(args_dict[argument_name]) if builtin_spec.getStarListArgumentName() is not None: args_list.append(args_dict[builtin_spec.getStarListArgumentName()]) if builtin_spec.getStarDictArgumentName() is not None: args_list.append(args_dict[builtin_spec.getStarDictArgumentName()]) # Using list reference for passing the arguments without names, # pylint: disable=W0142 return builtin_class( *args_list, source_ref = node.getSourceReference() )