]> git.ipfire.org Git - thirdparty/vim.git/commitdiff
patch 9.1.0417: if_py: find_module has been removed in Python 3.12.0a7 v9.1.0417
authorChristian Brabandt <cb@256bit.org>
Fri, 17 May 2024 16:30:01 +0000 (18:30 +0200)
committerChristian Brabandt <cb@256bit.org>
Fri, 17 May 2024 16:30:26 +0000 (18:30 +0200)
Problem:  if_py: find_module has been removed in Python 3.12.0a7
          (@Ghost-LZW)
Solution: Do not include find_module for Python >= 3.12.0a7

fixes: #14776
closes: #14781

Signed-off-by: Christian Brabandt <cb@256bit.org>
runtime/doc/if_pyth.txt
runtime/doc/tags
src/if_py_both.h
src/version.c

index 8456d08c66228acc3df5c74387fcde3b59911890..623684152b7459fc000eb2a9bb6294a68a127504 100644 (file)
@@ -1,4 +1,4 @@
-*if_pyth.txt*   For Vim version 9.1.  Last change: 2023 Oct 25
+*if_pyth.txt*   For Vim version 9.1.  Last change: 2024 May 16
 
 
                  VIM REFERENCE MANUAL    by Paul Moore
@@ -343,7 +343,8 @@ In python vim.VIM_SPECIAL_PATH special directory is used as a replacement for
 the list of paths found in 'runtimepath': with this directory in sys.path and
 vim.path_hooks in sys.path_hooks python will try to load module from
 {rtp}/python2 (or python3) and {rtp}/pythonx (for both python versions) for
-each {rtp} found in 'runtimepath'.
+each {rtp} found in 'runtimepath' (Note: find_module() has been removed from
+imp module around Python 3.12.0a7).
 
 Implementation is similar to the following, but written in C: >
 
@@ -404,10 +405,12 @@ vim.VIM_SPECIAL_PATH                                      *python-VIM_SPECIAL_PATH*
 
 vim.find_module(...)                                   *python-find_module*
 vim.path_hook(path)                                    *python-path_hook*
+vim.find_spec(...)                                     *python-find_spec*
        Methods or objects used to implement path loading as described above.
        You should not be using any of these directly except for vim.path_hook
-       in case you need to do something with sys.meta_path. It is not
-       guaranteed that any of the objects will exist in the future vim
+       in case you need to do something with sys.meta_path, vim.find_spec()
+       is available starting with Python 3.7.
+       It is not guaranteed that any of the objects will exist in future vim
        versions.
 
 vim._get_paths                                         *python-_get_paths*
index 795851b4bf2c029b05db4ec9943fed91558a1809..d354df1ee505320e6336c5f575cb18c02a882dfc 100644 (file)
@@ -9518,6 +9518,7 @@ python-eval       if_pyth.txt     /*python-eval*
 python-examples        if_pyth.txt     /*python-examples*
 python-fchdir  if_pyth.txt     /*python-fchdir*
 python-find_module     if_pyth.txt     /*python-find_module*
+python-find_spec       if_pyth.txt     /*python-find_spec*
 python-foreach_rtp     if_pyth.txt     /*python-foreach_rtp*
 python-input   if_pyth.txt     /*python-input*
 python-options if_pyth.txt     /*python-options*
index 3e5993bb64c6abb4d31fd813c811cfc20cf8382d..e0fd3eafb06d2e346b8a5cfb0815b8a7ed0ded52 100644 (file)
@@ -7325,12 +7325,11 @@ populate_module(PyObject *m)
        return -1;
     }
 
+# if PY_VERSION_HEX < 0x30c00a7
+    // find_module has been removed as of Python 3.12.0a7
     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);
-    }
+# endif
 
     Py_DECREF(imp);
 
index cd4c1af65e64dcabfbed436ac5444251969c9b53..682a46873ac9ce350ee048de61b1e554de8004ef 100644 (file)
@@ -704,6 +704,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    417,
 /**/
     416,
 /**/