From f4f93e4bb0ff199c116707e501543737220f9bbc Mon Sep 17 00:00:00 2001 From: Jeremy Singer-Vine Date: Wed, 9 Mar 2016 07:00:18 -0500 Subject: [PATCH] Replace atexit with __exit__ --- pdfplumber/pdf.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/pdfplumber/pdf.py b/pdfplumber/pdf.py index 6ae3b63..19199dc 100644 --- a/pdfplumber/pdf.py +++ b/pdfplumber/pdf.py @@ -9,8 +9,6 @@ from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter from pdfminer.layout import LAParams from pdfminer.converter import PDFPageAggregator -import atexit - class PDF(Container): cached_properties = Container.cached_properties + [ "_pages" ] @@ -30,7 +28,6 @@ class PDF(Container): self.metadata[k] = decode_text(v) self.device = PDFPageAggregator(rsrcmgr, laparams=self.laparams) self.interpreter = PDFPageInterpreter(rsrcmgr, self.device) - atexit.register(self.close) def process_page(self, page): self.interpreter.process_page(page) @@ -53,6 +50,13 @@ class PDF(Container): def close(self): self.stream.close() + def __enter__(self): + return self + + def __exit__(self, type, value, traceback): + self.flush_cache() + self.close() + @property def objects(self): if hasattr(self, "_objects"): return self._objects