Coverage Report

Created: 2026-01-17 06:45

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/cpython3/Objects/clinic/moduleobject.c.h
Line
Count
Source
1
/*[clinic input]
2
preserve
3
[clinic start generated code]*/
4
5
#if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
6
#  include "pycore_gc.h"          // PyGC_Head
7
#  include "pycore_runtime.h"     // _Py_ID()
8
#endif
9
#include "pycore_modsupport.h"    // _PyArg_UnpackKeywords()
10
11
PyDoc_STRVAR(module___init____doc__,
12
"module(name, doc=None)\n"
13
"--\n"
14
"\n"
15
"Create a module object.\n"
16
"\n"
17
"The name must be a string; the optional doc argument can have any type.");
18
19
static int
20
module___init___impl(PyModuleObject *self, PyObject *name, PyObject *doc);
21
22
static int
23
module___init__(PyObject *self, PyObject *args, PyObject *kwargs)
24
590
{
25
590
    int return_value = -1;
26
590
    #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
27
28
590
    #define NUM_KEYWORDS 2
29
590
    static struct {
30
590
        PyGC_Head _this_is_not_used;
31
590
        PyObject_VAR_HEAD
32
590
        Py_hash_t ob_hash;
33
590
        PyObject *ob_item[NUM_KEYWORDS];
34
590
    } _kwtuple = {
35
590
        .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS)
36
590
        .ob_hash = -1,
37
590
        .ob_item = { &_Py_ID(name), &_Py_ID(doc), },
38
590
    };
39
590
    #undef NUM_KEYWORDS
40
590
    #define KWTUPLE (&_kwtuple.ob_base.ob_base)
41
42
    #else  // !Py_BUILD_CORE
43
    #  define KWTUPLE NULL
44
    #endif  // !Py_BUILD_CORE
45
46
590
    static const char * const _keywords[] = {"name", "doc", NULL};
47
590
    static _PyArg_Parser _parser = {
48
590
        .keywords = _keywords,
49
590
        .fname = "module",
50
590
        .kwtuple = KWTUPLE,
51
590
    };
52
590
    #undef KWTUPLE
53
590
    PyObject *argsbuf[2];
54
590
    PyObject * const *fastargs;
55
590
    Py_ssize_t nargs = PyTuple_GET_SIZE(args);
56
590
    Py_ssize_t noptargs = nargs + (kwargs ? PyDict_GET_SIZE(kwargs) : 0) - 1;
57
590
    PyObject *name;
58
590
    PyObject *doc = Py_None;
59
60
590
    fastargs = _PyArg_UnpackKeywords(_PyTuple_CAST(args)->ob_item, nargs, kwargs, NULL, &_parser,
61
590
            /*minpos*/ 1, /*maxpos*/ 2, /*minkw*/ 0, /*varpos*/ 0, argsbuf);
62
590
    if (!fastargs) {
63
0
        goto exit;
64
0
    }
65
590
    if (!PyUnicode_Check(fastargs[0])) {
66
0
        _PyArg_BadArgument("module", "argument 'name'", "str", fastargs[0]);
67
0
        goto exit;
68
0
    }
69
590
    name = fastargs[0];
70
590
    if (!noptargs) {
71
590
        goto skip_optional_pos;
72
590
    }
73
0
    doc = fastargs[1];
74
590
skip_optional_pos:
75
590
    return_value = module___init___impl((PyModuleObject *)self, name, doc);
76
77
590
exit:
78
590
    return return_value;
79
590
}
80
/*[clinic end generated code: output=523344ad09ab2ea1 input=a9049054013a1b77]*/