Source code for pkgcore.package.virtual
"""
virtual package
"""
__all__ = ("package", "factory")
from ..restrictions.packages import OrRestriction
from . import metadata
[docs]
class package(metadata.package):
"""
Virtual package.
Mainly useful since it's generating so little attrs on the fly.
"""
package_is_real = False
built = True
__slots__ = ("__dict__",)
def __init__(self, repo, provider, *a, **kwds):
super().__init__(repo, *a, **kwds)
object.__setattr__(self, "provider", provider)
object.__setattr__(self, "data", {})
def __getattr__(self, key):
val = None
if key == "rdepend":
val = self.provider
elif key in ("bdepend", "depend", "pdepend", "idepend"):
val = OrRestriction()
elif key == "slot":
val = f"{self.provider.category}-{self.version}"
else:
return super().__getattr__(key)
self.__dict__[key] = val
return val
def _fetch_metadata(self):
data = self._parent._parent_repo._fetch_metadata(self)
return data
[docs]
class factory(metadata.factory):
child_class = package