Mercurial > cpython-lru_cache-weakref
comparison Python/import.c @ 76451:ea46ebba8a0f
Issue #13959: Re-implement imp.source_from_cache() in Lib/imp.py.
| author | Brett Cannon <brett@python.org> |
|---|---|
| date | Sat, 21 Apr 2012 18:52:52 -0400 |
| parents | b773a751c2e7 |
| children | 085cf1480cfe |
comparison
equal
deleted
inserted
replaced
| 76450:b773a751c2e7 | 76451:ea46ebba8a0f |
|---|---|
| 2924 "reload(module) -> module\n\ | 2924 "reload(module) -> module\n\ |
| 2925 \n\ | 2925 \n\ |
| 2926 Reload the module. The module must have been successfully imported before."); | 2926 Reload the module. The module must have been successfully imported before."); |
| 2927 | 2927 |
| 2928 | 2928 |
| 2929 static PyObject * | |
| 2930 imp_source_from_cache(PyObject *self, PyObject *args, PyObject *kws) | |
| 2931 { | |
| 2932 static char *kwlist[] = {"path", NULL}; | |
| 2933 PyObject *pathname, *source; | |
| 2934 | |
| 2935 if (!PyArg_ParseTupleAndKeywords( | |
| 2936 args, kws, "O&", kwlist, | |
| 2937 PyUnicode_FSDecoder, &pathname)) | |
| 2938 return NULL; | |
| 2939 | |
| 2940 source = make_source_pathname(pathname); | |
| 2941 if (source == NULL) { | |
| 2942 PyErr_Format(PyExc_ValueError, "Not a PEP 3147 pyc path: %R", | |
| 2943 pathname); | |
| 2944 Py_DECREF(pathname); | |
| 2945 return NULL; | |
| 2946 } | |
| 2947 Py_DECREF(pathname); | |
| 2948 return source; | |
| 2949 } | |
| 2950 | |
| 2951 PyDoc_STRVAR(doc_source_from_cache, | |
| 2952 "source_from_cache(path) -> path\n\ | |
| 2953 Given the path to a .pyc./.pyo file, return the path to its .py file.\n\ | |
| 2954 \n\ | |
| 2955 The .pyc/.pyo file does not need to exist; this simply returns the path to\n\ | |
| 2956 the .py file calculated to correspond to the .pyc/.pyo file. If path\n\ | |
| 2957 does not conform to PEP 3147 format, ValueError will be raised."); | |
| 2958 | |
| 2959 /* Doc strings */ | 2929 /* Doc strings */ |
| 2960 | 2930 |
| 2961 PyDoc_STRVAR(doc_imp, | 2931 PyDoc_STRVAR(doc_imp, |
| 2962 "(Extremely) low-level import machinery bits as used by importlib and imp."); | 2932 "(Extremely) low-level import machinery bits as used by importlib and imp."); |
| 2963 | 2933 |
| 3005 {"get_suffixes", imp_get_suffixes, METH_NOARGS, doc_get_suffixes}, | 2975 {"get_suffixes", imp_get_suffixes, METH_NOARGS, doc_get_suffixes}, |
| 3006 {"lock_held", imp_lock_held, METH_NOARGS, doc_lock_held}, | 2976 {"lock_held", imp_lock_held, METH_NOARGS, doc_lock_held}, |
| 3007 {"acquire_lock", imp_acquire_lock, METH_NOARGS, doc_acquire_lock}, | 2977 {"acquire_lock", imp_acquire_lock, METH_NOARGS, doc_acquire_lock}, |
| 3008 {"release_lock", imp_release_lock, METH_NOARGS, doc_release_lock}, | 2978 {"release_lock", imp_release_lock, METH_NOARGS, doc_release_lock}, |
| 3009 {"reload", imp_reload, METH_O, doc_reload}, | 2979 {"reload", imp_reload, METH_O, doc_reload}, |
| 3010 {"source_from_cache", (PyCFunction)imp_source_from_cache, | |
| 3011 METH_VARARGS | METH_KEYWORDS, doc_source_from_cache}, | |
| 3012 /* The rest are obsolete */ | |
| 3013 {"get_frozen_object", imp_get_frozen_object, METH_VARARGS}, | 2980 {"get_frozen_object", imp_get_frozen_object, METH_VARARGS}, |
| 3014 {"is_frozen_package", imp_is_frozen_package, METH_VARARGS}, | 2981 {"is_frozen_package", imp_is_frozen_package, METH_VARARGS}, |
| 3015 {"init_builtin", imp_init_builtin, METH_VARARGS}, | 2982 {"init_builtin", imp_init_builtin, METH_VARARGS}, |
| 3016 {"init_frozen", imp_init_frozen, METH_VARARGS}, | 2983 {"init_frozen", imp_init_frozen, METH_VARARGS}, |
| 3017 {"is_builtin", imp_is_builtin, METH_VARARGS}, | 2984 {"is_builtin", imp_is_builtin, METH_VARARGS}, |
