Source code for pkgcore.package.errors
__all__ = (
"PackageError",
"InvalidPackageName",
"MetadataException",
"InvalidDependency",
"ChksumError",
"MissingChksum",
"ParseChksumError",
)
import os
from ..exceptions import PkgcoreUserException
[docs]
class PackageError(ValueError, PkgcoreUserException):
"""Generic package exception."""
[docs]
class InvalidPackageName(PackageError):
"""Package name using unsupported characters or format."""
def __init__(self, name, msg=None):
self.name = name
self.msg = msg
def __str__(self):
msg = self.name
if self.msg is not None:
msg += f": {self.msg}"
return msg
[docs]
class InvalidDependency(PackageError):
"""Generic bad package dependency."""
[docs]
class ChksumError(PkgcoreUserException):
"""Generic checksum failure."""
[docs]
class MissingChksum(ChksumError):
def __init__(self, pkg, filename):
super().__init__(
f"{pkg.cpvstr}::{pkg.repo} missing chksum data for {filename!r}"
)
self.pkg = pkg
self.file = filename
[docs]
class ParseChksumError(ChksumError):
def __init__(self, filename, error, missing=False):
filename = os.sep.join(filename.split(os.sep)[-3:])
if missing:
super().__init__(
f"failed parsing {filename!r}; data isn't available: {error}"
)
else:
super().__init__(f"failed parsing {filename!r}: {error}")
self.file = filename
self.error = error
self.missing = missing