MCPcopy Index your code
hub / github.com/python/cpython / parse_no_args

Method parse_no_args

Tools/clinic/libclinic/parse_args.py:383–419  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

381 self.parser_definition = code
382
383 def parse_no_args(self) -> None:
384 parser_code: list[str] | None
385 simple_return = self.use_simple_return()
386 if self.func.kind is GETTER:
387 self.parser_prototype = PARSER_PROTOTYPE_GETTER
388 parser_code = []
389 elif self.func.kind is SETTER:
390 self.parser_prototype = PARSER_PROTOTYPE_SETTER
391 parser_code = []
392 elif not self.requires_defining_class:
393 # no self.parameters, METH_NOARGS
394 self.flags = "METH_NOARGS"
395 self.parser_prototype = PARSER_PROTOTYPE_NOARGS
396 parser_code = []
397 else:
398 assert self.fastcall
399
400 self.flags = "METH_METHOD|METH_FASTCALL|METH_KEYWORDS"
401 self.parser_prototype = PARSER_PROTOTYPE_DEF_CLASS
402 return_error = ('return NULL;' if simple_return
403 else 'goto exit;')
404 parser_code = [libclinic.normalize_snippet("""
405 if (nargs || (kwnames && PyTuple_GET_SIZE(kwnames))) {{
406 PyErr_SetString(PyExc_TypeError, "{name}() takes no arguments");
407 %s
408 }}
409 """ % return_error, indent=4)]
410
411 if simple_return:
412 self.parser_definition = '\n'.join([
413 self.parser_prototype,
414 '{{',
415 *parser_code,
416 ' return {c_basename}_impl({impl_arguments});',
417 '}}'])
418 else:
419 self.parser_body(*parser_code)
420
421 def parse_one_arg(self) -> None:
422 self.flags = "METH_O"

Callers 1

parse_argsMethod · 0.95

Calls 3

use_simple_returnMethod · 0.95
parser_bodyMethod · 0.95
joinMethod · 0.45

Tested by

no test coverage detected