- Set min. version requirement of `trio` to `0.25`,
so we don't have to set `strict_exception_groups` to `True` on older
versions (probably not even possible via `pytest-trio`)
- Fix compatibility with `trio>=0.25`:
Since `strict_exception_groups` now defaults to `True`, trio nurseries
now always raise an `ExceptionGroup` in all cases, so update tests
and handle exception groups instead. Don't unwrap exception groups
for now, even if only a single exception is included.
Explicitly handle `KeyboardInterrupt`/`SystemExit` and re-raise
by using the `exceptiongroup.catch` utility (<py311 compat)
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.
- 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
And fix issues:
- Add new "noqa" annotations where needed and update "per-file-ignores"
- Remove previously needed but now unnecessary "noqa" annotations
- Update CDP generator script and regenerate the CDP modules
- Fix missing ClassVar type annotations
- Fix concatenation of collection literals
- Fix unnecessary key check
- Use type conversion flags in f-strings
- Fix miscellaneous issues
- Add custom build backend which overrides certain hooks
- Include custom build backend in sdists via `MANIFEST.in`
- Remove `build>=1.0.0` workaround from `build-and-sign.sh`
- Add build backend tests, update order of tests and coverage config
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
The stacklevel of the DeprecationWarning raised by `pkg_resources`
got changed in setuptools 68.0.0, so we have to adjust our warnings
filter.
`pycountry` is still importing `pkg_resources`.
- Add "DTZ" ruff rule
- Add utility functions to `streamlink.utils.times` which use
"aware" datetimes with explicit timezone information,
and use `isodate`'s local timezone implementation
- Replace all "naive" datetimes without timezone information
- Replace all custom ISO8601 parsers with `isodate`'s implementation
- Add tests for new utility functions