diff options
author | Ákos Sülyi <sulyi.gbox@gmail.com> | 2021-10-18 03:46:49 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-10-18 07:16:49 +0530 |
commit | 019a94f7d62cf9fb482ebf28e1c153486a49f319 (patch) | |
tree | 29f48987bd09e39fc37d94c634e317144631e215 | |
parent | e69585f8c620926d29477bc68ba9b97298646348 (diff) | |
download | hypervideo-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.py | 16 |
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 |