Issue 13722: "distributions can disable the encodings package" (original) (raw)

Created on 2012-01-06 20:32 by pitrou, last changed 2022-04-11 14:57 by admin. This issue is now closed.

Messages (5)
msg150767 - (view) Author: Antoine Pitrou (pitrou) * (Python committer) Date: 2012-01-06 20:32
In _PyCodecRegistry_Init() (in Python/codecs.c), it is attempted to import the encodings module (so that the default search function gets registered) and failures get ignored following the same reasoning: /* Ignore ImportErrors... this is done so that distributions can disable the encodings package. Note that other errors are not masked, e.g. SystemErrors raised to inform the user of an error in the Python configuration are still reported back to the user. */ However, it is unlikely for Python 3 to start up at all without an encodings package (we needs some codecs to initialize stdio). Also, I'm not sure what the point would be. Distributions can simply distribute a dummy encodings module if they really want to disable the default encodings. Not silencing the error would probably make it easier to diagnose early import issues.
msg150777 - (view) Author: Amaury Forgeot d'Arc (amaury.forgeotdarc) * (Python committer) Date: 2012-01-06 23:23
Agreed. This behavior probably comes from the times when unicode was an optional feature.
msg151220 - (view) Author: Terry J. Reedy (terry.reedy) * (Python committer) Date: 2012-01-14 03:57
Those lines were whitespace reformed by Antoine in 61466/61463. They previously came from 28325 which fixed #663074 (2003). I do not see any discussion in that issue of making the import optional. I suspect there is no test of Python working with no encodings ;-) Just for fun, I commented out the import and error checks. There is an error message during the build about python_d.exe not working and python_d.exe crashes (ungracefully) on explicit startup, as you expected. I presume the patch is to delete the entire block added in 28325: if (PyErr_ExceptionMatches(PyExc_ImportError)) { /* Ignore ImportErrors... this is done so that distributions can disable the encodings package. Note that other errors are not masked, e.g. SystemErrors raised to inform the user of an error in the Python configuration are still reported back to the user. */ PyErr_Clear(); return 0; Only in 3.3 or further back? I can do it if you like.
msg151290 - (view) Author: Antoine Pitrou (pitrou) * (Python committer) Date: 2012-01-15 15:44
Actually, that code is from bc861add5d71. But the error was also muted in the initial checkin in d0e06efb3165. In any case, the silencing should be removed, both in 3.2 and 3.3 IMO.
msg151569 - (view) Author: Roundup Robot (python-dev) (Python triager) Date: 2012-01-18 21:35
New changeset 46b245f03f54 by Antoine Pitrou in branch '3.2': Issue #13722: Avoid silencing ImportErrors when initializing the codecs registry. http://hg.python.org/cpython/rev/46b245f03f54 New changeset f55529aa023d by Antoine Pitrou in branch 'default': Issue #13722: Avoid silencing ImportErrors when initializing the codecs registry. http://hg.python.org/cpython/rev/f55529aa023d
History
Date User Action Args
2022-04-11 14:57:25 admin set github: 57931
2012-01-18 21:39:29 pitrou set status: open -> closedresolution: fixedstage: needs patch -> resolved
2012-01-18 21:35:47 python-dev set nosy: + python-devmessages: +
2012-01-15 15:44:39 pitrou set messages: +
2012-01-14 03:57:20 terry.reedy set nosy: + terry.reedymessages: + stage: needs patch
2012-01-14 02:47:05 eric.araujo set nosy: + eric.araujo
2012-01-06 23:23:38 amaury.forgeotdarc set messages: +
2012-01-06 20:32:22 pitrou create