pytube / pytube /exceptions.py
hbmartin's picture
test for RegexMatchError
e707f93
raw
history blame
1.45 kB
# -*- coding: utf-8 -*-
"""Library specific exception definitions."""
from typing import Union, Pattern
class PytubeError(Exception):
"""Base pytube exception that all others inherent.
This is done to not pollute the built-in exceptions, which *could* result
in unintended errors being unexpectedly and incorrectly handled within
implementers code.
"""
class ExtractError(PytubeError):
"""Data extraction based exception."""
class RegexMatchError(ExtractError):
"""Regex pattern did not return any matches."""
def __init__(self, caller: str, pattern: Union[str, Pattern]):
"""
:param str caller:
Calling function
:param str pattern:
Pattern that failed to match
"""
super().__init__(
"{caller}: could not find match for {pattern}".format(
caller=caller, pattern=pattern
)
)
self.caller = caller
self.pattern = pattern
class LiveStreamError(ExtractError):
"""Video is a live stream."""
class VideoUnavailable(PytubeError):
"""Video is unavailable."""
def __init__(self, video_id: str):
"""
:param str video_id:
A YouTube video identifier.
"""
super().__init__("{video_id} is unavailable".format(video_id=video_id))
self.video_id = video_id
class HTMLParseError(PytubeError):
"""HTML could not be parsed"""