Can be created by `query_update()` or manually.
Attributes:
- tag The release tag that will be updated to. If from query_update,
- the value is after API resolution and update spec processing.
- The only property that is required.
- version The actual numeric version (if available) of the binary to be updated to,
- after API resolution and update spec processing. (default: None)
- requested_version Numeric version of the binary being requested (if available),
- after API resolution only. (default: None)
- commit Commit hash (if available) of the binary to be updated to,
- after API resolution and update spec processing. (default: None)
- This value will only match the RELEASE_GIT_HEAD of prerelease builds.
- binary_name Filename of the binary to be updated to. (default: current binary name)
- checksum Expected checksum (if available) of the binary to be
- updated to. (default: None)
+ tag The release tag that will be updated to. If from query_update,
+ the value is after API resolution and update spec processing.
+ The only property that is required.
+ version The actual numeric version (if available) of the binary to be updated to,
+ after API resolution and update spec processing. (default: None)
+ requested_version Numeric version of the binary being requested (if available),
+ after API resolution only. (default: None)
+ commit Commit hash (if available) of the binary to be updated to,
+ after API resolution and update spec processing. (default: None)
+ This value will only match the RELEASE_GIT_HEAD of prerelease builds.
+ binary_name Filename of the binary to be updated to. (default: current binary name)
+ checksum Expected checksum (if available) of the binary to be
+ updated to. (default: None)
"""
tag: str
version: str | None = None
# XXX: use class variables to simplify testing
_channel = CHANNEL
_origin = ORIGIN
+ _update_sources = UPDATE_SOURCES
def __init__(self, ydl, target: str | None = None):
self.ydl = ydl
# For backwards compat, target needs to be treated as if it could be None
self.requested_channel, sep, self.requested_tag = (target or self._channel).rpartition('@')
# Check if requested_tag is actually the requested repo/channel
- if not sep and ('/' in self.requested_tag or self.requested_tag in UPDATE_SOURCES):
+ if not sep and ('/' in self.requested_tag or self.requested_tag in self._update_sources):
self.requested_channel = self.requested_tag
self.requested_tag: str = None # type: ignore (we set it later)
elif not self.requested_channel:
self._block_restart('Automatically restarting into custom builds is disabled for security reasons')
else:
# Check if requested_channel resolves to a known repository or else raise
- self.requested_repo = UPDATE_SOURCES.get(self.requested_channel)
+ self.requested_repo = self._update_sources.get(self.requested_channel)
if not self.requested_repo:
self._report_error(
f'Invalid update channel {self.requested_channel!r} requested. '
- f'Valid channels are {", ".join(UPDATE_SOURCES)}', True)
+ f'Valid channels are {", ".join(self._update_sources)}', True)
self._identifier = f'{detect_variant()} {system_identifier()}'
return a == b
def query_update(self, *, _output=False) -> UpdateInfo | None:
- """Fetches and returns info about the available update"""
+ """Fetches info about the available update
+ @returns An `UpdateInfo` if there is an update available, else None
+ """
if not self.requested_repo:
self._report_error('No target repository could be determined from input')
return None
checksum=checksum)
def update(self, update_info=NO_DEFAULT):
- """Update yt-dlp executable to the latest version"""
+ """Update yt-dlp executable to the latest version
+ @param update_info `UpdateInfo | None` as returned by query_update()
+ """
if update_info is NO_DEFAULT:
update_info = self.query_update(_output=True)
if not update_info: