distPackage.py 1.2 KB

12345678910111213141516171819202122232425262728293031323334
  1. from package import Package
  2. from reqPackage import ReqPackage
  3. class DistPackage(Package):
  4. """Wrapper class for pkg_resources.Distribution instances
  5. :param obj: pkg_resources.Distribution to wrap over
  6. :param req: optional ReqPackage object to associate this
  7. DistPackage with. This is useful for displaying the
  8. tree in reverse
  9. """
  10. def __init__(self, obj, req=None):
  11. super(DistPackage, self).__init__(obj)
  12. self.version_spec = None
  13. self.req = req
  14. def as_requirement(self):
  15. """Return a ReqPackage representation of this DistPackage"""
  16. return ReqPackage(self._obj.as_requirement(), dist=self)
  17. def as_required_by(self, req):
  18. """Return a DistPackage instance associated to a requirement
  19. This association is necessary for displaying the tree in
  20. reverse.
  21. :param ReqPackage req: the requirement to associate with
  22. :returns: DistPackage instance
  23. """
  24. return self.__class__(self._obj, req)
  25. def as_dict(self):
  26. return {'key': self.key,
  27. 'package_name': self.project_name,
  28. 'installed_version': self.version}