static PyObject* Package_new(PyTypeObject* type, PyObject* args, PyObject* kwds) {
PackageObject* self = (PackageObject *)type->tp_alloc(type, 0);
if (self) {
- self->pakfire = NULL;
self->package = NULL;
}
static void Package_dealloc(PackageObject* self) {
pakfire_package_unref(self->package);
- Py_XDECREF(self->pakfire);
Py_TYPE(self)->tp_free((PyObject *)self);
}
if (!PyArg_ParseTuple(args, "O!|i", &PakfireType, &pakfire, &id))
return -1;
- self->pakfire = pakfire;
- Py_INCREF(self->pakfire);
-
- self->package = pakfire_package_create(self->pakfire->pakfire, (Id)id);
+ self->package = pakfire_package_create(pakfire->pakfire, (Id)id);
return 0;
}
return str;
}
-static PyObject* PyList_FromRelationList(PakfireObject* pakfire, PakfireRelationList relationlist) {
+static PyObject* PyList_FromRelationList(PakfireRelationList relationlist) {
PyObject* list = PyList_New(0);
if (list == NULL)
return NULL;
for (int i = 0; i < count; i++) {
PakfireRelation relation = pakfire_relationlist_get_clone(relationlist, i);
- PyObject* relation_obj = new_relation(pakfire, pakfire_relation_get_id(relation));
+ PyObject* relation_obj = new_relation(&RelationType, relation);
pakfire_relation_unref(relation);
if (relation_obj == NULL)
return NULL;
}
-static PakfireRelationList PyList_AsRelationList(PakfireObject* pakfire, PyObject* value) {
+static PakfireRelationList PyList_AsRelationList(Pakfire pakfire, PyObject* value) {
if (!PySequence_Check(value)) {
PyErr_SetString(PyExc_AttributeError, "Expected a sequence.");
return NULL;
}
const int length = PySequence_Length(value);
- PakfireRelationList relationlist = pakfire_relationlist_create(pakfire->pakfire);
+ PakfireRelationList relationlist = pakfire_relationlist_create(pakfire);
for (int i = 0; i < length; i++) {
PyObject* item = PySequence_GetItem(value, i);
static PyObject* Package_get_provides(PackageObject* self) {
PakfireRelationList relationlist = pakfire_package_get_provides(self->package);
- PyObject* list = PyList_FromRelationList(self->pakfire, relationlist);
+ PyObject* list = PyList_FromRelationList(relationlist);
pakfire_relationlist_unref(relationlist);
return list;
}
static int Package_set_provides(PackageObject* self, PyObject* value) {
- PakfireRelationList relationlist = PyList_AsRelationList(self->pakfire, value);
+ Pakfire pakfire = pakfire_package_get_pakfire(self->package);
+
+ PakfireRelationList relationlist = PyList_AsRelationList(pakfire, value);
+ pakfire_unref(pakfire);
if (!relationlist)
return -1;
static PyObject* Package_get_requires(PackageObject* self) {
PakfireRelationList relationlist = pakfire_package_get_requires(self->package);
- PyObject* list = PyList_FromRelationList(self->pakfire, relationlist);
+ PyObject* list = PyList_FromRelationList(relationlist);
pakfire_relationlist_unref(relationlist);
return list;
}
static int Package_set_requires(PackageObject* self, PyObject* value) {
- PakfireRelationList relationlist = PyList_AsRelationList(self->pakfire, value);
+ Pakfire pakfire = pakfire_package_get_pakfire(self->package);
+
+ PakfireRelationList relationlist = PyList_AsRelationList(pakfire, value);
+ pakfire_unref(pakfire);
if (!relationlist)
return -1;
static PyObject* Package_get_obsoletes(PackageObject* self) {
PakfireRelationList relationlist = pakfire_package_get_obsoletes(self->package);
- PyObject* list = PyList_FromRelationList(self->pakfire, relationlist);
+ PyObject* list = PyList_FromRelationList(relationlist);
pakfire_relationlist_unref(relationlist);
return list;
}
static int Package_set_obsoletes(PackageObject* self, PyObject* value) {
- PakfireRelationList relationlist = PyList_AsRelationList(self->pakfire, value);
+ Pakfire pakfire = pakfire_package_get_pakfire(self->package);
+
+ PakfireRelationList relationlist = PyList_AsRelationList(pakfire, value);
+ pakfire_unref(pakfire);
if (!relationlist)
return -1;
static PyObject* Package_get_conflicts(PackageObject* self) {
PakfireRelationList relationlist = pakfire_package_get_conflicts(self->package);
- PyObject* list = PyList_FromRelationList(self->pakfire, relationlist);
+ PyObject* list = PyList_FromRelationList(relationlist);
pakfire_relationlist_unref(relationlist);
return list;
}
static int Package_set_conflicts(PackageObject* self, PyObject* value) {
- PakfireRelationList relationlist = PyList_AsRelationList(self->pakfire, value);
+ Pakfire pakfire = pakfire_package_get_pakfire(self->package);
+
+ PakfireRelationList relationlist = PyList_AsRelationList(pakfire, value);
+ pakfire_unref(pakfire);
if (!relationlist)
return -1;
static PyObject* Package_get_recommends(PackageObject* self) {
PakfireRelationList relationlist = pakfire_package_get_recommends(self->package);
- PyObject* list = PyList_FromRelationList(self->pakfire, relationlist);
+ PyObject* list = PyList_FromRelationList(relationlist);
pakfire_relationlist_unref(relationlist);
return list;
}
static int Package_set_recommends(PackageObject* self, PyObject* value) {
- PakfireRelationList relationlist = PyList_AsRelationList(self->pakfire, value);
+ Pakfire pakfire = pakfire_package_get_pakfire(self->package);
+
+ PakfireRelationList relationlist = PyList_AsRelationList(pakfire, value);
+ pakfire_unref(pakfire);
if (!relationlist)
return -1;
static PyObject* Package_get_suggests(PackageObject* self) {
PakfireRelationList relationlist = pakfire_package_get_suggests(self->package);
- PyObject* list = PyList_FromRelationList(self->pakfire, relationlist);
+ PyObject* list = PyList_FromRelationList(relationlist);
pakfire_relationlist_unref(relationlist);
return list;
}
static int Package_set_suggests(PackageObject* self, PyObject* value) {
- PakfireRelationList relationlist = PyList_AsRelationList(self->pakfire, value);
+ Pakfire pakfire = pakfire_package_get_pakfire(self->package);
+
+ PakfireRelationList relationlist = PyList_AsRelationList(pakfire, value);
+ pakfire_unref(pakfire);
if (!relationlist)
return -1;
#include <pakfire/package.h>
#include <pakfire/packagelist.h>
#include <pakfire/relation.h>
+#include <pakfire/types.h>
#include <pakfire/util.h>
-#include <solv/pooltypes.h>
#include "package.h"
#include "relation.h"
-static RelationObject* Relation_new_core(PyTypeObject* type, PakfireObject* pakfire) {
+PyObject* new_relation(PyTypeObject* type, PakfireRelation relation) {
RelationObject* self = (RelationObject *)type->tp_alloc(type, 0);
- if (!self)
- return NULL;
-
- self->pakfire = pakfire;
- if (self->pakfire)
- Py_INCREF(self->pakfire);
-
- self->relation = NULL;
-
- return self;
-}
-
-PyObject* new_relation(PakfireObject* pakfire, Id id) {
- RelationObject* relation = Relation_new_core(&RelationType, pakfire);
- relation->relation = pakfire_relation_create_from_id(pakfire->pakfire, id);
+ if (self) {
+ self->relation = pakfire_relation_ref(relation);
+ }
- return (PyObject *)relation;
+ return (PyObject*)self;
}
static PyObject* Relation_new(PyTypeObject* type, PyObject* args, PyObject* kwds) {
- RelationObject* self = Relation_new_core(type, NULL);
+ RelationObject* self = (RelationObject *)type->tp_alloc(type, 0);
+ if (self) {
+ self->relation = NULL;
+ }
- return (PyObject *)self;
+ return (PyObject*)self;
}
static void Relation_dealloc(RelationObject* self) {
pakfire_relation_unref(self->relation);
- Py_XDECREF(self->pakfire);
Py_TYPE(self)->tp_free((PyObject *)self);
}
if (!PyArg_ParseTuple(args, "O!s|is", &PakfireType, &pakfire, &name, &cmp_type, &evr))
return -1;
- self->pakfire = pakfire;
- Py_INCREF(self->pakfire);
-
- self->relation = pakfire_relation_create(self->pakfire->pakfire, name, cmp_type, evr);
+ self->relation = pakfire_relation_create(pakfire->pakfire, name, cmp_type, evr);
if (!self->relation) {
- Py_DECREF(self->pakfire);
-
PyErr_Format(PyExc_ValueError, "No such relation: %s", name);
return -1;
}