aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorÁkos Sülyi <sulyi.gbox@gmail.com>2021-10-18 03:46:49 +0200
committerGitHub <noreply@github.com>2021-10-18 07:16:49 +0530
commit019a94f7d62cf9fb482ebf28e1c153486a49f319 (patch)
tree29f48987bd09e39fc37d94c634e317144631e215
parente69585f8c620926d29477bc68ba9b97298646348 (diff)
downloadhypervideo-pre-019a94f7d62cf9fb482ebf28e1c153486a49f319.tar.lz
hypervideo-pre-019a94f7d62cf9fb482ebf28e1c153486a49f319.tar.xz
hypervideo-pre-019a94f7d62cf9fb482ebf28e1c153486a49f319.zip
[utils] Use `importlib` to load plugins (#1277)
Authored by: sulyi
-rw-r--r--yt_dlp/utils.py16
1 files changed, 7 insertions, 9 deletions
diff --git a/yt_dlp/utils.py b/yt_dlp/utils.py
index 15bee0c47..3ac2fbc4b 100644
--- a/yt_dlp/utils.py
+++ b/yt_dlp/utils.py
@@ -18,7 +18,7 @@ import functools
import gzip
import hashlib
import hmac
-import imp
+import importlib.util
import io
import itertools
import json
@@ -6302,12 +6302,13 @@ def get_executable_path():
def load_plugins(name, suffix, namespace):
- plugin_info = [None]
classes = {}
try:
- plugin_info = imp.find_module(
- name, [os.path.join(get_executable_path(), 'ytdlp_plugins')])
- plugins = imp.load_module(name, *plugin_info)
+ plugins_spec = importlib.util.spec_from_file_location(
+ name, os.path.join(get_executable_path(), 'ytdlp_plugins', name, '__init__.py'))
+ plugins = importlib.util.module_from_spec(plugins_spec)
+ sys.modules[plugins_spec.name] = plugins
+ plugins_spec.loader.exec_module(plugins)
for name in dir(plugins):
if name in namespace:
continue
@@ -6315,11 +6316,8 @@ def load_plugins(name, suffix, namespace):
continue
klass = getattr(plugins, name)
classes[name] = namespace[name] = klass
- except ImportError:
+ except FileNotFoundError:
pass
- finally:
- if plugin_info[0] is not None:
- plugin_info[0].close()
return classes