From: Bram Moolenaar Date: Thu, 14 Feb 2019 12:28:45 +0000 (+0100) Subject: patch 8.1.0916: with Python 3.7 "find_module" is not made available X-Git-Tag: v8.1.0916 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=b999ba2778b6c02fdd100e498a9ba5b2e7036f7d;p=vim patch 8.1.0916: with Python 3.7 "find_module" is not made available Problem: With Python 3.7 "find_module" is not made available. Solution: Also add "find_module" with Python 3.7. (Joel Frederico, closes #3954) --- diff --git a/src/if_py_both.h b/src/if_py_both.h index a0c166378..8d11488d3 100644 --- a/src/if_py_both.h +++ b/src/if_py_both.h @@ -87,9 +87,9 @@ static PyObject *vim_special_path_object; #if PY_VERSION_HEX >= 0x030700f0 static PyObject *py_find_spec; #else -static PyObject *py_find_module; static PyObject *py_load_module; #endif +static PyObject *py_find_module; static PyObject *VimError; @@ -759,7 +759,7 @@ VimToPython(typval_T *our_tv, int depth, PyObject *lookup_dict) sprintf(buf, "%ld", (long)our_tv->vval.v_number); ret = PyString_FromString((char *)buf); } -# ifdef FEAT_FLOAT +#ifdef FEAT_FLOAT else if (our_tv->v_type == VAR_FLOAT) { char buf[NUMBUFLEN]; @@ -767,7 +767,7 @@ VimToPython(typval_T *our_tv, int depth, PyObject *lookup_dict) sprintf(buf, "%f", our_tv->vval.v_float); ret = PyString_FromString((char *)buf); } -# endif +#endif else if (our_tv->v_type == VAR_LIST) { list_T *list = our_tv->vval.v_list; @@ -6093,18 +6093,18 @@ convert_dl(PyObject *obj, typval_T *tv, sprintf(hexBuf, "%p", (void *)obj); -# ifdef PY_USE_CAPSULE +#ifdef PY_USE_CAPSULE capsule = PyDict_GetItemString(lookup_dict, hexBuf); -# else +#else capsule = (PyObject *)PyDict_GetItemString(lookup_dict, hexBuf); -# endif +#endif if (capsule == NULL) { -# ifdef PY_USE_CAPSULE +#ifdef PY_USE_CAPSULE capsule = PyCapsule_New(tv, NULL, NULL); -# else +#else capsule = PyCObject_FromVoidPtr(tv, NULL); -# endif +#endif if (PyDict_SetItemString(lookup_dict, hexBuf, capsule)) { Py_DECREF(capsule); @@ -6130,11 +6130,11 @@ convert_dl(PyObject *obj, typval_T *tv, { typval_T *v; -# ifdef PY_USE_CAPSULE +#ifdef PY_USE_CAPSULE v = PyCapsule_GetPointer(capsule, NULL); -# else +#else v = PyCObject_AsVoidPtr(capsule); -# endif +#endif copy_tv(v, tv); } return 0; @@ -6921,6 +6921,13 @@ populate_module(PyObject *m) return -1; } + if ((py_find_module = PyObject_GetAttrString(cls, "find_module"))) + { + // find_module() is deprecated, this may stop working in some later + // version. + ADD_OBJECT(m, "_find_module", py_find_module); + } + Py_DECREF(imp); ADD_OBJECT(m, "_find_spec", py_find_spec); diff --git a/src/version.c b/src/version.c index d0255a1b8..7614566d8 100644 --- a/src/version.c +++ b/src/version.c @@ -783,6 +783,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 916, /**/ 915, /**/