diff --git a/pypdf/_reader.py b/pypdf/_reader.py index 12049e478..10575bbae 100644 --- a/pypdf/_reader.py +++ b/pypdf/_reader.py @@ -314,6 +314,7 @@ def __init__( if isinstance(stream, (str, Path)): stream = open(stream, "rb") # noqa: SIM115 + # Wish I could just close stream in __del__ but that fails a test very strangely weakref.finalize(self, stream.close) self.read(stream) diff --git a/tests/test_writer.py b/tests/test_writer.py index 84fcd5110..6944d8b04 100644 --- a/tests/test_writer.py +++ b/tests/test_writer.py @@ -1211,6 +1211,7 @@ def test_set_page_label(pdf_file_path): ValueError, match="if given, start must be equal or greater than one" ): writer.set_page_label(0, 5, "/r", start=-1) + del writer pdf_file_path.unlink() @@ -1234,6 +1235,7 @@ def test_set_page_label(pdf_file_path): writer.set_page_label(0, 1, "/A") writer.write(pdf_file_path) assert PdfReader(pdf_file_path).page_labels[: len(expected)] == expected + del reader pdf_file_path.unlink() @@ -1477,6 +1479,7 @@ def test_update_form_fields(tmp_path): ) writer.write(write_data_here) + del writer reader = PdfReader(write_data_here) flds = reader.get_fields() assert flds["CheckBox1"]["/V"] == "/Yes" @@ -1498,6 +1501,7 @@ def test_update_form_fields(tmp_path): assert all(x in flds["CheckBox1"]["/_States_"] for x in ["/Off", "/Yes"]) assert all(x in flds["RadioGroup1"]["/_States_"] for x in ["/1", "/2", "/3"]) assert all(x in flds["Liste1"]["/_States_"] for x in ["Liste1", "Liste2", "Liste3"]) + del reader, flds Path(write_data_here).unlink()