Source code for pkgcore.package.mutated

"""
package wrapper class to override a packages attributes
"""

__all__ = ("MutatedPkg",)

from .base import wrapper


[docs] class MutatedPkg(wrapper): __slots__ = ("_overrides",) def __init__(self, pkg, overrides): """ :param pkg: :obj:`pkgcore.package.metadata.package` to wrap :param overrides: is an attr -> instance mapping to substitute when the attr is requested """ super().__init__(pkg) object.__setattr__(self, "_overrides", overrides) def __getattr__(self, attr): o = self._overrides.get(attr) if o is not None: return o return getattr(self._raw_pkg, attr) def __repr__(self): return "<%s pkg=%r overrides=%r @%#8x>" % ( self.__class__.__name__, self._raw_pkg, tuple(self._overrides), id(self), ) def __str__(self): return "%s(%s, overrides=%s)" % ( self.__class__.__name__, self._raw_pkg, tuple(self._overrides), )