Skip to content

Commit 3dff9ef

Browse files
committed
Add sys.__dir__ so lazy_modules appears in tab completion
1 parent ca32d07 commit 3dff9ef

1 file changed

Lines changed: 18 additions & 0 deletions

File tree

Python/sysmodule.c

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2926,8 +2926,26 @@ sys_getattr(PyObject *self, PyObject *args)
29262926
return NULL;
29272927
}
29282928

2929+
static PyObject *
2930+
sys_dir(PyObject *self, PyObject *args)
2931+
{
2932+
PyObject *names = PyMapping_Keys(((PyModuleObject *)self)->md_dict);
2933+
if (names == NULL) {
2934+
return NULL;
2935+
}
2936+
PyObject *lazy = PyUnicode_FromString("lazy_modules");
2937+
int err = lazy ? PyList_Append(names, lazy) : -1;
2938+
Py_XDECREF(lazy);
2939+
if (err < 0) {
2940+
Py_DECREF(names);
2941+
return NULL;
2942+
}
2943+
return names;
2944+
}
2945+
29292946
static PyMethodDef sys_methods[] = {
29302947
/* Might as well keep this in alphabetic order */
2948+
{"__dir__", sys_dir, METH_NOARGS, "Module __dir__"},
29312949
{"__getattr__", sys_getattr, METH_VARARGS, "Module __getattr__"},
29322950
SYS_ADDAUDITHOOK_METHODDEF
29332951
SYS_AUDIT_METHODDEF

0 commit comments

Comments
 (0)