# Ref: https://en.wikipedia.org/wiki/Uname#Examples
if machine[1:] in ('x86', 'x86_64', 'amd64', 'i386', 'i686'):
machine = '_x86' if platform.architecture()[0][:2] == '32' else ''
+ # sys.executable returns a /tmp/ path for staticx builds (linux_static)
+ # Ref: https://staticx.readthedocs.io/en/latest/usage.html#run-time-information
+ if static_exe_path := os.getenv('STATICX_PROG_PATH'):
+ path = static_exe_path
return f'{remove_end(sys.platform, "32")}{machine}_exe', path
path = os.path.dirname(__file__)
**{variant: f'Auto-update is not supported for unpackaged {name} executable; Re-download the latest release'
for variant, name in {'win32_dir': 'Windows', 'darwin_dir': 'MacOS', 'linux_dir': 'Linux'}.items()},
'source': 'You cannot update when running from source code; Use git to pull the latest changes',
- 'unknown': 'You installed yt-dlp with a package manager or setup.py; Use that to update',
+ 'unknown': 'You installed yt-dlp from a manual build or with a package manager; Use that to update',
'other': 'You are using an unofficial build of yt-dlp; Build the executable again',
}
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
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: