Issue #13809: Make bz2 module work with threads disabled.
Original patch by Amaury Forgeot d'Arc.
This commit is contained in:
parent
7422b22e5e
commit
72750a85f9
|
@ -10,9 +10,13 @@ __all__ = ["BZ2File", "BZ2Compressor", "BZ2Decompressor", "compress",
|
|||
__author__ = "Nadeem Vawda <nadeem.vawda@gmail.com>"
|
||||
|
||||
import io
|
||||
import threading
|
||||
import warnings
|
||||
|
||||
try:
|
||||
from threading import RLock
|
||||
except ImportError:
|
||||
from dummy_threading import RLock
|
||||
|
||||
from _bz2 import BZ2Compressor, BZ2Decompressor
|
||||
|
||||
|
||||
|
@ -53,7 +57,7 @@ class BZ2File(io.BufferedIOBase):
|
|||
"""
|
||||
# This lock must be recursive, so that BufferedIOBase's
|
||||
# readline(), readlines() and writelines() don't deadlock.
|
||||
self._lock = threading.RLock()
|
||||
self._lock = RLock()
|
||||
self._fp = None
|
||||
self._closefp = False
|
||||
self._mode = _MODE_CLOSED
|
||||
|
|
|
@ -463,6 +463,13 @@ class BZ2FileTest(BaseTest):
|
|||
for t in threads:
|
||||
t.join()
|
||||
|
||||
def testWithoutThreading(self):
|
||||
bz2 = support.import_fresh_module("bz2", blocked=("threading",))
|
||||
with bz2.BZ2File(self.filename, "wb") as f:
|
||||
f.write(b"abc")
|
||||
with bz2.BZ2File(self.filename, "rb") as f:
|
||||
self.assertEqual(f.read(), b"abc")
|
||||
|
||||
def testMixedIterationAndReads(self):
|
||||
self.createTempFile()
|
||||
linelen = len(self.TEXT_LINES[0])
|
||||
|
|
|
@ -447,6 +447,9 @@ Core and Builtins
|
|||
Library
|
||||
-------
|
||||
|
||||
- Issue #13809: Fix regression where bz2 module wouldn't work when threads are
|
||||
disabled. Original patch by Amaury Forgeot d'Arc.
|
||||
|
||||
- Issue #13589: Fix some serialization primitives in the aifc module.
|
||||
Patch by Oleg Plakhotnyuk.
|
||||
|
||||
|
|
Loading…
Reference in New Issue