summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Lib/importlib/_bootstrap_external.py2
-rw-r--r--Lib/test/test_import/__init__.py10
-rw-r--r--Python/import.c6
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)
{