Bug report
Bug description:
With any JSON Lines file, such as:
❯ cat input.jsonl {"ingredients":["frog", "water", "chocolate", "glucose"]} {"ingredients":["chocolate","steel bolts"]}
This works on Python 3.12:
❯ python3.12 --version Python 3.12.10 ❯ python3.12 -m json.tool --json-lines input.jsonl { "ingredients": [ "frog", "water", "chocolate", "glucose" ] } { "ingredients": [ "chocolate", "steel bolts" ] }
But not 3.13 or higher:
❯ python3.13 --version Python 3.13.3 ❯ python3.13 -m json.tool --json-lines input.jsonl I/O operation on closed file. ❯ python3.14 --version Python 3.14.0a7 ❯ python3.14 -m json.tool --json-lines input.jsonl I/O operation on closed file. ❯ ./python.exe --version --version Python 3.14.0a7+ (heads/main:e42bda94411, Apr 17 2025, 14:59:38) [Clang 16.0.0 (clang-1600.0.26.6)] ❯ ./python.exe Lib/test/test_json/test_tool.py -h ❯ ./python.exe -m json.tool --json-lines input.jsonl I/O operation on closed file.
CPython versions tested on:
3.13, 3.14, CPython main branch
Operating systems tested on:
macOS, Linux
Linked PRs
- gh-132631: Fix "I/O operation on closed file" when parsing JSON Lines file #132632
- gh-132631: Fix json.tool when using --json-lines and a file as input #138961
- [3.14] gh-132631: Fix "I/O operation on closed file" when parsing JSON Lines file (GH-132632) #148921
- [3.13] gh-132631: Fix "I/O operation on closed file" when parsing JSON Lines file (GH-132632) #148922