New submission from Serhiy Storchaka <storchaka+cpyt...@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 <rep...@bugs.python.org>
<https://bugs.python.org/issue42002>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to