[issue42002] Clean up initialization of the sys module

Serhiy Storchaka report at bugs.python.org
Sat Oct 10 17:01:19 EDT 2020


New submission from Serhiy Storchaka <storchaka+cpython at gmail.com>:

_PySys_InitCore() and _PySys_InitMain() in Python/sysmodule.c contains many invocations of macros for setting attributes of the sys module. The proposed PR changes these macros.

1. SET_SYS_FROM_STRING was renamed to just SET_SYS. It is much shorter and allow to write many invocations in one line. Also SET_SYS_FROM_STRING was not consistent with SET_SYS_FROM_WSTR.

2. Added new SET_SYS_FROM_STRING which sets attribute specified as C char string (similarly to SET_SYS_FROM_WSTR which sets attribute specified as C wchar_t string).

3. Added COPY_SYS_ATTR for making a copy of the attribute. It uses PyMapping_GetItemString() instead of PyDict_GetItemString() which silences all expressions.

4. Removed SET_SYS_FROM_STRING_BORROW. It no longer used, and it was used improperly.

5. SET_SYS_FROM_STRING_INT_RESULT replaced with SET_SYS.

6. All macros have been rewritten in term of SET_SYS that significantly simplifies the code.

All this makes the code clearer and makes errors handling more correct.

----------
components: Interpreter Core
messages: 378415
nosy: serhiy.storchaka
priority: normal
severity: normal
status: open
title: Clean up initialization of the sys module
versions: Python 3.10

_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue42002>
_______________________________________


More information about the Python-bugs-list mailing list