[compat] Add compat_contextlib_suppress
authordirkf <fieldhouse@gmx.net>
Fri, 1 Mar 2024 15:25:44 +0000 (15:25 +0000)
committerdirkf <fieldhouse@gmx.net>
Wed, 27 Mar 2024 13:11:17 +0000 (13:11 +0000)
with compat_contextlib_suppress(*Exceptions):
    # code that fails silently for any of Exceptions

youtube_dl/compat.py

index 818ccebd0a6ed6e49949c5868434d82e028b972f..637f0d82ce1456a77bda8015773f11f531bfc1ec 100644 (file)
@@ -2943,6 +2943,24 @@ else:
     compat_socket_create_connection = socket.create_connection
 
 
+try:
+    from contextlib import suppress as compat_contextlib_suppress
+except ImportError:
+    class compat_contextlib_suppress(object):
+        _exceptions = None
+
+        def __init__(self, *exceptions):
+            super(compat_contextlib_suppress, self).__init__()
+            # TODO: [Base]ExceptionGroup (3.12+)
+            self._exceptions = exceptions
+
+        def __enter__(self):
+            return self
+
+        def __exit__(self, exc_type, exc_val, exc_tb):
+            return exc_val is not None and isinstance(exc_val, self._exceptions or tuple())
+
+
 # Fix https://github.com/ytdl-org/youtube-dl/issues/4223
 # See http://bugs.python.org/issue9161 for what is broken
 def workaround_optparse_bug9161():
@@ -3263,6 +3281,7 @@ __all__ = [
     'compat_http_cookiejar_Cookie',
     'compat_http_cookies',
     'compat_http_cookies_SimpleCookie',
+    'compat_contextlib_suppress',
     'compat_ctypes_WINFUNCTYPE',
     'compat_etree_fromstring',
     'compat_filter',