diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 6a38039..0d447b5 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -7,6 +7,12 @@ Changelog .. This document is user facing. Please word the changes in such a way .. that users understand how the changes affect the new version. +version 0.4.1 +----------------- ++ Fix a bug where streams that were passed to gzip_ng_threaded.open where + closed. ++ Fix compatibility with Python 3.13 + version 0.4.0 ----------------- + Add a ``gzip_ng_threaded`` module that contains the ``gzip_ng_threaded.open`` diff --git a/setup.py b/setup.py index fdace0f..fc336a6 100644 --- a/setup.py +++ b/setup.py @@ -123,7 +123,7 @@ def build_zlib_ng(): setup( name="zlib-ng", - version="0.4.0", + version="0.4.1", description="Drop-in replacement for zlib and gzip modules using zlib-ng", author="Leiden University Medical Center", author_email="r.h.p.vorderman@lumc.nl", # A placeholder for now diff --git a/src/zlib_ng/__init__.py b/src/zlib_ng/__init__.py index 5d5979e..53c4ac5 100644 --- a/src/zlib_ng/__init__.py +++ b/src/zlib_ng/__init__.py @@ -5,4 +5,4 @@ # This file is part of python-zlib-ng which is distributed under the # PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2. -__version__ = "0.4.0" +__version__ = "0.4.1" diff --git a/src/zlib_ng/gzip_ng_threaded.py b/src/zlib_ng/gzip_ng_threaded.py index f8c0820..5b8a9ff 100644 --- a/src/zlib_ng/gzip_ng_threaded.py +++ b/src/zlib_ng/gzip_ng_threaded.py @@ -78,16 +78,18 @@ def open(filename, mode="rb", compresslevel=gzip_ng._COMPRESS_LEVEL_TRADEOFF, def open_as_binary_stream(filename, open_mode): if isinstance(filename, (str, bytes)) or hasattr(filename, "__fspath__"): binary_file = builtins.open(filename, open_mode) + closefd = True elif hasattr(filename, "read") or hasattr(filename, "write"): binary_file = filename + closefd = False else: raise TypeError("filename must be a str or bytes object, or a file") - return binary_file + return binary_file, closefd class _ThreadedGzipReader(io.RawIOBase): def __init__(self, filename, queue_size=2, block_size=1024 * 1024): - self.raw = open_as_binary_stream(filename, "rb") + self.raw, self.closefd = open_as_binary_stream(filename, "rb") self.fileobj = zlib_ng._GzipReader(self.raw, buffersize=8 * block_size) self.pos = 0 self.read_file = False @@ -155,7 +157,8 @@ def close(self) -> None: self.running = False self.worker.join() self.fileobj.close() - self.raw.close() + if self.closefd: + self.raw.close() self._closed = True @property @@ -246,7 +249,7 @@ def __init__(self, self._crc = 0 self.running = False self._size = 0 - self.raw = open_as_binary_stream(filename, mode) + self.raw, self.closefd = open_as_binary_stream(filename, mode) self._closed = False self._write_gzip_header() self.start() @@ -334,7 +337,8 @@ def close(self) -> None: trailer = struct.pack("