Source code for pkgcore.repository.wrapper
"""
simple repository wrapping to override the package instances returned
"""
__all__ = ("tree",)
# icky.
# ~harring
from snakeoil.klass import DirProxy, GetAttrProxy
from ..operations import repo
from . import errors, prototype
[docs]
class tree(prototype.tree):
"""Repository wrapper binding configuration data to contained packages."""
operation_kls = repo.operations_proxy
def __init__(self, repo, package_class):
"""
:param repo: :obj:`pkgcore.repository.prototype.tree` instance to wrap
:param package_class: callable to yield the package instance
"""
self.raw_repo = repo
if not isinstance(self.raw_repo, prototype.tree):
raise errors.InitializationError(
f"{self.raw_repo!r} is not a repository tree derivative"
)
self.package_class = package_class
self.raw_repo = repo
[docs]
def itermatch(self, *args, **kwargs):
return map(self.package_class, self.raw_repo.itermatch(*args, **kwargs))
__getattr__ = GetAttrProxy("raw_repo")
__dir__ = DirProxy("raw_repo")
def __len__(self):
return len(self.raw_repo)