Skip to content

Commit 5172fda

Browse files
committed
Set custom sys.__getattr__
1 parent 85a8bae commit 5172fda

File tree

1 file changed

+24
-0
lines changed

1 file changed

+24
-0
lines changed

Python/sysmodule.c

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -975,6 +975,28 @@ sys_exit_impl(PyObject *module, PyObject *status)
975975
}
976976

977977

978+
static PyObject *
979+
sys___getattr__(PyObject *module, PyObject *name)
980+
{
981+
PyObject *value = NULL;
982+
if (_PySys_GetOptionalAttr(name, &value) < 0) {
983+
return NULL;
984+
}
985+
if (value == NULL) {
986+
PyErr_Format(PyExc_AttributeError,
987+
"module 'sys' has no attribute '%U'", name);
988+
}
989+
return value;
990+
}
991+
992+
PyDoc_STRVAR(__getattr___doc,
993+
"__getattr__($module, name, /)\n"
994+
"--\n"
995+
"\n"
996+
"Get a sys attribute by name.\n"
997+
);
998+
999+
9781000
static PyObject *
9791001
get_utf8_unicode(void)
9801002
{
@@ -2705,6 +2727,8 @@ static PyMethodDef sys_methods[] = {
27052727
SYS_EXC_INFO_METHODDEF
27062728
SYS_EXCEPTHOOK_METHODDEF
27072729
SYS_EXIT_METHODDEF
2730+
{"__getattr__", _PyCFunction_CAST(sys___getattr__),
2731+
METH_O, __getattr___doc},
27082732
SYS_GETDEFAULTENCODING_METHODDEF
27092733
SYS_GETDLOPENFLAGS_METHODDEF
27102734
SYS_GETALLOCATEDBLOCKS_METHODDEF

0 commit comments

Comments
 (0)