Skip to content

Commit cac1f01

Browse files
committed
Disable _TqdmCloser workaround for leaked semaphore error in newer MacOS
_TqdmCloser is a workaround for leaked semaphores error happening when using tqdm on MacOS and Python >= 3.11. The issue does not seem to appear in MacOS 15.7.2, so we disable the workaround for newer MacOS versions
1 parent f30ebf5 commit cac1f01

File tree

3 files changed

+20
-3
lines changed

3 files changed

+20
-3
lines changed

b2/_internal/console_tool.py

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -923,8 +923,24 @@ def __enter__(self):
923923
return self
924924

925925
def __exit__(self, exc_type, exc_val, exc_tb):
926-
if sys.platform != 'darwin' or os.environ.get('B2_TEST_DISABLE_TQDM_CLOSER'):
926+
if (
927+
sys.platform != 'darwin'
928+
or sys.version_info < (3, 11)
929+
or os.environ.get('B2_TEST_DISABLE_TQDM_CLOSER')
930+
):
927931
return
932+
933+
# Tqdm sempaphore leaks do not seem to happen in MacOS 15.7.2,
934+
# so we can skip the workaround starting from this version
935+
try:
936+
macos_version = platform.mac_ver()[0]
937+
version_tuple = tuple(int(v) for v in macos_version.split('.'))
938+
except (KeyError, ValueError):
939+
pass
940+
else:
941+
if version_tuple and version_tuple >= (15, 7, 2):
942+
return
943+
928944
try:
929945
from multiprocessing.synchronize import SemLock
930946

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Disable Tqdm semaphore leak workaround for MacOS >= 15.7.2, as apparently it is no longer an issue in newer versions.

test/integration/test_tqdm_closer.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@
1414

1515

1616
@pytest.mark.skipif(
17-
(sys.platform != 'darwin') or ((sys.version_info.major, sys.version_info.minor) < (3, 11)),
18-
reason='Tqdm closing error only occurs on OSX and python 3.11 or newer',
17+
(sys.platform != 'darwin') or (sys.version_info < (3, 11)),
18+
reason='Tqdm closing error only occurs on OSX and python >=3.11',
1919
)
2020
def test_tqdm_closer(b2_tool, bucket, file_name):
2121
# test that stderr doesn't contain any warning, in particular warnings about multiprocessing resource tracker

0 commit comments

Comments
 (0)