Add the `key` attribute to the `Map` class, so segment maps can be
encrypted independently or left as plain text, depending on the order
of the `EXT-X-MAP` and `EXT-X-KEY` tags in the playlist.
TODO:
Rewrite the `HLSSegment`, `HLSStreamWriter` and `HLSStreamWorker`
classes based on the logic of the DASH implementation, where
init segments are queued by the worker separately.
789e89a already bumped the setup-python actions on the master branch,
but the `test_build` job was merged in a later commit (authored earlier)
with the old action version in use.
- Add `plugins_lazy` keyword to `Streamlink` session class
- Load pre-built plugins JSON data including matchers and arguments data
- Fall back to loading all built-in plugins if loading JSON data fails
- Iterate matcher/argument data of loaded and still unloaded plugins
- Load plugin modules of unloaded plugins when matching URLs are found
- Refactor `utils.modules` and add `get_finder()` function
- Change `--plugins` output from "Loaded plugins" to "Available plugins"
- Add tests
- Move matcher priority tests from `test_session` to `test_plugins`
- Move the `parser_helper()` function from `streamlink_cli.main`
into the `streamlink_cli._parser` module
- Refactor `ext_argparse` and set default import paths
- Update import path in `build-shell-completions.sh`
Unfortunately, the `streamlink_cli._parser` module can't be excluded
from the sdist/wheel distributions, as packagers might build
shell completions from the installed `streamlink_cli` package
instead of using the pre-built shell completions included in the sdist
or building them from an editable install.
- Move plugin load/resolve logic into the `streamlink.session.plugins`
module with the `StreamlinkPlugins` class
- Make `Streamlink.plugins` an instance of this class
- Add the `plugins_builtin` keyword argument to the `Streamlink` class
and set its default value to `True`
- Deprecate the `Streamlink.{{get,load}_plugins,load_builtin_plugins}()`
methods, which are now wrappers for the respective `StreamlinkPlugins`
implementations
- Update `streamlink_cli.main` and all other `Streamlink` session
usages accordingly (in scripts and tests)
- Update session docs
- Move and update plugin load/resolve tests