From 477a354290211ae1add497a62e442e57cc8733d9 Mon Sep 17 00:00:00 2001 From: zhangzeqing Date: Tue, 1 Jul 2025 09:59:01 +0800 Subject: [PATCH 1/3] add metaclass to tqdm --- src/datasets/utils/tqdm.py | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/src/datasets/utils/tqdm.py b/src/datasets/utils/tqdm.py index e28a8ff7ccf..84ed401cf57 100644 --- a/src/datasets/utils/tqdm.py +++ b/src/datasets/utils/tqdm.py @@ -101,7 +101,17 @@ def are_progress_bars_disabled() -> bool: return _hf_datasets_progress_bars_disabled -class tqdm(old_tqdm): +class SafeDelLockMeta: + """ + Class for fixing `del tqdm_class._lock`: https://github.com/huggingface/datasets/issues/7660 + """ + def __delattr__(cls, name): + if name == "_lock": + return + return super().__delattr__(name) + + +class tqdm(old_tqdm, metaclass=SafeDelLockMeta): """ Class to override `disable` argument in case progress bars are globally disabled. @@ -113,14 +123,6 @@ def __init__(self, *args, **kwargs): kwargs["disable"] = True super().__init__(*args, **kwargs) - def __delattr__(self, attr: str) -> None: - """Fix for https://github.com/huggingface/datasets/issues/6066""" - try: - super().__delattr__(attr) - except AttributeError: - if attr != "_lock": - raise - # backward compatibility enable_progress_bar = enable_progress_bars From d2abb47d24633faf1bddba78630b4411f4372fd5 Mon Sep 17 00:00:00 2001 From: zhangzeqing Date: Tue, 1 Jul 2025 10:22:24 +0800 Subject: [PATCH 2/3] delete lock if it exists --- src/datasets/utils/tqdm.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/datasets/utils/tqdm.py b/src/datasets/utils/tqdm.py index 84ed401cf57..b690c368855 100644 --- a/src/datasets/utils/tqdm.py +++ b/src/datasets/utils/tqdm.py @@ -106,9 +106,13 @@ class SafeDelLockMeta: Class for fixing `del tqdm_class._lock`: https://github.com/huggingface/datasets/issues/7660 """ def __delattr__(cls, name): - if name == "_lock": - return - return super().__delattr__(name) + if name == '_lock': + try: + super().__delattr__(name) + except AttributeError: + pass + else: + super().__delattr__(name) class tqdm(old_tqdm, metaclass=SafeDelLockMeta): From c4103e90ba6d58bc4d967b3f7401c85a6f0fd413 Mon Sep 17 00:00:00 2001 From: zhangzeqing Date: Tue, 1 Jul 2025 10:32:53 +0800 Subject: [PATCH 3/3] add type --- src/datasets/utils/tqdm.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/datasets/utils/tqdm.py b/src/datasets/utils/tqdm.py index b690c368855..54085c4758b 100644 --- a/src/datasets/utils/tqdm.py +++ b/src/datasets/utils/tqdm.py @@ -101,7 +101,7 @@ def are_progress_bars_disabled() -> bool: return _hf_datasets_progress_bars_disabled -class SafeDelLockMeta: +class SafeDelLockMeta(type): """ Class for fixing `del tqdm_class._lock`: https://github.com/huggingface/datasets/issues/7660 """