17db96d56Sopenharmony_ci/*[clinic input]
27db96d56Sopenharmony_cipreserve
37db96d56Sopenharmony_ci[clinic start generated code]*/
47db96d56Sopenharmony_ci
57db96d56Sopenharmony_ciPyDoc_STRVAR(_imp_lock_held__doc__,
67db96d56Sopenharmony_ci"lock_held($module, /)\n"
77db96d56Sopenharmony_ci"--\n"
87db96d56Sopenharmony_ci"\n"
97db96d56Sopenharmony_ci"Return True if the import lock is currently held, else False.\n"
107db96d56Sopenharmony_ci"\n"
117db96d56Sopenharmony_ci"On platforms without threads, return False.");
127db96d56Sopenharmony_ci
137db96d56Sopenharmony_ci#define _IMP_LOCK_HELD_METHODDEF    \
147db96d56Sopenharmony_ci    {"lock_held", (PyCFunction)_imp_lock_held, METH_NOARGS, _imp_lock_held__doc__},
157db96d56Sopenharmony_ci
167db96d56Sopenharmony_cistatic PyObject *
177db96d56Sopenharmony_ci_imp_lock_held_impl(PyObject *module);
187db96d56Sopenharmony_ci
197db96d56Sopenharmony_cistatic PyObject *
207db96d56Sopenharmony_ci_imp_lock_held(PyObject *module, PyObject *Py_UNUSED(ignored))
217db96d56Sopenharmony_ci{
227db96d56Sopenharmony_ci    return _imp_lock_held_impl(module);
237db96d56Sopenharmony_ci}
247db96d56Sopenharmony_ci
257db96d56Sopenharmony_ciPyDoc_STRVAR(_imp_acquire_lock__doc__,
267db96d56Sopenharmony_ci"acquire_lock($module, /)\n"
277db96d56Sopenharmony_ci"--\n"
287db96d56Sopenharmony_ci"\n"
297db96d56Sopenharmony_ci"Acquires the interpreter\'s import lock for the current thread.\n"
307db96d56Sopenharmony_ci"\n"
317db96d56Sopenharmony_ci"This lock should be used by import hooks to ensure thread-safety when importing\n"
327db96d56Sopenharmony_ci"modules. On platforms without threads, this function does nothing.");
337db96d56Sopenharmony_ci
347db96d56Sopenharmony_ci#define _IMP_ACQUIRE_LOCK_METHODDEF    \
357db96d56Sopenharmony_ci    {"acquire_lock", (PyCFunction)_imp_acquire_lock, METH_NOARGS, _imp_acquire_lock__doc__},
367db96d56Sopenharmony_ci
377db96d56Sopenharmony_cistatic PyObject *
387db96d56Sopenharmony_ci_imp_acquire_lock_impl(PyObject *module);
397db96d56Sopenharmony_ci
407db96d56Sopenharmony_cistatic PyObject *
417db96d56Sopenharmony_ci_imp_acquire_lock(PyObject *module, PyObject *Py_UNUSED(ignored))
427db96d56Sopenharmony_ci{
437db96d56Sopenharmony_ci    return _imp_acquire_lock_impl(module);
447db96d56Sopenharmony_ci}
457db96d56Sopenharmony_ci
467db96d56Sopenharmony_ciPyDoc_STRVAR(_imp_release_lock__doc__,
477db96d56Sopenharmony_ci"release_lock($module, /)\n"
487db96d56Sopenharmony_ci"--\n"
497db96d56Sopenharmony_ci"\n"
507db96d56Sopenharmony_ci"Release the interpreter\'s import lock.\n"
517db96d56Sopenharmony_ci"\n"
527db96d56Sopenharmony_ci"On platforms without threads, this function does nothing.");
537db96d56Sopenharmony_ci
547db96d56Sopenharmony_ci#define _IMP_RELEASE_LOCK_METHODDEF    \
557db96d56Sopenharmony_ci    {"release_lock", (PyCFunction)_imp_release_lock, METH_NOARGS, _imp_release_lock__doc__},
567db96d56Sopenharmony_ci
577db96d56Sopenharmony_cistatic PyObject *
587db96d56Sopenharmony_ci_imp_release_lock_impl(PyObject *module);
597db96d56Sopenharmony_ci
607db96d56Sopenharmony_cistatic PyObject *
617db96d56Sopenharmony_ci_imp_release_lock(PyObject *module, PyObject *Py_UNUSED(ignored))
627db96d56Sopenharmony_ci{
637db96d56Sopenharmony_ci    return _imp_release_lock_impl(module);
647db96d56Sopenharmony_ci}
657db96d56Sopenharmony_ci
667db96d56Sopenharmony_ciPyDoc_STRVAR(_imp__fix_co_filename__doc__,
677db96d56Sopenharmony_ci"_fix_co_filename($module, code, path, /)\n"
687db96d56Sopenharmony_ci"--\n"
697db96d56Sopenharmony_ci"\n"
707db96d56Sopenharmony_ci"Changes code.co_filename to specify the passed-in file path.\n"
717db96d56Sopenharmony_ci"\n"
727db96d56Sopenharmony_ci"  code\n"
737db96d56Sopenharmony_ci"    Code object to change.\n"
747db96d56Sopenharmony_ci"  path\n"
757db96d56Sopenharmony_ci"    File path to use.");
767db96d56Sopenharmony_ci
777db96d56Sopenharmony_ci#define _IMP__FIX_CO_FILENAME_METHODDEF    \
787db96d56Sopenharmony_ci    {"_fix_co_filename", _PyCFunction_CAST(_imp__fix_co_filename), METH_FASTCALL, _imp__fix_co_filename__doc__},
797db96d56Sopenharmony_ci
807db96d56Sopenharmony_cistatic PyObject *
817db96d56Sopenharmony_ci_imp__fix_co_filename_impl(PyObject *module, PyCodeObject *code,
827db96d56Sopenharmony_ci                           PyObject *path);
837db96d56Sopenharmony_ci
847db96d56Sopenharmony_cistatic PyObject *
857db96d56Sopenharmony_ci_imp__fix_co_filename(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
867db96d56Sopenharmony_ci{
877db96d56Sopenharmony_ci    PyObject *return_value = NULL;
887db96d56Sopenharmony_ci    PyCodeObject *code;
897db96d56Sopenharmony_ci    PyObject *path;
907db96d56Sopenharmony_ci
917db96d56Sopenharmony_ci    if (!_PyArg_CheckPositional("_fix_co_filename", nargs, 2, 2)) {
927db96d56Sopenharmony_ci        goto exit;
937db96d56Sopenharmony_ci    }
947db96d56Sopenharmony_ci    if (!PyObject_TypeCheck(args[0], &PyCode_Type)) {
957db96d56Sopenharmony_ci        _PyArg_BadArgument("_fix_co_filename", "argument 1", (&PyCode_Type)->tp_name, args[0]);
967db96d56Sopenharmony_ci        goto exit;
977db96d56Sopenharmony_ci    }
987db96d56Sopenharmony_ci    code = (PyCodeObject *)args[0];
997db96d56Sopenharmony_ci    if (!PyUnicode_Check(args[1])) {
1007db96d56Sopenharmony_ci        _PyArg_BadArgument("_fix_co_filename", "argument 2", "str", args[1]);
1017db96d56Sopenharmony_ci        goto exit;
1027db96d56Sopenharmony_ci    }
1037db96d56Sopenharmony_ci    if (PyUnicode_READY(args[1]) == -1) {
1047db96d56Sopenharmony_ci        goto exit;
1057db96d56Sopenharmony_ci    }
1067db96d56Sopenharmony_ci    path = args[1];
1077db96d56Sopenharmony_ci    return_value = _imp__fix_co_filename_impl(module, code, path);
1087db96d56Sopenharmony_ci
1097db96d56Sopenharmony_ciexit:
1107db96d56Sopenharmony_ci    return return_value;
1117db96d56Sopenharmony_ci}
1127db96d56Sopenharmony_ci
1137db96d56Sopenharmony_ciPyDoc_STRVAR(_imp_create_builtin__doc__,
1147db96d56Sopenharmony_ci"create_builtin($module, spec, /)\n"
1157db96d56Sopenharmony_ci"--\n"
1167db96d56Sopenharmony_ci"\n"
1177db96d56Sopenharmony_ci"Create an extension module.");
1187db96d56Sopenharmony_ci
1197db96d56Sopenharmony_ci#define _IMP_CREATE_BUILTIN_METHODDEF    \
1207db96d56Sopenharmony_ci    {"create_builtin", (PyCFunction)_imp_create_builtin, METH_O, _imp_create_builtin__doc__},
1217db96d56Sopenharmony_ci
1227db96d56Sopenharmony_ciPyDoc_STRVAR(_imp_extension_suffixes__doc__,
1237db96d56Sopenharmony_ci"extension_suffixes($module, /)\n"
1247db96d56Sopenharmony_ci"--\n"
1257db96d56Sopenharmony_ci"\n"
1267db96d56Sopenharmony_ci"Returns the list of file suffixes used to identify extension modules.");
1277db96d56Sopenharmony_ci
1287db96d56Sopenharmony_ci#define _IMP_EXTENSION_SUFFIXES_METHODDEF    \
1297db96d56Sopenharmony_ci    {"extension_suffixes", (PyCFunction)_imp_extension_suffixes, METH_NOARGS, _imp_extension_suffixes__doc__},
1307db96d56Sopenharmony_ci
1317db96d56Sopenharmony_cistatic PyObject *
1327db96d56Sopenharmony_ci_imp_extension_suffixes_impl(PyObject *module);
1337db96d56Sopenharmony_ci
1347db96d56Sopenharmony_cistatic PyObject *
1357db96d56Sopenharmony_ci_imp_extension_suffixes(PyObject *module, PyObject *Py_UNUSED(ignored))
1367db96d56Sopenharmony_ci{
1377db96d56Sopenharmony_ci    return _imp_extension_suffixes_impl(module);
1387db96d56Sopenharmony_ci}
1397db96d56Sopenharmony_ci
1407db96d56Sopenharmony_ciPyDoc_STRVAR(_imp_init_frozen__doc__,
1417db96d56Sopenharmony_ci"init_frozen($module, name, /)\n"
1427db96d56Sopenharmony_ci"--\n"
1437db96d56Sopenharmony_ci"\n"
1447db96d56Sopenharmony_ci"Initializes a frozen module.");
1457db96d56Sopenharmony_ci
1467db96d56Sopenharmony_ci#define _IMP_INIT_FROZEN_METHODDEF    \
1477db96d56Sopenharmony_ci    {"init_frozen", (PyCFunction)_imp_init_frozen, METH_O, _imp_init_frozen__doc__},
1487db96d56Sopenharmony_ci
1497db96d56Sopenharmony_cistatic PyObject *
1507db96d56Sopenharmony_ci_imp_init_frozen_impl(PyObject *module, PyObject *name);
1517db96d56Sopenharmony_ci
1527db96d56Sopenharmony_cistatic PyObject *
1537db96d56Sopenharmony_ci_imp_init_frozen(PyObject *module, PyObject *arg)
1547db96d56Sopenharmony_ci{
1557db96d56Sopenharmony_ci    PyObject *return_value = NULL;
1567db96d56Sopenharmony_ci    PyObject *name;
1577db96d56Sopenharmony_ci
1587db96d56Sopenharmony_ci    if (!PyUnicode_Check(arg)) {
1597db96d56Sopenharmony_ci        _PyArg_BadArgument("init_frozen", "argument", "str", arg);
1607db96d56Sopenharmony_ci        goto exit;
1617db96d56Sopenharmony_ci    }
1627db96d56Sopenharmony_ci    if (PyUnicode_READY(arg) == -1) {
1637db96d56Sopenharmony_ci        goto exit;
1647db96d56Sopenharmony_ci    }
1657db96d56Sopenharmony_ci    name = arg;
1667db96d56Sopenharmony_ci    return_value = _imp_init_frozen_impl(module, name);
1677db96d56Sopenharmony_ci
1687db96d56Sopenharmony_ciexit:
1697db96d56Sopenharmony_ci    return return_value;
1707db96d56Sopenharmony_ci}
1717db96d56Sopenharmony_ci
1727db96d56Sopenharmony_ciPyDoc_STRVAR(_imp_find_frozen__doc__,
1737db96d56Sopenharmony_ci"find_frozen($module, name, /, *, withdata=False)\n"
1747db96d56Sopenharmony_ci"--\n"
1757db96d56Sopenharmony_ci"\n"
1767db96d56Sopenharmony_ci"Return info about the corresponding frozen module (if there is one) or None.\n"
1777db96d56Sopenharmony_ci"\n"
1787db96d56Sopenharmony_ci"The returned info (a 2-tuple):\n"
1797db96d56Sopenharmony_ci"\n"
1807db96d56Sopenharmony_ci" * data         the raw marshalled bytes\n"
1817db96d56Sopenharmony_ci" * is_package   whether or not it is a package\n"
1827db96d56Sopenharmony_ci" * origname     the originally frozen module\'s name, or None if not\n"
1837db96d56Sopenharmony_ci"                a stdlib module (this will usually be the same as\n"
1847db96d56Sopenharmony_ci"                the module\'s current name)");
1857db96d56Sopenharmony_ci
1867db96d56Sopenharmony_ci#define _IMP_FIND_FROZEN_METHODDEF    \
1877db96d56Sopenharmony_ci    {"find_frozen", _PyCFunction_CAST(_imp_find_frozen), METH_FASTCALL|METH_KEYWORDS, _imp_find_frozen__doc__},
1887db96d56Sopenharmony_ci
1897db96d56Sopenharmony_cistatic PyObject *
1907db96d56Sopenharmony_ci_imp_find_frozen_impl(PyObject *module, PyObject *name, int withdata);
1917db96d56Sopenharmony_ci
1927db96d56Sopenharmony_cistatic PyObject *
1937db96d56Sopenharmony_ci_imp_find_frozen(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
1947db96d56Sopenharmony_ci{
1957db96d56Sopenharmony_ci    PyObject *return_value = NULL;
1967db96d56Sopenharmony_ci    static const char * const _keywords[] = {"", "withdata", NULL};
1977db96d56Sopenharmony_ci    static _PyArg_Parser _parser = {NULL, _keywords, "find_frozen", 0};
1987db96d56Sopenharmony_ci    PyObject *argsbuf[2];
1997db96d56Sopenharmony_ci    Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 1;
2007db96d56Sopenharmony_ci    PyObject *name;
2017db96d56Sopenharmony_ci    int withdata = 0;
2027db96d56Sopenharmony_ci
2037db96d56Sopenharmony_ci    args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 1, 0, argsbuf);
2047db96d56Sopenharmony_ci    if (!args) {
2057db96d56Sopenharmony_ci        goto exit;
2067db96d56Sopenharmony_ci    }
2077db96d56Sopenharmony_ci    if (!PyUnicode_Check(args[0])) {
2087db96d56Sopenharmony_ci        _PyArg_BadArgument("find_frozen", "argument 1", "str", args[0]);
2097db96d56Sopenharmony_ci        goto exit;
2107db96d56Sopenharmony_ci    }
2117db96d56Sopenharmony_ci    if (PyUnicode_READY(args[0]) == -1) {
2127db96d56Sopenharmony_ci        goto exit;
2137db96d56Sopenharmony_ci    }
2147db96d56Sopenharmony_ci    name = args[0];
2157db96d56Sopenharmony_ci    if (!noptargs) {
2167db96d56Sopenharmony_ci        goto skip_optional_kwonly;
2177db96d56Sopenharmony_ci    }
2187db96d56Sopenharmony_ci    withdata = PyObject_IsTrue(args[1]);
2197db96d56Sopenharmony_ci    if (withdata < 0) {
2207db96d56Sopenharmony_ci        goto exit;
2217db96d56Sopenharmony_ci    }
2227db96d56Sopenharmony_ciskip_optional_kwonly:
2237db96d56Sopenharmony_ci    return_value = _imp_find_frozen_impl(module, name, withdata);
2247db96d56Sopenharmony_ci
2257db96d56Sopenharmony_ciexit:
2267db96d56Sopenharmony_ci    return return_value;
2277db96d56Sopenharmony_ci}
2287db96d56Sopenharmony_ci
2297db96d56Sopenharmony_ciPyDoc_STRVAR(_imp_get_frozen_object__doc__,
2307db96d56Sopenharmony_ci"get_frozen_object($module, name, data=None, /)\n"
2317db96d56Sopenharmony_ci"--\n"
2327db96d56Sopenharmony_ci"\n"
2337db96d56Sopenharmony_ci"Create a code object for a frozen module.");
2347db96d56Sopenharmony_ci
2357db96d56Sopenharmony_ci#define _IMP_GET_FROZEN_OBJECT_METHODDEF    \
2367db96d56Sopenharmony_ci    {"get_frozen_object", _PyCFunction_CAST(_imp_get_frozen_object), METH_FASTCALL, _imp_get_frozen_object__doc__},
2377db96d56Sopenharmony_ci
2387db96d56Sopenharmony_cistatic PyObject *
2397db96d56Sopenharmony_ci_imp_get_frozen_object_impl(PyObject *module, PyObject *name,
2407db96d56Sopenharmony_ci                            PyObject *dataobj);
2417db96d56Sopenharmony_ci
2427db96d56Sopenharmony_cistatic PyObject *
2437db96d56Sopenharmony_ci_imp_get_frozen_object(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
2447db96d56Sopenharmony_ci{
2457db96d56Sopenharmony_ci    PyObject *return_value = NULL;
2467db96d56Sopenharmony_ci    PyObject *name;
2477db96d56Sopenharmony_ci    PyObject *dataobj = Py_None;
2487db96d56Sopenharmony_ci
2497db96d56Sopenharmony_ci    if (!_PyArg_CheckPositional("get_frozen_object", nargs, 1, 2)) {
2507db96d56Sopenharmony_ci        goto exit;
2517db96d56Sopenharmony_ci    }
2527db96d56Sopenharmony_ci    if (!PyUnicode_Check(args[0])) {
2537db96d56Sopenharmony_ci        _PyArg_BadArgument("get_frozen_object", "argument 1", "str", args[0]);
2547db96d56Sopenharmony_ci        goto exit;
2557db96d56Sopenharmony_ci    }
2567db96d56Sopenharmony_ci    if (PyUnicode_READY(args[0]) == -1) {
2577db96d56Sopenharmony_ci        goto exit;
2587db96d56Sopenharmony_ci    }
2597db96d56Sopenharmony_ci    name = args[0];
2607db96d56Sopenharmony_ci    if (nargs < 2) {
2617db96d56Sopenharmony_ci        goto skip_optional;
2627db96d56Sopenharmony_ci    }
2637db96d56Sopenharmony_ci    dataobj = args[1];
2647db96d56Sopenharmony_ciskip_optional:
2657db96d56Sopenharmony_ci    return_value = _imp_get_frozen_object_impl(module, name, dataobj);
2667db96d56Sopenharmony_ci
2677db96d56Sopenharmony_ciexit:
2687db96d56Sopenharmony_ci    return return_value;
2697db96d56Sopenharmony_ci}
2707db96d56Sopenharmony_ci
2717db96d56Sopenharmony_ciPyDoc_STRVAR(_imp_is_frozen_package__doc__,
2727db96d56Sopenharmony_ci"is_frozen_package($module, name, /)\n"
2737db96d56Sopenharmony_ci"--\n"
2747db96d56Sopenharmony_ci"\n"
2757db96d56Sopenharmony_ci"Returns True if the module name is of a frozen package.");
2767db96d56Sopenharmony_ci
2777db96d56Sopenharmony_ci#define _IMP_IS_FROZEN_PACKAGE_METHODDEF    \
2787db96d56Sopenharmony_ci    {"is_frozen_package", (PyCFunction)_imp_is_frozen_package, METH_O, _imp_is_frozen_package__doc__},
2797db96d56Sopenharmony_ci
2807db96d56Sopenharmony_cistatic PyObject *
2817db96d56Sopenharmony_ci_imp_is_frozen_package_impl(PyObject *module, PyObject *name);
2827db96d56Sopenharmony_ci
2837db96d56Sopenharmony_cistatic PyObject *
2847db96d56Sopenharmony_ci_imp_is_frozen_package(PyObject *module, PyObject *arg)
2857db96d56Sopenharmony_ci{
2867db96d56Sopenharmony_ci    PyObject *return_value = NULL;
2877db96d56Sopenharmony_ci    PyObject *name;
2887db96d56Sopenharmony_ci
2897db96d56Sopenharmony_ci    if (!PyUnicode_Check(arg)) {
2907db96d56Sopenharmony_ci        _PyArg_BadArgument("is_frozen_package", "argument", "str", arg);
2917db96d56Sopenharmony_ci        goto exit;
2927db96d56Sopenharmony_ci    }
2937db96d56Sopenharmony_ci    if (PyUnicode_READY(arg) == -1) {
2947db96d56Sopenharmony_ci        goto exit;
2957db96d56Sopenharmony_ci    }
2967db96d56Sopenharmony_ci    name = arg;
2977db96d56Sopenharmony_ci    return_value = _imp_is_frozen_package_impl(module, name);
2987db96d56Sopenharmony_ci
2997db96d56Sopenharmony_ciexit:
3007db96d56Sopenharmony_ci    return return_value;
3017db96d56Sopenharmony_ci}
3027db96d56Sopenharmony_ci
3037db96d56Sopenharmony_ciPyDoc_STRVAR(_imp_is_builtin__doc__,
3047db96d56Sopenharmony_ci"is_builtin($module, name, /)\n"
3057db96d56Sopenharmony_ci"--\n"
3067db96d56Sopenharmony_ci"\n"
3077db96d56Sopenharmony_ci"Returns True if the module name corresponds to a built-in module.");
3087db96d56Sopenharmony_ci
3097db96d56Sopenharmony_ci#define _IMP_IS_BUILTIN_METHODDEF    \
3107db96d56Sopenharmony_ci    {"is_builtin", (PyCFunction)_imp_is_builtin, METH_O, _imp_is_builtin__doc__},
3117db96d56Sopenharmony_ci
3127db96d56Sopenharmony_cistatic PyObject *
3137db96d56Sopenharmony_ci_imp_is_builtin_impl(PyObject *module, PyObject *name);
3147db96d56Sopenharmony_ci
3157db96d56Sopenharmony_cistatic PyObject *
3167db96d56Sopenharmony_ci_imp_is_builtin(PyObject *module, PyObject *arg)
3177db96d56Sopenharmony_ci{
3187db96d56Sopenharmony_ci    PyObject *return_value = NULL;
3197db96d56Sopenharmony_ci    PyObject *name;
3207db96d56Sopenharmony_ci
3217db96d56Sopenharmony_ci    if (!PyUnicode_Check(arg)) {
3227db96d56Sopenharmony_ci        _PyArg_BadArgument("is_builtin", "argument", "str", arg);
3237db96d56Sopenharmony_ci        goto exit;
3247db96d56Sopenharmony_ci    }
3257db96d56Sopenharmony_ci    if (PyUnicode_READY(arg) == -1) {
3267db96d56Sopenharmony_ci        goto exit;
3277db96d56Sopenharmony_ci    }
3287db96d56Sopenharmony_ci    name = arg;
3297db96d56Sopenharmony_ci    return_value = _imp_is_builtin_impl(module, name);
3307db96d56Sopenharmony_ci
3317db96d56Sopenharmony_ciexit:
3327db96d56Sopenharmony_ci    return return_value;
3337db96d56Sopenharmony_ci}
3347db96d56Sopenharmony_ci
3357db96d56Sopenharmony_ciPyDoc_STRVAR(_imp_is_frozen__doc__,
3367db96d56Sopenharmony_ci"is_frozen($module, name, /)\n"
3377db96d56Sopenharmony_ci"--\n"
3387db96d56Sopenharmony_ci"\n"
3397db96d56Sopenharmony_ci"Returns True if the module name corresponds to a frozen module.");
3407db96d56Sopenharmony_ci
3417db96d56Sopenharmony_ci#define _IMP_IS_FROZEN_METHODDEF    \
3427db96d56Sopenharmony_ci    {"is_frozen", (PyCFunction)_imp_is_frozen, METH_O, _imp_is_frozen__doc__},
3437db96d56Sopenharmony_ci
3447db96d56Sopenharmony_cistatic PyObject *
3457db96d56Sopenharmony_ci_imp_is_frozen_impl(PyObject *module, PyObject *name);
3467db96d56Sopenharmony_ci
3477db96d56Sopenharmony_cistatic PyObject *
3487db96d56Sopenharmony_ci_imp_is_frozen(PyObject *module, PyObject *arg)
3497db96d56Sopenharmony_ci{
3507db96d56Sopenharmony_ci    PyObject *return_value = NULL;
3517db96d56Sopenharmony_ci    PyObject *name;
3527db96d56Sopenharmony_ci
3537db96d56Sopenharmony_ci    if (!PyUnicode_Check(arg)) {
3547db96d56Sopenharmony_ci        _PyArg_BadArgument("is_frozen", "argument", "str", arg);
3557db96d56Sopenharmony_ci        goto exit;
3567db96d56Sopenharmony_ci    }
3577db96d56Sopenharmony_ci    if (PyUnicode_READY(arg) == -1) {
3587db96d56Sopenharmony_ci        goto exit;
3597db96d56Sopenharmony_ci    }
3607db96d56Sopenharmony_ci    name = arg;
3617db96d56Sopenharmony_ci    return_value = _imp_is_frozen_impl(module, name);
3627db96d56Sopenharmony_ci
3637db96d56Sopenharmony_ciexit:
3647db96d56Sopenharmony_ci    return return_value;
3657db96d56Sopenharmony_ci}
3667db96d56Sopenharmony_ci
3677db96d56Sopenharmony_ciPyDoc_STRVAR(_imp__frozen_module_names__doc__,
3687db96d56Sopenharmony_ci"_frozen_module_names($module, /)\n"
3697db96d56Sopenharmony_ci"--\n"
3707db96d56Sopenharmony_ci"\n"
3717db96d56Sopenharmony_ci"Returns the list of available frozen modules.");
3727db96d56Sopenharmony_ci
3737db96d56Sopenharmony_ci#define _IMP__FROZEN_MODULE_NAMES_METHODDEF    \
3747db96d56Sopenharmony_ci    {"_frozen_module_names", (PyCFunction)_imp__frozen_module_names, METH_NOARGS, _imp__frozen_module_names__doc__},
3757db96d56Sopenharmony_ci
3767db96d56Sopenharmony_cistatic PyObject *
3777db96d56Sopenharmony_ci_imp__frozen_module_names_impl(PyObject *module);
3787db96d56Sopenharmony_ci
3797db96d56Sopenharmony_cistatic PyObject *
3807db96d56Sopenharmony_ci_imp__frozen_module_names(PyObject *module, PyObject *Py_UNUSED(ignored))
3817db96d56Sopenharmony_ci{
3827db96d56Sopenharmony_ci    return _imp__frozen_module_names_impl(module);
3837db96d56Sopenharmony_ci}
3847db96d56Sopenharmony_ci
3857db96d56Sopenharmony_ciPyDoc_STRVAR(_imp__override_frozen_modules_for_tests__doc__,
3867db96d56Sopenharmony_ci"_override_frozen_modules_for_tests($module, override, /)\n"
3877db96d56Sopenharmony_ci"--\n"
3887db96d56Sopenharmony_ci"\n"
3897db96d56Sopenharmony_ci"(internal-only) Override PyConfig.use_frozen_modules.\n"
3907db96d56Sopenharmony_ci"\n"
3917db96d56Sopenharmony_ci"(-1: \"off\", 1: \"on\", 0: no override)\n"
3927db96d56Sopenharmony_ci"See frozen_modules() in Lib/test/support/import_helper.py.");
3937db96d56Sopenharmony_ci
3947db96d56Sopenharmony_ci#define _IMP__OVERRIDE_FROZEN_MODULES_FOR_TESTS_METHODDEF    \
3957db96d56Sopenharmony_ci    {"_override_frozen_modules_for_tests", (PyCFunction)_imp__override_frozen_modules_for_tests, METH_O, _imp__override_frozen_modules_for_tests__doc__},
3967db96d56Sopenharmony_ci
3977db96d56Sopenharmony_cistatic PyObject *
3987db96d56Sopenharmony_ci_imp__override_frozen_modules_for_tests_impl(PyObject *module, int override);
3997db96d56Sopenharmony_ci
4007db96d56Sopenharmony_cistatic PyObject *
4017db96d56Sopenharmony_ci_imp__override_frozen_modules_for_tests(PyObject *module, PyObject *arg)
4027db96d56Sopenharmony_ci{
4037db96d56Sopenharmony_ci    PyObject *return_value = NULL;
4047db96d56Sopenharmony_ci    int override;
4057db96d56Sopenharmony_ci
4067db96d56Sopenharmony_ci    override = _PyLong_AsInt(arg);
4077db96d56Sopenharmony_ci    if (override == -1 && PyErr_Occurred()) {
4087db96d56Sopenharmony_ci        goto exit;
4097db96d56Sopenharmony_ci    }
4107db96d56Sopenharmony_ci    return_value = _imp__override_frozen_modules_for_tests_impl(module, override);
4117db96d56Sopenharmony_ci
4127db96d56Sopenharmony_ciexit:
4137db96d56Sopenharmony_ci    return return_value;
4147db96d56Sopenharmony_ci}
4157db96d56Sopenharmony_ci
4167db96d56Sopenharmony_ci#if defined(HAVE_DYNAMIC_LOADING)
4177db96d56Sopenharmony_ci
4187db96d56Sopenharmony_ciPyDoc_STRVAR(_imp_create_dynamic__doc__,
4197db96d56Sopenharmony_ci"create_dynamic($module, spec, file=<unrepresentable>, /)\n"
4207db96d56Sopenharmony_ci"--\n"
4217db96d56Sopenharmony_ci"\n"
4227db96d56Sopenharmony_ci"Create an extension module.");
4237db96d56Sopenharmony_ci
4247db96d56Sopenharmony_ci#define _IMP_CREATE_DYNAMIC_METHODDEF    \
4257db96d56Sopenharmony_ci    {"create_dynamic", _PyCFunction_CAST(_imp_create_dynamic), METH_FASTCALL, _imp_create_dynamic__doc__},
4267db96d56Sopenharmony_ci
4277db96d56Sopenharmony_cistatic PyObject *
4287db96d56Sopenharmony_ci_imp_create_dynamic_impl(PyObject *module, PyObject *spec, PyObject *file);
4297db96d56Sopenharmony_ci
4307db96d56Sopenharmony_cistatic PyObject *
4317db96d56Sopenharmony_ci_imp_create_dynamic(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
4327db96d56Sopenharmony_ci{
4337db96d56Sopenharmony_ci    PyObject *return_value = NULL;
4347db96d56Sopenharmony_ci    PyObject *spec;
4357db96d56Sopenharmony_ci    PyObject *file = NULL;
4367db96d56Sopenharmony_ci
4377db96d56Sopenharmony_ci    if (!_PyArg_CheckPositional("create_dynamic", nargs, 1, 2)) {
4387db96d56Sopenharmony_ci        goto exit;
4397db96d56Sopenharmony_ci    }
4407db96d56Sopenharmony_ci    spec = args[0];
4417db96d56Sopenharmony_ci    if (nargs < 2) {
4427db96d56Sopenharmony_ci        goto skip_optional;
4437db96d56Sopenharmony_ci    }
4447db96d56Sopenharmony_ci    file = args[1];
4457db96d56Sopenharmony_ciskip_optional:
4467db96d56Sopenharmony_ci    return_value = _imp_create_dynamic_impl(module, spec, file);
4477db96d56Sopenharmony_ci
4487db96d56Sopenharmony_ciexit:
4497db96d56Sopenharmony_ci    return return_value;
4507db96d56Sopenharmony_ci}
4517db96d56Sopenharmony_ci
4527db96d56Sopenharmony_ci#endif /* defined(HAVE_DYNAMIC_LOADING) */
4537db96d56Sopenharmony_ci
4547db96d56Sopenharmony_ci#if defined(HAVE_DYNAMIC_LOADING)
4557db96d56Sopenharmony_ci
4567db96d56Sopenharmony_ciPyDoc_STRVAR(_imp_exec_dynamic__doc__,
4577db96d56Sopenharmony_ci"exec_dynamic($module, mod, /)\n"
4587db96d56Sopenharmony_ci"--\n"
4597db96d56Sopenharmony_ci"\n"
4607db96d56Sopenharmony_ci"Initialize an extension module.");
4617db96d56Sopenharmony_ci
4627db96d56Sopenharmony_ci#define _IMP_EXEC_DYNAMIC_METHODDEF    \
4637db96d56Sopenharmony_ci    {"exec_dynamic", (PyCFunction)_imp_exec_dynamic, METH_O, _imp_exec_dynamic__doc__},
4647db96d56Sopenharmony_ci
4657db96d56Sopenharmony_cistatic int
4667db96d56Sopenharmony_ci_imp_exec_dynamic_impl(PyObject *module, PyObject *mod);
4677db96d56Sopenharmony_ci
4687db96d56Sopenharmony_cistatic PyObject *
4697db96d56Sopenharmony_ci_imp_exec_dynamic(PyObject *module, PyObject *mod)
4707db96d56Sopenharmony_ci{
4717db96d56Sopenharmony_ci    PyObject *return_value = NULL;
4727db96d56Sopenharmony_ci    int _return_value;
4737db96d56Sopenharmony_ci
4747db96d56Sopenharmony_ci    _return_value = _imp_exec_dynamic_impl(module, mod);
4757db96d56Sopenharmony_ci    if ((_return_value == -1) && PyErr_Occurred()) {
4767db96d56Sopenharmony_ci        goto exit;
4777db96d56Sopenharmony_ci    }
4787db96d56Sopenharmony_ci    return_value = PyLong_FromLong((long)_return_value);
4797db96d56Sopenharmony_ci
4807db96d56Sopenharmony_ciexit:
4817db96d56Sopenharmony_ci    return return_value;
4827db96d56Sopenharmony_ci}
4837db96d56Sopenharmony_ci
4847db96d56Sopenharmony_ci#endif /* defined(HAVE_DYNAMIC_LOADING) */
4857db96d56Sopenharmony_ci
4867db96d56Sopenharmony_ciPyDoc_STRVAR(_imp_exec_builtin__doc__,
4877db96d56Sopenharmony_ci"exec_builtin($module, mod, /)\n"
4887db96d56Sopenharmony_ci"--\n"
4897db96d56Sopenharmony_ci"\n"
4907db96d56Sopenharmony_ci"Initialize a built-in module.");
4917db96d56Sopenharmony_ci
4927db96d56Sopenharmony_ci#define _IMP_EXEC_BUILTIN_METHODDEF    \
4937db96d56Sopenharmony_ci    {"exec_builtin", (PyCFunction)_imp_exec_builtin, METH_O, _imp_exec_builtin__doc__},
4947db96d56Sopenharmony_ci
4957db96d56Sopenharmony_cistatic int
4967db96d56Sopenharmony_ci_imp_exec_builtin_impl(PyObject *module, PyObject *mod);
4977db96d56Sopenharmony_ci
4987db96d56Sopenharmony_cistatic PyObject *
4997db96d56Sopenharmony_ci_imp_exec_builtin(PyObject *module, PyObject *mod)
5007db96d56Sopenharmony_ci{
5017db96d56Sopenharmony_ci    PyObject *return_value = NULL;
5027db96d56Sopenharmony_ci    int _return_value;
5037db96d56Sopenharmony_ci
5047db96d56Sopenharmony_ci    _return_value = _imp_exec_builtin_impl(module, mod);
5057db96d56Sopenharmony_ci    if ((_return_value == -1) && PyErr_Occurred()) {
5067db96d56Sopenharmony_ci        goto exit;
5077db96d56Sopenharmony_ci    }
5087db96d56Sopenharmony_ci    return_value = PyLong_FromLong((long)_return_value);
5097db96d56Sopenharmony_ci
5107db96d56Sopenharmony_ciexit:
5117db96d56Sopenharmony_ci    return return_value;
5127db96d56Sopenharmony_ci}
5137db96d56Sopenharmony_ci
5147db96d56Sopenharmony_ciPyDoc_STRVAR(_imp_source_hash__doc__,
5157db96d56Sopenharmony_ci"source_hash($module, /, key, source)\n"
5167db96d56Sopenharmony_ci"--\n"
5177db96d56Sopenharmony_ci"\n");
5187db96d56Sopenharmony_ci
5197db96d56Sopenharmony_ci#define _IMP_SOURCE_HASH_METHODDEF    \
5207db96d56Sopenharmony_ci    {"source_hash", _PyCFunction_CAST(_imp_source_hash), METH_FASTCALL|METH_KEYWORDS, _imp_source_hash__doc__},
5217db96d56Sopenharmony_ci
5227db96d56Sopenharmony_cistatic PyObject *
5237db96d56Sopenharmony_ci_imp_source_hash_impl(PyObject *module, long key, Py_buffer *source);
5247db96d56Sopenharmony_ci
5257db96d56Sopenharmony_cistatic PyObject *
5267db96d56Sopenharmony_ci_imp_source_hash(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
5277db96d56Sopenharmony_ci{
5287db96d56Sopenharmony_ci    PyObject *return_value = NULL;
5297db96d56Sopenharmony_ci    static const char * const _keywords[] = {"key", "source", NULL};
5307db96d56Sopenharmony_ci    static _PyArg_Parser _parser = {NULL, _keywords, "source_hash", 0};
5317db96d56Sopenharmony_ci    PyObject *argsbuf[2];
5327db96d56Sopenharmony_ci    long key;
5337db96d56Sopenharmony_ci    Py_buffer source = {NULL, NULL};
5347db96d56Sopenharmony_ci
5357db96d56Sopenharmony_ci    args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 2, 2, 0, argsbuf);
5367db96d56Sopenharmony_ci    if (!args) {
5377db96d56Sopenharmony_ci        goto exit;
5387db96d56Sopenharmony_ci    }
5397db96d56Sopenharmony_ci    key = PyLong_AsLong(args[0]);
5407db96d56Sopenharmony_ci    if (key == -1 && PyErr_Occurred()) {
5417db96d56Sopenharmony_ci        goto exit;
5427db96d56Sopenharmony_ci    }
5437db96d56Sopenharmony_ci    if (PyObject_GetBuffer(args[1], &source, PyBUF_SIMPLE) != 0) {
5447db96d56Sopenharmony_ci        goto exit;
5457db96d56Sopenharmony_ci    }
5467db96d56Sopenharmony_ci    if (!PyBuffer_IsContiguous(&source, 'C')) {
5477db96d56Sopenharmony_ci        _PyArg_BadArgument("source_hash", "argument 'source'", "contiguous buffer", args[1]);
5487db96d56Sopenharmony_ci        goto exit;
5497db96d56Sopenharmony_ci    }
5507db96d56Sopenharmony_ci    return_value = _imp_source_hash_impl(module, key, &source);
5517db96d56Sopenharmony_ci
5527db96d56Sopenharmony_ciexit:
5537db96d56Sopenharmony_ci    /* Cleanup for source */
5547db96d56Sopenharmony_ci    if (source.obj) {
5557db96d56Sopenharmony_ci       PyBuffer_Release(&source);
5567db96d56Sopenharmony_ci    }
5577db96d56Sopenharmony_ci
5587db96d56Sopenharmony_ci    return return_value;
5597db96d56Sopenharmony_ci}
5607db96d56Sopenharmony_ci
5617db96d56Sopenharmony_ci#ifndef _IMP_CREATE_DYNAMIC_METHODDEF
5627db96d56Sopenharmony_ci    #define _IMP_CREATE_DYNAMIC_METHODDEF
5637db96d56Sopenharmony_ci#endif /* !defined(_IMP_CREATE_DYNAMIC_METHODDEF) */
5647db96d56Sopenharmony_ci
5657db96d56Sopenharmony_ci#ifndef _IMP_EXEC_DYNAMIC_METHODDEF
5667db96d56Sopenharmony_ci    #define _IMP_EXEC_DYNAMIC_METHODDEF
5677db96d56Sopenharmony_ci#endif /* !defined(_IMP_EXEC_DYNAMIC_METHODDEF) */
5687db96d56Sopenharmony_ci/*[clinic end generated code: output=8d0f4305b1d0714b input=a9049054013a1b77]*/
569