diff options
| author | Julian Andres Klode <jak@debian.org> | 2009-08-21 15:18:33 +0200 |
|---|---|---|
| committer | Julian Andres Klode <jak@debian.org> | 2009-08-21 15:18:33 +0200 |
| commit | e2d814ffc20e231a3b8201f7d66145939c99174c (patch) | |
| tree | ff62cd5fadea27d6a7b3324b2a196ea6d1403701 /apt | |
| parent | 200249fc4f0fccd19e12e1abcb718c08df0bf752 (diff) | |
| download | python-apt-e2d814ffc20e231a3b8201f7d66145939c99174c.tar.gz | |
* apt/cache.py: Introduce ProblemResolver class (Closes: #542705)
Diffstat (limited to 'apt')
| -rw-r--r-- | apt/__init__.py | 2 | ||||
| -rw-r--r-- | apt/cache.py | 35 |
2 files changed, 35 insertions, 2 deletions
diff --git a/apt/__init__.py b/apt/__init__.py index ae2abbf2..4b3e6bf2 100644 --- a/apt/__init__.py +++ b/apt/__init__.py @@ -23,7 +23,7 @@ import os # import some fancy classes from apt.package import Package -from apt.cache import Cache +from apt.cache import Cache, ProblemResolver from apt.progress import ( OpProgress, FetchProgress, InstallProgress, CdromProgress) from apt.cdrom import Cdrom diff --git a/apt/cache.py b/apt/cache.py index c1e2428c..33d55368 100644 --- a/apt/cache.py +++ b/apt/cache.py @@ -91,7 +91,6 @@ class Cache(object): for f in files: if not os.path.exists(rootdir+f): open(rootdir+f,"w") - def _runCallbacks(self, name): """ internal helper to run a callback """ @@ -363,6 +362,40 @@ class Cache(object): return self._depcache.keep_count +class ProblemResolver(object): + """Resolve problems due to dependencies and conflicts. + + The first argument 'cache' is an instance of apt.Cache. + """ + + def __init__(self, cache): + self._resolver = apt_pkg.GetPkgProblemResolver(cache._depcache) + + def clear(self, package): + """Reset the package to the default state.""" + self._resolver.Clear(package._pkg) + + def install_protect(self): + """mark protected packages for install or removal.""" + self._resolver.InstallProtect() + + def protect(self, package): + """Protect a package so it won't be removed.""" + self._resolver.Protect(package._pkg) + + def remove(self, package): + """Mark a package for removal.""" + self._resolver.Remove(package._pkg) + + def resolve(self): + """Resolve dependencies, try to remove packages where needed.""" + self._resolver.Resolve() + + def resolve_by_keep(self): + """Resolve dependencies, do not try to remove packages.""" + self._resolver.ResolveByKeep() + + # ----------------------------- experimental interface |
