mirror of
https://github.com/yt-dlp/yt-dlp.git
synced 2025-03-09 12:50:23 -05:00
Fix --no-plugins --plugin-dirs '/path' importing from pythonpath
This commit is contained in:
parent
1883400bcc
commit
a6979c7ba7
2 changed files with 15 additions and 15 deletions
|
@ -991,7 +991,7 @@ def _real_main(argv=None):
|
||||||
FFmpegPostProcessor._ffmpeg_location.set(opts.ffmpeg_location)
|
FFmpegPostProcessor._ffmpeg_location.set(opts.ffmpeg_location)
|
||||||
|
|
||||||
# load all plugins into the global lookup
|
# load all plugins into the global lookup
|
||||||
_set_plugin_dirs(*opts.plugin_dirs)
|
_set_plugin_dirs(*set(opts.plugin_dirs))
|
||||||
|
|
||||||
with YoutubeDL(ydl_opts) as ydl:
|
with YoutubeDL(ydl_opts) as ydl:
|
||||||
pre_process = opts.update_self or opts.rm_cachedir
|
pre_process = opts.update_self or opts.rm_cachedir
|
||||||
|
|
|
@ -40,16 +40,16 @@
|
||||||
# Public APIs
|
# Public APIs
|
||||||
# Anything else is NOT public and no backwards compatibility is guaranteed
|
# Anything else is NOT public and no backwards compatibility is guaranteed
|
||||||
__all__ = [
|
__all__ = [
|
||||||
'directories',
|
'COMPAT_PACKAGE_NAME',
|
||||||
'load_plugins',
|
'PACKAGE_NAME',
|
||||||
'load_all_plugins',
|
|
||||||
'register_plugin_spec',
|
|
||||||
'add_plugin_dirs',
|
'add_plugin_dirs',
|
||||||
'set_plugin_dirs',
|
'directories',
|
||||||
'disable_plugins',
|
'disable_plugins',
|
||||||
'get_plugin_spec',
|
'get_plugin_spec',
|
||||||
'PACKAGE_NAME',
|
'load_all_plugins',
|
||||||
'COMPAT_PACKAGE_NAME',
|
'load_plugins',
|
||||||
|
'register_plugin_spec',
|
||||||
|
'set_plugin_dirs',
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
@ -118,7 +118,6 @@ def candidate_plugin_paths(candidate):
|
||||||
if not candidate_path.is_dir():
|
if not candidate_path.is_dir():
|
||||||
raise ValueError(f'Invalid plugin directory: {candidate_path}')
|
raise ValueError(f'Invalid plugin directory: {candidate_path}')
|
||||||
yield from candidate_path.iterdir()
|
yield from candidate_path.iterdir()
|
||||||
yield from internal_plugin_paths()
|
|
||||||
|
|
||||||
|
|
||||||
class PluginFinder(importlib.abc.MetaPathFinder):
|
class PluginFinder(importlib.abc.MetaPathFinder):
|
||||||
|
@ -157,15 +156,13 @@ def search_locations(self, fullname):
|
||||||
write_string(f'Permission error while accessing modules in "{e.filename}"\n')
|
write_string(f'Permission error while accessing modules in "{e.filename}"\n')
|
||||||
|
|
||||||
def find_spec(self, fullname, path=None, target=None):
|
def find_spec(self, fullname, path=None, target=None):
|
||||||
if not plugin_dirs.value:
|
|
||||||
return None
|
|
||||||
|
|
||||||
if fullname not in self.packages:
|
if fullname not in self.packages:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
search_locations = list(map(str, self.search_locations(fullname)))
|
search_locations = list(map(str, self.search_locations(fullname)))
|
||||||
if not search_locations:
|
if not search_locations:
|
||||||
return None
|
# Prevent using built-in meta finders for searching plugins.
|
||||||
|
raise ModuleNotFoundError(fullname)
|
||||||
|
|
||||||
spec = importlib.machinery.ModuleSpec(fullname, PluginLoader(), is_package=True)
|
spec = importlib.machinery.ModuleSpec(fullname, PluginLoader(), is_package=True)
|
||||||
spec.submodule_search_locations = search_locations
|
spec.submodule_search_locations = search_locations
|
||||||
|
@ -179,8 +176,11 @@ def invalidate_caches(self):
|
||||||
|
|
||||||
|
|
||||||
def directories():
|
def directories():
|
||||||
spec = importlib.util.find_spec(PACKAGE_NAME)
|
with contextlib.suppress(ModuleNotFoundError):
|
||||||
return list(spec.submodule_search_locations) if spec else []
|
spec = importlib.util.find_spec(PACKAGE_NAME)
|
||||||
|
if spec:
|
||||||
|
return list(spec.submodule_search_locations)
|
||||||
|
return []
|
||||||
|
|
||||||
|
|
||||||
def iter_modules(subpackage):
|
def iter_modules(subpackage):
|
||||||
|
|
Loading…
Reference in a new issue