Add the `exceptiongroup` dependency directly to Streamlink, so we
can write `ExceptionGroup` handling code on all supported versions
of Python without having to rely on `trio`'s conditional dependency.
- 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
- Move `StreamlinkOptions` from `streamlink.session`
to `streamlink.session.options`
- Move docstring containing options list from `Streamlink.set_option()`
to `StreamlinkOptions` and add this class to the docs
- Move default options from `Streamlink` constructor
to `StreamlinkOptions._DEFAULTS`, so all options data is defined
in the `streamlink.session.options` module
- Move session options tests to `tests.session.test_options`
and change order of tests
- Make built-in plugins use pluginargument type functions referenced
via name, so the pluginargument data can be fully JSON-serialized
- Add the `type_args`/`type_kwargs` arguments to `@pluginargument()`
which allow the parametrization of the name-referenced type function
- Add a pluginargument type registry to the `streamlink.plugin.plugin`
module and add all functions of the `streamlink.utils.args` module,
as well as the `hours_minutes_seconds{,_float}` functions of
the `streamlink.utils.times` module
- Update docs
- Add tests
- Remove unmaintained/obsolete and proprietary players
- Daum PotPlayer
- MPC-HC
- OMXPlayer
- QuickTime
- Add new players
- IINA
- Change player order
- Add OS and license columns
- Add colored icons for supported transport methods
- Add note about --player-passthrough
- Fix footnotes and known issues section
- Replace `tool.versioningit.onbuild` hook with a custom implementation
which replaces the entire `streamlink._version` module (similar to
before) and which additionally removes `versioningit` from the
`build-system.requires` field in `pyproject.toml` and which sets
a static version string in `setup.py`
- Rewrite `streamlink._version` module
- Add and update comments
- Update docs
- Add tests
This allows plugins to optionally define which stream metadata variables
are available, with an optional comment for each variable.
`$metadata` can be repeated multiple times, once for each supported
variable, and it must be set immediately after the mandatory `$type`.
The supported variables must be defined in the following order:
- id
- author
- category
- title
The optional comment is separated by a simple space character, but it
is rendered differently in the docs.
- Add `api/options` page and document `Options` class
- Move `Argument` and `Arguments` from plugin page to options page
- Add docstrings for `Streamlink.options` and `Plugin.options`
Move Streamlink's project metadata from setuptools's own `setup.cfg`
to the standardized `pyproject.toml` format (PEP621)
- Bump setuptools to `>=64.0.0`
- Bump pip dev-requirement to `>=21.0.0`
- Set two `author` entries, to keep the same `Author` and `Author-email`
core metadata in the resulting sdist and bdist packages
- Set `license.text` field instead of `license.file` and add the
setuptools-specific `license-files` config attribute, so that
the `License` and `License-File` core metadata doesn't change.
License data will receive another change in the future once PEP639
comes into effect
- By switching to PEP621 metadata, implicitly move the `Home-page`
core metadata to `Project-URL: Homepage, ...`
- Remove upper version constraint from `requires-python`
- Reformat some version strings of the `dependencies` field