summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Vogt <michael.vogt@ubuntu.com>2005-05-11 14:13:16 +0000
committerMichael Vogt <michael.vogt@ubuntu.com>2005-05-11 14:13:16 +0000
commite78e4b71fc600cf251eead62cec6a7c07165e38b (patch)
tree483321a0752831370358ad47963c4fbff0034622
parentf637fdcce22f31ed51a12b860ada598286180bdb (diff)
downloadpython-apt-e78e4b71fc600cf251eead62cec6a7c07165e38b.tar.gz
* __init__ added for the apt module, IsInstalled() added
-rw-r--r--apt/__init__.py13
-rw-r--r--apt/cache.py69
-rw-r--r--apt/package.py6
3 files changed, 69 insertions, 19 deletions
diff --git a/apt/__init__.py b/apt/__init__.py
new file mode 100644
index 00000000..f60b297b
--- /dev/null
+++ b/apt/__init__.py
@@ -0,0 +1,13 @@
+# dummy file for now
+
+import apt_pkg
+
+# import some fancy classes
+from apt.package import Package
+from apt.cache import Cache
+from apt.progress import OpProgress, FetchProgress, InstallProgress, CdromProgress
+from apt_pkg import SizeToStr, VersionCompare
+
+# init the package system
+apt_pkg.init()
+
diff --git a/apt/cache.py b/apt/cache.py
index 2dac0739..1693498d 100644
--- a/apt/cache.py
+++ b/apt/cache.py
@@ -2,21 +2,15 @@ import apt_pkg
from apt import Package
from UserDict import UserDict
-class Filter(object):
- def apply(self, pkg):
- pass
-
-
-
class Cache(object):
- def __init__(self):
- self.open()
+ def __init__(self, progress=None):
+ self.open(progress)
- def open(self):
- self._cache = apt_pkg.GetCache()
+ def open(self, progress):
+ self._cache = apt_pkg.GetCache(progress)
self._depcache = apt_pkg.GetDepCache(self._cache)
self._records = apt_pkg.GetPkgRecords(self._cache)
- self._depcache.Init()
+ self._depcache.Init(progress)
self._dict = {}
# build the packages dict
@@ -47,15 +41,56 @@ class Cache(object):
def Commit(self, fprogress, iprogress):
self._depcache.Commit(fprogress, iprogress)
+
+
+class Filter(object):
+ def apply(self, pkg):
+ return True
+
+class MarkedChangesFilter(Filter):
+ def apply(self, pkg):
+ if pkg.MarkedInstall() or pkg.MarkedDelete() or pkg.MarkedUpgrade():
+ return True
+ else:
+ return False
+
+class FilteredCache(Cache):
+ def __len__(self):
+ return len(self._filtered)
+
+ def __getitem__(self, key):
+ return self._dict[key]
+
+ def keys(self):
+ return self._filtered.keys()
+
+ def has_key(self, key):
+ try:
+ self._filtered[key]
+ except KeyError:
+ return False
+ return True
+ def AddFilter(self, filter):
+ for pkg in self._dict.keys():
+ if filter.apply(self._dict[pkg]):
+ self._filtered[pkg] = 1
+
if __name__ == "__main__":
print "Cache self test"
apt_pkg.init()
- c = Cache()
- print c.has_key("aptitudex")
- p = c["aptitude"]
- print p.Name()
- print len(c)
+ #c = Cache()
+ #print c.has_key("aptitudex")
+ #p = c["aptitude"]
+ #print p.Name()
+ #print len(c)
+
+ #for pkg in c.keys():
+ # x= c[pkg].Name()
+ c = FilteredCache()
+ c.Upgrade()
+ c.AddFilter(MarkedChangesFilter())
for pkg in c.keys():
- x= c[pkg].Name()
+ print c[pkg].Name()
+
diff --git a/apt/package.py b/apt/package.py
index 138a520f..b4f6b1df 100644
--- a/apt/package.py
+++ b/apt/package.py
@@ -98,11 +98,13 @@ class Package(object):
def MarkedUpgrade(self):
return self._depcache.MarkedUpgrade(self._pkg)
def MarkedDelete(self):
- return self._depcache.MarkedKeep(self._pkg)
+ return self._depcache.MarkedDelete(self._pkg)
def MarkedKeep(self):
return self._depcache.MarkedKeep(self._pkg)
+ def IsInstalled(self):
+ return (self._pkg.CurrentVer != None)
def IsUpgradable(self):
- return self._depcache.IsUpgradable(self._pkg)
+ return IsInstalled() and self._depcache.IsUpgradable(self._pkg)
# depcache action
def MarkKeep(self):