#include "relation.h"
#include "repo.h"
-PyObject* new_package(PakfireObject* pakfire, Id id) {
- PyObject* args = Py_BuildValue("Oi", (PyObject *)pakfire, id);
- PyObject* repo = PyObject_CallObject((PyObject *)&PackageType, args);
-
- Py_DECREF(args);
+PyObject* new_package(PyTypeObject* type, PakfirePackage pkg) {
+ PackageObject* self = (PackageObject *)type->tp_alloc(type, 0);
+ if (self) {
+ self->package = pakfire_package_ref(pkg);
+ }
- return repo;
+ return (PyObject *)self;
}
static PyObject* Package_new(PyTypeObject* type, PyObject* args, PyObject* kwds) {
#include <Python.h>
-#include <pakfire/package.h>
+#include <pakfire/types.h>
#include <solv/pooltypes.h>
#include "pakfire.h"
extern PyTypeObject PackageType;
-PyObject* new_package(PakfireObject* pakfire, Id id);
+PyObject* new_package(PyTypeObject* type, PakfirePackage pkg);
#endif /* PYTHON_PAKFIRE_PACKAGE_H */
for (unsigned int i = 0; i < pakfire_packagelist_count(packagelist); i++) {
PakfirePackage package = pakfire_packagelist_get(packagelist, i);
- PyObject* obj = new_package(self->pakfire, pakfire_package_id(package));
+ PyObject* obj = new_package(&PackageType, package);
PyList_Append(list, obj);
pakfire_package_unref(package);
static PyObject* Repo_new(PyTypeObject* type, PyObject* args, PyObject* kwds) {
RepoObject* self = (RepoObject *)type->tp_alloc(type, 0);
if (self) {
- self->pakfire = NULL;
self->repo = NULL;
}
static void Repo_dealloc(RepoObject* self) {
pakfire_repo_unref(self->repo);
- Py_XDECREF(self->pakfire);
Py_TYPE(self)->tp_free((PyObject *)self);
}
if (!PyArg_ParseTuple(args, "O!s", &PakfireType, &pakfire, &name))
return -1;
- self->pakfire = pakfire;
- Py_INCREF(self->pakfire);
-
- self->repo = pakfire_repo_create(self->pakfire->pakfire, name);
+ // Create a new repository
+ self->repo = pakfire_repo_create(pakfire->pakfire, name);
return 0;
}
if (!PyArg_ParseTuple(args, "sss", &name, &evr, &arch))
return NULL;
- PakfirePackage pkg = pakfire_package_create2(self->pakfire->pakfire, self->repo, name, evr, arch);
+ Pakfire pakfire = pakfire_repo_get_pakfire(self->repo);
+ PakfirePackage pkg = pakfire_package_create2(pakfire, self->repo, name, evr, arch);
+
+ PyObject* obj = new_package(&PackageType, pkg);
- return new_package(self->pakfire, pakfire_package_id(pkg));
+ pakfire_package_unref(pkg);
+ pakfire_unref(pakfire);
+
+ return obj;
}
static PyObject* Repo_cache_age(RepoObject* self, PyObject* args) {
typedef struct {
PyObject_HEAD
- PakfireObject* pakfire;
PakfireRepo repo;
} RepoObject;
PakfireRepo pakfire_repo_ref(PakfireRepo repo);
PakfireRepo pakfire_repo_unref(PakfireRepo repo);
+Pakfire pakfire_repo_get_pakfire(PakfireRepo repo);
int pakfire_repo_identical(PakfireRepo repo1, PakfireRepo repo2);
int pakfire_repo_cmp(PakfireRepo repo1, PakfireRepo repo2);
pakfire_repo_get_cache;
pakfire_repo_get_name;
pakfire_repo_get_enabled;
+ pakfire_repo_get_pakfire;
pakfire_repo_get_pool;
pakfire_repo_get_priority;
pakfire_repo_identical;
return NULL;
}
+PAKFIRE_EXPORT Pakfire pakfire_repo_get_pakfire(PakfireRepo repo) {
+ return pakfire_ref(repo->pakfire);
+}
+
Repo* pakfire_repo_get_repo(PakfireRepo repo) {
return repo->repo;
}