home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 November (DVD) / PCWELT_11_2006.ISO / casper / filesystem.squashfs / usr / share / doc / python-apt / examples / recommends.py < prev    next >
Encoding:
Python Source  |  2006-03-02  |  773 b   |  42 lines

  1. #!/usr/bin/python
  2.  
  3. import apt_pkg
  4. apt_pkg.init()
  5.  
  6. cache = apt_pkg.GetCache()
  7.  
  8. class Wanted:
  9.  
  10.     def __init__(self, name):
  11.         self.name = name
  12.         self.recommended = []
  13.         self.suggested = []
  14.  
  15. wanted = {}
  16.  
  17. for package in cache.Packages:
  18.     current = package.CurrentVer
  19.     if not current:
  20.         continue
  21.     depends = current.DependsList
  22.     for (key, attr) in (('Suggests', 'suggested'), 
  23.                         ('Recommends', 'recommended')):
  24.         list = depends.get(key, [])
  25.         for dependency in list:
  26.             name = dependency[0].TargetPkg.Name
  27.             dep = cache[name]
  28.             if dep.CurrentVer:
  29.                 continue
  30.             getattr(wanted.setdefault(name, Wanted(name)),
  31.                     attr).append(package.Name)
  32.  
  33. ks = wanted.keys()
  34. ks.sort()
  35.  
  36. for want in ks:
  37.     print want, wanted[want].recommended, wanted[want].suggested
  38.  
  39.  
  40.  
  41.  
  42.