From 03b88522f5e847773845b0fac90fd06d04937a65 Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Fri, 2 Aug 2024 13:12:19 +0300 Subject: gh-122188: Remove _imp.pyc_magic_number (GH-122503) _imp.pyc_magic_number_token should be enough. --- Lib/importlib/_bootstrap_external.py | 2 +- Lib/test/test_import/__init__.py | 10 ++++++---- Python/import.c | 6 +----- 3 files changed, 8 insertions(+), 10 deletions(-) diff --git a/Lib/importlib/_bootstrap_external.py b/Lib/importlib/_bootstrap_external.py index 4d154dc..5bbcb37 100644 --- a/Lib/importlib/_bootstrap_external.py +++ b/Lib/importlib/_bootstrap_external.py @@ -221,7 +221,7 @@ def _write_atomic(path, data, mode=0o666): _code_type = type(_write_atomic.__code__) -MAGIC_NUMBER = (_imp.pyc_magic_number).to_bytes(2, 'little') + b'\r\n' +MAGIC_NUMBER = _imp.pyc_magic_number_token.to_bytes(4, 'little') _PYCACHE = '__pycache__' _OPT = 'opt-' diff --git a/Lib/test/test_import/__init__.py b/Lib/test/test_import/__init__.py index 56c6ffe..fd778ec 100644 --- a/Lib/test/test_import/__init__.py +++ b/Lib/test/test_import/__init__.py @@ -3116,10 +3116,12 @@ class CAPITests(unittest.TestCase): @cpython_only class TestMagicNumber(unittest.TestCase): def test_magic_number_endianness(self): - magic_number = (_imp.pyc_magic_number).to_bytes(2, 'little') + b'\r\n' - raw_magic_number = int.from_bytes(magic_number, 'little') - - self.assertEqual(raw_magic_number, _imp.pyc_magic_number_token) + magic_number_bytes = _imp.pyc_magic_number_token.to_bytes(4, 'little') + self.assertEqual(magic_number_bytes[2:], b'\r\n') + # Starting with Python 3.11, Python 3.n starts with magic number 2900+50n. + magic_number = int.from_bytes(magic_number_bytes[:2], 'little') + start = 2900 + sys.version_info.minor * 50 + self.assertIn(magic_number, range(start, start + 50)) if __name__ == '__main__': diff --git a/Python/import.c b/Python/import.c index 540874a..f4c0d54 100644 --- a/Python/import.c +++ b/Python/import.c @@ -6,7 +6,7 @@ #include "pycore_import.h" // _PyImport_BootstrapImp() #include "pycore_initconfig.h" // _PyStatus_OK() #include "pycore_interp.h" // struct _import_runtime_state -#include "pycore_magic_number.h" // PYC_MAGIC_NUMBER +#include "pycore_magic_number.h" // PYC_MAGIC_NUMBER_TOKEN #include "pycore_namespace.h" // _PyNamespace_Type #include "pycore_object.h" // _Py_SetImmortal() #include "pycore_pyerrors.h" // _PyErr_SetString() @@ -4810,10 +4810,6 @@ imp_module_exec(PyObject *module) return -1; } - if (PyModule_AddIntConstant(module, "pyc_magic_number", PYC_MAGIC_NUMBER) < 0) { - return -1; - } - if (PyModule_AddIntConstant( module, "pyc_magic_number_token", PYC_MAGIC_NUMBER_TOKEN) < 0) { -- cgit v0.12