summaryrefslogtreecommitdiff
path: root/python/pkgmanager.cc
diff options
context:
space:
mode:
authorJulian Andres Klode <jak@debian.org>2009-04-15 20:29:30 +0200
committerJulian Andres Klode <jak@debian.org>2009-04-15 20:29:30 +0200
commit49c10e3b9f6760280761f1255f3182637ba0ac9e (patch)
tree611819fece2da28d796b184457fb413f1f7b497d /python/pkgmanager.cc
parent23d29169c30b2f05a0c2943832a7cf7288ff5802 (diff)
parentabc7c861e85265b0725aa82a51fe41f9183bc506 (diff)
downloadpython-apt-49c10e3b9f6760280761f1255f3182637ba0ac9e.tar.gz
python-apt (0.7.90) experimental; urgency=low
* Introduce support for Python 3 (Closes: #523645) * Support the 'in' operator (e.g. "k in d") in Configuration{,Ptr,Sub} objects (e.g. apt_pkg.Config) and in TagSections (apt_pkg.ParseSection()) * Replace support for file objects with a more generic support for any object providing a fileno() method and for file descriptors (integers). * Add support for the Breaks fields * Only create Package objects when they are requested, do not keep them in a dict. Saves 10MB for 25,000 packages on my machine. * apt/package.py: Allow to set the candidate of a package (Closes: #523997) - Support assignments to the 'candidate' property of Package objects. - Initial patch by Sebastian Heinlein -- Julian Andres Klode <jak@debian.org> Wed, 15 Apr 2009 13:47:42 +0200
Diffstat (limited to 'python/pkgmanager.cc')
-rw-r--r--python/pkgmanager.cc54
1 files changed, 36 insertions, 18 deletions
diff --git a/python/pkgmanager.cc b/python/pkgmanager.cc
index 0eaa28cd..8f56cddc 100644
--- a/python/pkgmanager.cc
+++ b/python/pkgmanager.cc
@@ -75,41 +75,59 @@ static PyMethodDef PkgManagerMethods[] =
};
-static PyObject *PkgManagerAttr(PyObject *Self,char *Name)
-{
- //PkgManagerStruct &Struct = GetCpp<PkgManagerStruct>(Self);
- pkgPackageManager *pm = GetCpp<pkgPackageManager*>(Self);
-
- // some constants
- if(strcmp("ResultCompleted",Name) == 0)
- return Py_BuildValue("i", pkgPackageManager::Completed);
- if(strcmp("ResultFailed",Name) == 0)
- return Py_BuildValue("i", pkgPackageManager::Failed);
- if(strcmp("ResultIncomplete",Name) == 0)
- return Py_BuildValue("i", pkgPackageManager::Incomplete);
-
- return Py_FindMethod(PkgManagerMethods,Self,Name);
+static PyObject *PkgManagerGetResultCompleted(PyObject *Self,void*) {
+ return Py_BuildValue("i", pkgPackageManager::Completed);
+}
+static PyObject *PkgManagerGetResultFailed(PyObject *Self,void*) {
+ return Py_BuildValue("i", pkgPackageManager::Failed);
+}
+static PyObject *PkgManagerGetResultIncomplete(PyObject *Self,void*) {
+ return Py_BuildValue("i", pkgPackageManager::Incomplete);
}
+static PyGetSetDef PkgManagerGetSet[] = {
+ {"ResultCompleted",PkgManagerGetResultCompleted},
+ {"ResultFailed",PkgManagerGetResultFailed},
+ {"ResultIncomplete",PkgManagerGetResultIncomplete},
+ {}
+};
PyTypeObject PkgManagerType =
{
PyObject_HEAD_INIT(&PyType_Type)
- 0, // ob_size
+ #if PY_MAJOR_VERSION < 3
+ 0, // ob_size
+ #endif
"PackageManager", // tp_name
sizeof(CppPyObject<pkgPackageManager*>), // tp_basicsize
0, // tp_itemsize
// Methods
- CppDealloc<pkgPackageManager*>, // tp_dealloc
+ CppDealloc<pkgPackageManager*>, // tp_dealloc
0, // tp_print
- PkgManagerAttr, // tp_getattr
+ 0, // tp_getattr
0, // tp_setattr
0, // tp_compare
0, // tp_repr
0, // tp_as_number
0, // tp_as_sequence
- 0, // tp_as_mapping
+ 0, // tp_as_mapping
0, // tp_hash
+ 0, // tp_call
+ 0, // tp_str
+ 0, // tp_getattro
+ 0, // tp_setattro
+ 0, // tp_as_buffer
+ Py_TPFLAGS_DEFAULT, // tp_flags
+ "PackageManager Object", // tp_doc
+ 0, // tp_traverse
+ 0, // tp_clear
+ 0, // tp_richcompare
+ 0, // tp_weaklistoffset
+ 0, // tp_iter
+ 0, // tp_iternext
+ PkgManagerMethods, // tp_methods
+ 0, // tp_members
+ PkgManagerGetSet, // tp_getset
};
#include <apt-pkg/init.h>