fix(python): preserve historical signed code fields

Keep signed co_stacksize and co_flags for historical magic entries whose constructors accepted them. Preserve magic 3410 with a constructor-revision limitation; reject negative values from 3411 onward.

Fixes #6487
This commit is contained in:
morluto committed 2026-10-23 18:31:02 +08:00
1 parent 667402846c
commit c6ab965062
7 files changed
+253 -79

No files matched your search

+9
View File
@@ -10,6 +10,7 @@ it("maps pinned CPython 3.7–3.13 magics and leaves gaps unknown", () => {
python_version: "3.7",
code_layout: "py37",
header_bytes: 16,
negative_code_fields: "accepted",
});
expect(pythonPycMagicEntry(3390)).toMatchObject({
python_version: "3.7",
@@ -23,16 +24,24 @@ it("maps pinned CPython 3.7–3.13 magics and leaves gaps unknown", () => {
python_version: "3.8",
code_layout: "py38",
header_bytes: 16,
negative_code_fields: "rejected",
});
expect(pythonPycMagicEntry(3401)?.negative_code_fields).toBe("accepted");
expect(pythonPycMagicEntry(3410)?.negative_code_fields).toBe(
"revision-dependent",
);
expect(pythonPycMagicEntry(3411)?.negative_code_fields).toBe("rejected");
expect(pythonPycMagicEntry(3531)).toEqual({
python_version: "3.12",
code_layout: "py311",
header_bytes: 16,
negative_code_fields: "rejected",
});
expect(pythonPycMagicEntry(3571)).toEqual({
python_version: "3.13",
code_layout: "py311",
header_bytes: 16,
negative_code_fields: "rejected",
});
expect(pythonPycMagicEntry(3450)).toBeNull();
expect(pythonPycMagicEntry(62171)).toBeNull();