helpers: update package counts in get_cpvs doctest
[gentoolkit.git] / pym / gentoolkit / helpers.py
index cd8b763ffbbe731c9f193809a2193eb81c202312..7f30a2482830f32eb7e5f3899dbe78774663489f 100644 (file)
@@ -26,17 +26,17 @@ __docformat__ = 'epytext'
 # =======
 
 import os
-import sys
 import re
 import codecs
 from functools import partial
 from itertools import chain
 
+import portage
+
 from gentoolkit import pprinter as pp
 from gentoolkit import errors
 from gentoolkit.atom import Atom
 from gentoolkit.cpv import CPV
-from gentoolkit.dbapi import BINDB, PORTDB, VARDB
 from gentoolkit.versionmatch import VersionMatch
 # This has to be imported below to stop circular import.
 #from gentoolkit.package import Package
@@ -51,11 +51,12 @@ class ChangeLog(object):
        Example usage:
                >>> from gentoolkit.helpers import ChangeLog
                >>> portage = ChangeLog('/usr/portage/sys-apps/portage/ChangeLog')
-               >>> print portage.latest.strip()
-               *portage-2.2_rc50 (15 Nov 2009)
-
-                 15 Nov 2009; Zac Medico <zmedico@gentoo.org> +portage-2.2_rc50.ebuild:
-                 2.2_rc50 bump. This includes all fixes in 2.1.7.5.
+               >>> print(portage.latest.strip())
+               *portage-2.2.0_alpha142 (26 Oct 2012)
+               <BLANKLINE>
+                 26 Oct 2012; Zac Medico <zmedico@gentoo.org> +portage-2.2.0_alpha142.ebuild:
+                 2.2.0_alpha142 version bump. This includes all of the fixes in 2.1.11.31. Bug
+                 #210077 tracks all bugs fixed since portage-2.1.x.
                >>> len(portage.full)
                75
                >>> len(portage.entries_matching_range(
@@ -175,7 +176,7 @@ class ChangeLog(object):
                        if not pkg_name.strip():
                                continue
                        try:
-                               entry_ver = CPV(pkg_name)
+                               entry_ver = CPV(pkg_name, validate=True)
                        except errors.GentoolkitInvalidCPV:
                                if self.invalid_entry_is_fatal:
                                        raise ValueError(entry_ver)
@@ -222,8 +223,8 @@ class FileOwner(object):
        Example usage:
                >>> from gentoolkit.helpers import FileOwner
                >>> findowner = FileOwner()
-               >>> findowner(('/usr/bin/vim',))
-               [(<Package app-editors/vim-7.2.182>, '/usr/bin/vim')]
+               >>> findowner(('/bin/grep',))
+               [(<Package 'sys-apps/grep-2.12'>, '/bin/grep')]
        """
        def __init__(self, is_regex=False, early_out=False, printer_fn=None):
                """Instantiate function.
@@ -311,11 +312,11 @@ class FileOwner(object):
 
                osp = os.path
                expanded_paths = []
-               for p in paths:
-                       if p.startswith('./'):
-                               expanded_paths.append(osp.abspath(p))
+               for path in paths:
+                       if path.startswith('./'):
+                               expanded_paths.append(osp.abspath(path))
                        else:
-                               expanded_paths.append(p)
+                               expanded_paths.append(path)
 
                return expanded_paths
 
@@ -333,7 +334,7 @@ class FileOwner(object):
 
                osp = os.path
                paths.extend([osp.realpath(x) for x in paths
-                       if osp.islink(x) and osp.realpath(x) not in paths])
+                       if osp.realpath(x) not in paths])
 
                return paths
 
@@ -370,10 +371,10 @@ def get_cpvs(predicate=None, include_installed=True):
        Example usage:
                >>> from gentoolkit.helpers import get_cpvs
                >>> len(set(get_cpvs()))
-               26065
+               33518
                >>> fn = lambda x: x.startswith('app-portage')
-               >>> len(get_cpvs(fn, include_installed=False))
-               112
+               >>> len(set(get_cpvs(fn, include_installed=False)))
+               137
 
        @type predicate: function
        @param predicate: a function to filter the package list with
@@ -387,11 +388,16 @@ def get_cpvs(predicate=None, include_installed=True):
        """
 
        if predicate:
-               all_cps = iter(x for x in PORTDB.cp_all() if predicate(x))
+               all_cps = iter(
+                       x for x
+                       in portage.db[portage.root]["porttree"].dbapi.cp_all()
+                       if predicate(x))
        else:
-               all_cps = PORTDB.cp_all()
+               all_cps = portage.db[portage.root]["porttree"].dbapi.cp_all()
 
-       all_cpvs = chain.from_iterable(PORTDB.cp_list(x) for x in all_cps)
+       all_cpvs = chain.from_iterable(
+               portage.db[portage.root]["porttree"].dbapi.cp_list(x)
+               for x in all_cps)
        all_installed_cpvs = set(get_installed_cpvs(predicate))
 
        if include_installed:
@@ -423,11 +429,17 @@ def get_installed_cpvs(predicate=None):
        """
 
        if predicate:
-               installed_cps = iter(x for x in VARDB.cp_all() if predicate(x))
+               installed_cps = iter(
+                       x for x
+                       in portage.db[portage.root]["vartree"].dbapi.cp_all()
+                       if predicate(x))
        else:
-               installed_cps = VARDB.cp_all()
+               installed_cps = (
+                       portage.db[portage.root]["vartree"].dbapi.cp_all())
 
-       for cpv in chain.from_iterable(VARDB.cp_list(x) for x in installed_cps):
+       for cpv in chain.from_iterable(
+               portage.db[portage.root]["vartree"].dbapi.cp_list(x)
+               for x in installed_cps):
                yield cpv
 
 
@@ -442,11 +454,17 @@ def get_bintree_cpvs(predicate=None):
        """
 
        if predicate:
-               installed_cps = iter(x for x in BINDB.cp_all() if predicate(x))
+               installed_cps = iter(
+                       x for x
+                       in portage.db[portage.root]["bintree"].dbapi.cp_all()
+                       if predicate(x))
        else:
-               installed_cps = BINDB.cp_all()
+               installed_cps = (
+                       portage.db[portage.root]["bintree"].dbapi.cp_all())
 
-       for cpv in chain.from_iterable(BINDB.cp_list(x) for x in installed_cps):
+       for cpv in chain.from_iterable(
+               portage.db[portage.root]["bintree"].dbapi.cp_list(x)
+               for x in installed_cps):
                yield cpv