LCOV - code coverage report
Current view: top level - Python/clinic - import.c.h (source / functions) Hit Total Coverage
Test: CPython lcov report Lines: 119 167 71.3 %
Date: 2022-07-07 18:19:46 Functions: 16 17 94.1 %

          Line data    Source code
       1             : /*[clinic input]
       2             : preserve
       3             : [clinic start generated code]*/
       4             : 
       5             : PyDoc_STRVAR(_imp_lock_held__doc__,
       6             : "lock_held($module, /)\n"
       7             : "--\n"
       8             : "\n"
       9             : "Return True if the import lock is currently held, else False.\n"
      10             : "\n"
      11             : "On platforms without threads, return False.");
      12             : 
      13             : #define _IMP_LOCK_HELD_METHODDEF    \
      14             :     {"lock_held", (PyCFunction)_imp_lock_held, METH_NOARGS, _imp_lock_held__doc__},
      15             : 
      16             : static PyObject *
      17             : _imp_lock_held_impl(PyObject *module);
      18             : 
      19             : static PyObject *
      20          71 : _imp_lock_held(PyObject *module, PyObject *Py_UNUSED(ignored))
      21             : {
      22          71 :     return _imp_lock_held_impl(module);
      23             : }
      24             : 
      25             : PyDoc_STRVAR(_imp_acquire_lock__doc__,
      26             : "acquire_lock($module, /)\n"
      27             : "--\n"
      28             : "\n"
      29             : "Acquires the interpreter\'s import lock for the current thread.\n"
      30             : "\n"
      31             : "This lock should be used by import hooks to ensure thread-safety when importing\n"
      32             : "modules. On platforms without threads, this function does nothing.");
      33             : 
      34             : #define _IMP_ACQUIRE_LOCK_METHODDEF    \
      35             :     {"acquire_lock", (PyCFunction)_imp_acquire_lock, METH_NOARGS, _imp_acquire_lock__doc__},
      36             : 
      37             : static PyObject *
      38             : _imp_acquire_lock_impl(PyObject *module);
      39             : 
      40             : static PyObject *
      41     1498360 : _imp_acquire_lock(PyObject *module, PyObject *Py_UNUSED(ignored))
      42             : {
      43     1498360 :     return _imp_acquire_lock_impl(module);
      44             : }
      45             : 
      46             : PyDoc_STRVAR(_imp_release_lock__doc__,
      47             : "release_lock($module, /)\n"
      48             : "--\n"
      49             : "\n"
      50             : "Release the interpreter\'s import lock.\n"
      51             : "\n"
      52             : "On platforms without threads, this function does nothing.");
      53             : 
      54             : #define _IMP_RELEASE_LOCK_METHODDEF    \
      55             :     {"release_lock", (PyCFunction)_imp_release_lock, METH_NOARGS, _imp_release_lock__doc__},
      56             : 
      57             : static PyObject *
      58             : _imp_release_lock_impl(PyObject *module);
      59             : 
      60             : static PyObject *
      61     1498360 : _imp_release_lock(PyObject *module, PyObject *Py_UNUSED(ignored))
      62             : {
      63     1498360 :     return _imp_release_lock_impl(module);
      64             : }
      65             : 
      66             : PyDoc_STRVAR(_imp__fix_co_filename__doc__,
      67             : "_fix_co_filename($module, code, path, /)\n"
      68             : "--\n"
      69             : "\n"
      70             : "Changes code.co_filename to specify the passed-in file path.\n"
      71             : "\n"
      72             : "  code\n"
      73             : "    Code object to change.\n"
      74             : "  path\n"
      75             : "    File path to use.");
      76             : 
      77             : #define _IMP__FIX_CO_FILENAME_METHODDEF    \
      78             :     {"_fix_co_filename", _PyCFunction_CAST(_imp__fix_co_filename), METH_FASTCALL, _imp__fix_co_filename__doc__},
      79             : 
      80             : static PyObject *
      81             : _imp__fix_co_filename_impl(PyObject *module, PyCodeObject *code,
      82             :                            PyObject *path);
      83             : 
      84             : static PyObject *
      85      201625 : _imp__fix_co_filename(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
      86             : {
      87      201625 :     PyObject *return_value = NULL;
      88             :     PyCodeObject *code;
      89             :     PyObject *path;
      90             : 
      91      201625 :     if (!_PyArg_CheckPositional("_fix_co_filename", nargs, 2, 2)) {
      92           0 :         goto exit;
      93             :     }
      94      201625 :     if (!PyObject_TypeCheck(args[0], &PyCode_Type)) {
      95           0 :         _PyArg_BadArgument("_fix_co_filename", "argument 1", (&PyCode_Type)->tp_name, args[0]);
      96           0 :         goto exit;
      97             :     }
      98      201625 :     code = (PyCodeObject *)args[0];
      99      201625 :     if (!PyUnicode_Check(args[1])) {
     100           0 :         _PyArg_BadArgument("_fix_co_filename", "argument 2", "str", args[1]);
     101           0 :         goto exit;
     102             :     }
     103      201625 :     if (PyUnicode_READY(args[1]) == -1) {
     104           0 :         goto exit;
     105             :     }
     106      201625 :     path = args[1];
     107      201625 :     return_value = _imp__fix_co_filename_impl(module, code, path);
     108             : 
     109      201625 : exit:
     110      201625 :     return return_value;
     111             : }
     112             : 
     113             : PyDoc_STRVAR(_imp_create_builtin__doc__,
     114             : "create_builtin($module, spec, /)\n"
     115             : "--\n"
     116             : "\n"
     117             : "Create an extension module.");
     118             : 
     119             : #define _IMP_CREATE_BUILTIN_METHODDEF    \
     120             :     {"create_builtin", (PyCFunction)_imp_create_builtin, METH_O, _imp_create_builtin__doc__},
     121             : 
     122             : PyDoc_STRVAR(_imp_extension_suffixes__doc__,
     123             : "extension_suffixes($module, /)\n"
     124             : "--\n"
     125             : "\n"
     126             : "Returns the list of file suffixes used to identify extension modules.");
     127             : 
     128             : #define _IMP_EXTENSION_SUFFIXES_METHODDEF    \
     129             :     {"extension_suffixes", (PyCFunction)_imp_extension_suffixes, METH_NOARGS, _imp_extension_suffixes__doc__},
     130             : 
     131             : static PyObject *
     132             : _imp_extension_suffixes_impl(PyObject *module);
     133             : 
     134             : static PyObject *
     135        6387 : _imp_extension_suffixes(PyObject *module, PyObject *Py_UNUSED(ignored))
     136             : {
     137        6387 :     return _imp_extension_suffixes_impl(module);
     138             : }
     139             : 
     140             : PyDoc_STRVAR(_imp_init_frozen__doc__,
     141             : "init_frozen($module, name, /)\n"
     142             : "--\n"
     143             : "\n"
     144             : "Initializes a frozen module.");
     145             : 
     146             : #define _IMP_INIT_FROZEN_METHODDEF    \
     147             :     {"init_frozen", (PyCFunction)_imp_init_frozen, METH_O, _imp_init_frozen__doc__},
     148             : 
     149             : static PyObject *
     150             : _imp_init_frozen_impl(PyObject *module, PyObject *name);
     151             : 
     152             : static PyObject *
     153           0 : _imp_init_frozen(PyObject *module, PyObject *arg)
     154             : {
     155           0 :     PyObject *return_value = NULL;
     156             :     PyObject *name;
     157             : 
     158           0 :     if (!PyUnicode_Check(arg)) {
     159           0 :         _PyArg_BadArgument("init_frozen", "argument", "str", arg);
     160           0 :         goto exit;
     161             :     }
     162           0 :     if (PyUnicode_READY(arg) == -1) {
     163           0 :         goto exit;
     164             :     }
     165           0 :     name = arg;
     166           0 :     return_value = _imp_init_frozen_impl(module, name);
     167             : 
     168           0 : exit:
     169           0 :     return return_value;
     170             : }
     171             : 
     172             : PyDoc_STRVAR(_imp_find_frozen__doc__,
     173             : "find_frozen($module, name, /, *, withdata=False)\n"
     174             : "--\n"
     175             : "\n"
     176             : "Return info about the corresponding frozen module (if there is one) or None.\n"
     177             : "\n"
     178             : "The returned info (a 2-tuple):\n"
     179             : "\n"
     180             : " * data         the raw marshalled bytes\n"
     181             : " * is_package   whether or not it is a package\n"
     182             : " * origname     the originally frozen module\'s name, or None if not\n"
     183             : "                a stdlib module (this will usually be the same as\n"
     184             : "                the module\'s current name)");
     185             : 
     186             : #define _IMP_FIND_FROZEN_METHODDEF    \
     187             :     {"find_frozen", _PyCFunction_CAST(_imp_find_frozen), METH_FASTCALL|METH_KEYWORDS, _imp_find_frozen__doc__},
     188             : 
     189             : static PyObject *
     190             : _imp_find_frozen_impl(PyObject *module, PyObject *name, int withdata);
     191             : 
     192             : static PyObject *
     193      258254 : _imp_find_frozen(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
     194             : {
     195      258254 :     PyObject *return_value = NULL;
     196             :     static const char * const _keywords[] = {"", "withdata", NULL};
     197             :     static _PyArg_Parser _parser = {NULL, _keywords, "find_frozen", 0};
     198             :     PyObject *argsbuf[2];
     199      258254 :     Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 1;
     200             :     PyObject *name;
     201      258254 :     int withdata = 0;
     202             : 
     203      258254 :     args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 1, 0, argsbuf);
     204      258254 :     if (!args) {
     205           0 :         goto exit;
     206             :     }
     207      258254 :     if (!PyUnicode_Check(args[0])) {
     208           0 :         _PyArg_BadArgument("find_frozen", "argument 1", "str", args[0]);
     209           0 :         goto exit;
     210             :     }
     211      258254 :     if (PyUnicode_READY(args[0]) == -1) {
     212           0 :         goto exit;
     213             :     }
     214      258254 :     name = args[0];
     215      258254 :     if (!noptargs) {
     216      258254 :         goto skip_optional_kwonly;
     217             :     }
     218           0 :     withdata = PyObject_IsTrue(args[1]);
     219           0 :     if (withdata < 0) {
     220           0 :         goto exit;
     221             :     }
     222           0 : skip_optional_kwonly:
     223      258254 :     return_value = _imp_find_frozen_impl(module, name, withdata);
     224             : 
     225      258254 : exit:
     226      258254 :     return return_value;
     227             : }
     228             : 
     229             : PyDoc_STRVAR(_imp_get_frozen_object__doc__,
     230             : "get_frozen_object($module, name, data=None, /)\n"
     231             : "--\n"
     232             : "\n"
     233             : "Create a code object for a frozen module.");
     234             : 
     235             : #define _IMP_GET_FROZEN_OBJECT_METHODDEF    \
     236             :     {"get_frozen_object", _PyCFunction_CAST(_imp_get_frozen_object), METH_FASTCALL, _imp_get_frozen_object__doc__},
     237             : 
     238             : static PyObject *
     239             : _imp_get_frozen_object_impl(PyObject *module, PyObject *name,
     240             :                             PyObject *dataobj);
     241             : 
     242             : static PyObject *
     243        6356 : _imp_get_frozen_object(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
     244             : {
     245        6356 :     PyObject *return_value = NULL;
     246             :     PyObject *name;
     247        6356 :     PyObject *dataobj = Py_None;
     248             : 
     249        6356 :     if (!_PyArg_CheckPositional("get_frozen_object", nargs, 1, 2)) {
     250           0 :         goto exit;
     251             :     }
     252        6356 :     if (!PyUnicode_Check(args[0])) {
     253           0 :         _PyArg_BadArgument("get_frozen_object", "argument 1", "str", args[0]);
     254           0 :         goto exit;
     255             :     }
     256        6356 :     if (PyUnicode_READY(args[0]) == -1) {
     257           0 :         goto exit;
     258             :     }
     259        6356 :     name = args[0];
     260        6356 :     if (nargs < 2) {
     261        6356 :         goto skip_optional;
     262             :     }
     263           0 :     dataobj = args[1];
     264        6356 : skip_optional:
     265        6356 :     return_value = _imp_get_frozen_object_impl(module, name, dataobj);
     266             : 
     267        6356 : exit:
     268        6356 :     return return_value;
     269             : }
     270             : 
     271             : PyDoc_STRVAR(_imp_is_frozen_package__doc__,
     272             : "is_frozen_package($module, name, /)\n"
     273             : "--\n"
     274             : "\n"
     275             : "Returns True if the module name is of a frozen package.");
     276             : 
     277             : #define _IMP_IS_FROZEN_PACKAGE_METHODDEF    \
     278             :     {"is_frozen_package", (PyCFunction)_imp_is_frozen_package, METH_O, _imp_is_frozen_package__doc__},
     279             : 
     280             : static PyObject *
     281             : _imp_is_frozen_package_impl(PyObject *module, PyObject *name);
     282             : 
     283             : static PyObject *
     284        3170 : _imp_is_frozen_package(PyObject *module, PyObject *arg)
     285             : {
     286        3170 :     PyObject *return_value = NULL;
     287             :     PyObject *name;
     288             : 
     289        3170 :     if (!PyUnicode_Check(arg)) {
     290           0 :         _PyArg_BadArgument("is_frozen_package", "argument", "str", arg);
     291           0 :         goto exit;
     292             :     }
     293        3170 :     if (PyUnicode_READY(arg) == -1) {
     294           0 :         goto exit;
     295             :     }
     296        3170 :     name = arg;
     297        3170 :     return_value = _imp_is_frozen_package_impl(module, name);
     298             : 
     299        3170 : exit:
     300        3170 :     return return_value;
     301             : }
     302             : 
     303             : PyDoc_STRVAR(_imp_is_builtin__doc__,
     304             : "is_builtin($module, name, /)\n"
     305             : "--\n"
     306             : "\n"
     307             : "Returns True if the module name corresponds to a built-in module.");
     308             : 
     309             : #define _IMP_IS_BUILTIN_METHODDEF    \
     310             :     {"is_builtin", (PyCFunction)_imp_is_builtin, METH_O, _imp_is_builtin__doc__},
     311             : 
     312             : static PyObject *
     313             : _imp_is_builtin_impl(PyObject *module, PyObject *name);
     314             : 
     315             : static PyObject *
     316      232387 : _imp_is_builtin(PyObject *module, PyObject *arg)
     317             : {
     318      232387 :     PyObject *return_value = NULL;
     319             :     PyObject *name;
     320             : 
     321      232387 :     if (!PyUnicode_Check(arg)) {
     322           0 :         _PyArg_BadArgument("is_builtin", "argument", "str", arg);
     323           0 :         goto exit;
     324             :     }
     325      232387 :     if (PyUnicode_READY(arg) == -1) {
     326           0 :         goto exit;
     327             :     }
     328      232387 :     name = arg;
     329      232387 :     return_value = _imp_is_builtin_impl(module, name);
     330             : 
     331      232387 : exit:
     332      232387 :     return return_value;
     333             : }
     334             : 
     335             : PyDoc_STRVAR(_imp_is_frozen__doc__,
     336             : "is_frozen($module, name, /)\n"
     337             : "--\n"
     338             : "\n"
     339             : "Returns True if the module name corresponds to a frozen module.");
     340             : 
     341             : #define _IMP_IS_FROZEN_METHODDEF    \
     342             :     {"is_frozen", (PyCFunction)_imp_is_frozen, METH_O, _imp_is_frozen__doc__},
     343             : 
     344             : static PyObject *
     345             : _imp_is_frozen_impl(PyObject *module, PyObject *name);
     346             : 
     347             : static PyObject *
     348       11463 : _imp_is_frozen(PyObject *module, PyObject *arg)
     349             : {
     350       11463 :     PyObject *return_value = NULL;
     351             :     PyObject *name;
     352             : 
     353       11463 :     if (!PyUnicode_Check(arg)) {
     354           0 :         _PyArg_BadArgument("is_frozen", "argument", "str", arg);
     355           0 :         goto exit;
     356             :     }
     357       11463 :     if (PyUnicode_READY(arg) == -1) {
     358           0 :         goto exit;
     359             :     }
     360       11463 :     name = arg;
     361       11463 :     return_value = _imp_is_frozen_impl(module, name);
     362             : 
     363       11463 : exit:
     364       11463 :     return return_value;
     365             : }
     366             : 
     367             : PyDoc_STRVAR(_imp__frozen_module_names__doc__,
     368             : "_frozen_module_names($module, /)\n"
     369             : "--\n"
     370             : "\n"
     371             : "Returns the list of available frozen modules.");
     372             : 
     373             : #define _IMP__FROZEN_MODULE_NAMES_METHODDEF    \
     374             :     {"_frozen_module_names", (PyCFunction)_imp__frozen_module_names, METH_NOARGS, _imp__frozen_module_names__doc__},
     375             : 
     376             : static PyObject *
     377             : _imp__frozen_module_names_impl(PyObject *module);
     378             : 
     379             : static PyObject *
     380           1 : _imp__frozen_module_names(PyObject *module, PyObject *Py_UNUSED(ignored))
     381             : {
     382           1 :     return _imp__frozen_module_names_impl(module);
     383             : }
     384             : 
     385             : PyDoc_STRVAR(_imp__override_frozen_modules_for_tests__doc__,
     386             : "_override_frozen_modules_for_tests($module, override, /)\n"
     387             : "--\n"
     388             : "\n"
     389             : "(internal-only) Override PyConfig.use_frozen_modules.\n"
     390             : "\n"
     391             : "(-1: \"off\", 1: \"on\", 0: no override)\n"
     392             : "See frozen_modules() in Lib/test/support/import_helper.py.");
     393             : 
     394             : #define _IMP__OVERRIDE_FROZEN_MODULES_FOR_TESTS_METHODDEF    \
     395             :     {"_override_frozen_modules_for_tests", (PyCFunction)_imp__override_frozen_modules_for_tests, METH_O, _imp__override_frozen_modules_for_tests__doc__},
     396             : 
     397             : static PyObject *
     398             : _imp__override_frozen_modules_for_tests_impl(PyObject *module, int override);
     399             : 
     400             : static PyObject *
     401         772 : _imp__override_frozen_modules_for_tests(PyObject *module, PyObject *arg)
     402             : {
     403         772 :     PyObject *return_value = NULL;
     404             :     int override;
     405             : 
     406         772 :     override = _PyLong_AsInt(arg);
     407         772 :     if (override == -1 && PyErr_Occurred()) {
     408           0 :         goto exit;
     409             :     }
     410         772 :     return_value = _imp__override_frozen_modules_for_tests_impl(module, override);
     411             : 
     412         772 : exit:
     413         772 :     return return_value;
     414             : }
     415             : 
     416             : #if defined(HAVE_DYNAMIC_LOADING)
     417             : 
     418             : PyDoc_STRVAR(_imp_create_dynamic__doc__,
     419             : "create_dynamic($module, spec, file=<unrepresentable>, /)\n"
     420             : "--\n"
     421             : "\n"
     422             : "Create an extension module.");
     423             : 
     424             : #define _IMP_CREATE_DYNAMIC_METHODDEF    \
     425             :     {"create_dynamic", _PyCFunction_CAST(_imp_create_dynamic), METH_FASTCALL, _imp_create_dynamic__doc__},
     426             : 
     427             : static PyObject *
     428             : _imp_create_dynamic_impl(PyObject *module, PyObject *spec, PyObject *file);
     429             : 
     430             : static PyObject *
     431       29466 : _imp_create_dynamic(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
     432             : {
     433       29466 :     PyObject *return_value = NULL;
     434             :     PyObject *spec;
     435       29466 :     PyObject *file = NULL;
     436             : 
     437       29466 :     if (!_PyArg_CheckPositional("create_dynamic", nargs, 1, 2)) {
     438           0 :         goto exit;
     439             :     }
     440       29466 :     spec = args[0];
     441       29466 :     if (nargs < 2) {
     442       29466 :         goto skip_optional;
     443             :     }
     444           0 :     file = args[1];
     445       29466 : skip_optional:
     446       29466 :     return_value = _imp_create_dynamic_impl(module, spec, file);
     447             : 
     448       29466 : exit:
     449       29466 :     return return_value;
     450             : }
     451             : 
     452             : #endif /* defined(HAVE_DYNAMIC_LOADING) */
     453             : 
     454             : #if defined(HAVE_DYNAMIC_LOADING)
     455             : 
     456             : PyDoc_STRVAR(_imp_exec_dynamic__doc__,
     457             : "exec_dynamic($module, mod, /)\n"
     458             : "--\n"
     459             : "\n"
     460             : "Initialize an extension module.");
     461             : 
     462             : #define _IMP_EXEC_DYNAMIC_METHODDEF    \
     463             :     {"exec_dynamic", (PyCFunction)_imp_exec_dynamic, METH_O, _imp_exec_dynamic__doc__},
     464             : 
     465             : static int
     466             : _imp_exec_dynamic_impl(PyObject *module, PyObject *mod);
     467             : 
     468             : static PyObject *
     469       29394 : _imp_exec_dynamic(PyObject *module, PyObject *mod)
     470             : {
     471       29394 :     PyObject *return_value = NULL;
     472             :     int _return_value;
     473             : 
     474       29394 :     _return_value = _imp_exec_dynamic_impl(module, mod);
     475       29394 :     if ((_return_value == -1) && PyErr_Occurred()) {
     476           6 :         goto exit;
     477             :     }
     478       29388 :     return_value = PyLong_FromLong((long)_return_value);
     479             : 
     480       29394 : exit:
     481       29394 :     return return_value;
     482             : }
     483             : 
     484             : #endif /* defined(HAVE_DYNAMIC_LOADING) */
     485             : 
     486             : PyDoc_STRVAR(_imp_exec_builtin__doc__,
     487             : "exec_builtin($module, mod, /)\n"
     488             : "--\n"
     489             : "\n"
     490             : "Initialize a built-in module.");
     491             : 
     492             : #define _IMP_EXEC_BUILTIN_METHODDEF    \
     493             :     {"exec_builtin", (PyCFunction)_imp_exec_builtin, METH_O, _imp_exec_builtin__doc__},
     494             : 
     495             : static int
     496             : _imp_exec_builtin_impl(PyObject *module, PyObject *mod);
     497             : 
     498             : static PyObject *
     499       53678 : _imp_exec_builtin(PyObject *module, PyObject *mod)
     500             : {
     501       53678 :     PyObject *return_value = NULL;
     502             :     int _return_value;
     503             : 
     504       53678 :     _return_value = _imp_exec_builtin_impl(module, mod);
     505       53678 :     if ((_return_value == -1) && PyErr_Occurred()) {
     506           0 :         goto exit;
     507             :     }
     508       53678 :     return_value = PyLong_FromLong((long)_return_value);
     509             : 
     510       53678 : exit:
     511       53678 :     return return_value;
     512             : }
     513             : 
     514             : PyDoc_STRVAR(_imp_source_hash__doc__,
     515             : "source_hash($module, /, key, source)\n"
     516             : "--\n"
     517             : "\n");
     518             : 
     519             : #define _IMP_SOURCE_HASH_METHODDEF    \
     520             :     {"source_hash", _PyCFunction_CAST(_imp_source_hash), METH_FASTCALL|METH_KEYWORDS, _imp_source_hash__doc__},
     521             : 
     522             : static PyObject *
     523             : _imp_source_hash_impl(PyObject *module, long key, Py_buffer *source);
     524             : 
     525             : static PyObject *
     526         665 : _imp_source_hash(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
     527             : {
     528         665 :     PyObject *return_value = NULL;
     529             :     static const char * const _keywords[] = {"key", "source", NULL};
     530             :     static _PyArg_Parser _parser = {NULL, _keywords, "source_hash", 0};
     531             :     PyObject *argsbuf[2];
     532             :     long key;
     533         665 :     Py_buffer source = {NULL, NULL};
     534             : 
     535         665 :     args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 2, 2, 0, argsbuf);
     536         665 :     if (!args) {
     537           0 :         goto exit;
     538             :     }
     539         665 :     key = PyLong_AsLong(args[0]);
     540         665 :     if (key == -1 && PyErr_Occurred()) {
     541           0 :         goto exit;
     542             :     }
     543         665 :     if (PyObject_GetBuffer(args[1], &source, PyBUF_SIMPLE) != 0) {
     544           0 :         goto exit;
     545             :     }
     546         665 :     if (!PyBuffer_IsContiguous(&source, 'C')) {
     547           0 :         _PyArg_BadArgument("source_hash", "argument 'source'", "contiguous buffer", args[1]);
     548           0 :         goto exit;
     549             :     }
     550         665 :     return_value = _imp_source_hash_impl(module, key, &source);
     551             : 
     552         665 : exit:
     553             :     /* Cleanup for source */
     554         665 :     if (source.obj) {
     555         665 :        PyBuffer_Release(&source);
     556             :     }
     557             : 
     558         665 :     return return_value;
     559             : }
     560             : 
     561             : #ifndef _IMP_CREATE_DYNAMIC_METHODDEF
     562             :     #define _IMP_CREATE_DYNAMIC_METHODDEF
     563             : #endif /* !defined(_IMP_CREATE_DYNAMIC_METHODDEF) */
     564             : 
     565             : #ifndef _IMP_EXEC_DYNAMIC_METHODDEF
     566             :     #define _IMP_EXEC_DYNAMIC_METHODDEF
     567             : #endif /* !defined(_IMP_EXEC_DYNAMIC_METHODDEF) */
     568             : /*[clinic end generated code: output=8d0f4305b1d0714b input=a9049054013a1b77]*/

Generated by: LCOV version 1.14