Blame 0004-Revert-Wrap-c-api-to-python-for-parsing-metadata-tog.patch

Lukáš Hrázký 4e70f6
From 3d3dc6b7bf722b08c07003003e5d8cc0aa7eb1ee Mon Sep 17 00:00:00 2001
Lukáš Hrázký 4e70f6
From: =?UTF-8?q?Ale=C5=A1=20Mat=C4=9Bj?= <amatej@redhat.com>
Lukáš Hrázký 4e70f6
Date: Wed, 9 Mar 2022 15:23:47 +0100
Lukáš Hrázký 4e70f6
Subject: [PATCH] Revert "Wrap c api to python for parsing metadata together"
Lukáš Hrázký 4e70f6
Lukáš Hrázký 4e70f6
This reverts commit 670006b9f37d8298fe2ec1d6cfc5cdf175a3128b.
Lukáš Hrázký 4e70f6
---
Lukáš Hrázký 4e70f6
 src/python/createrepo_cmodule.c |   2 -
Lukáš Hrázký 4e70f6
 src/python/xml_parser-py.c      | 156 +++++++-------------------------
Lukáš Hrázký 4e70f6
 src/python/xml_parser-py.h      |   8 --
Lukáš Hrázký 4e70f6
 3 files changed, 32 insertions(+), 134 deletions(-)
Lukáš Hrázký 4e70f6
Lukáš Hrázký 4e70f6
diff --git a/src/python/createrepo_cmodule.c b/src/python/createrepo_cmodule.c
Lukáš Hrázký 4e70f6
index c0b9200..6937246 100644
Lukáš Hrázký 4e70f6
--- a/src/python/createrepo_cmodule.c
Lukáš Hrázký 4e70f6
+++ b/src/python/createrepo_cmodule.c
Lukáš Hrázký 4e70f6
@@ -79,8 +79,6 @@ static struct PyMethodDef createrepo_c_methods[] = {
Lukáš Hrázký 4e70f6
         METH_VARARGS, xml_parse_repomd__doc__},
Lukáš Hrázký 4e70f6
     {"xml_parse_updateinfo",    (PyCFunction)py_xml_parse_updateinfo,
Lukáš Hrázký 4e70f6
         METH_VARARGS, xml_parse_updateinfo__doc__},
Lukáš Hrázký 4e70f6
-    {"xml_parse_main_metadata_together",(PyCFunctionWithKeywords)py_xml_parse_main_metadata_together,
Lukáš Hrázký 4e70f6
-        METH_VARARGS | METH_KEYWORDS, xml_parse_main_metadata_together__doc__},
Lukáš Hrázký 4e70f6
     {"checksum_name_str",       (PyCFunction)py_checksum_name_str,
Lukáš Hrázký 4e70f6
         METH_VARARGS, checksum_name_str__doc__},
Lukáš Hrázký 4e70f6
     {"checksum_type",           (PyCFunction)py_checksum_type,
Lukáš Hrázký 4e70f6
diff --git a/src/python/xml_parser-py.c b/src/python/xml_parser-py.c
Lukáš Hrázký 4e70f6
index a1f92f8..0879128 100644
Lukáš Hrázký 4e70f6
--- a/src/python/xml_parser-py.c
Lukáš Hrázký 4e70f6
+++ b/src/python/xml_parser-py.c
Lukáš Hrázký 4e70f6
@@ -34,7 +34,7 @@ typedef struct {
Lukáš Hrázký 4e70f6
     PyObject *py_newpkgcb;
Lukáš Hrázký 4e70f6
     PyObject *py_pkgcb;
Lukáš Hrázký 4e70f6
     PyObject *py_warningcb;
Lukáš Hrázký 4e70f6
-    PyObject *py_pkgs;       /*!< Current processed package */
Lukáš Hrázký 4e70f6
+    PyObject *py_pkg;       /*!< Current processed package */
Lukáš Hrázký 4e70f6
 } CbData;
Lukáš Hrázký 4e70f6
 
Lukáš Hrázký 4e70f6
 static int
Lukáš Hrázký 4e70f6
@@ -48,6 +48,12 @@ c_newpkgcb(cr_Package **pkg,
Lukáš Hrázký 4e70f6
     PyObject *arglist, *result;
Lukáš Hrázký 4e70f6
     CbData *data = cbdata;
Lukáš Hrázký 4e70f6
 
Lukáš Hrázký 4e70f6
+    if (data->py_pkg) {
Lukáš Hrázký 4e70f6
+        // Decref ref count on previous processed package
Lukáš Hrázký 4e70f6
+        Py_DECREF(data->py_pkg);
Lukáš Hrázký 4e70f6
+        data->py_pkg = NULL;
Lukáš Hrázký 4e70f6
+    }
Lukáš Hrázký 4e70f6
+
Lukáš Hrázký 4e70f6
     arglist = Py_BuildValue("(sss)", pkgId, name, arch);
Lukáš Hrázký 4e70f6
     result = PyObject_CallObject(data->py_newpkgcb, arglist);
Lukáš Hrázký 4e70f6
     Py_DECREF(arglist);
Lukáš Hrázký 4e70f6
@@ -67,18 +73,13 @@ c_newpkgcb(cr_Package **pkg,
Lukáš Hrázký 4e70f6
 
Lukáš Hrázký 4e70f6
     if (result == Py_None) {
Lukáš Hrázký 4e70f6
         *pkg = NULL;
Lukáš Hrázký 4e70f6
+        data->py_pkg = NULL;
Lukáš Hrázký 4e70f6
+        Py_DECREF(result);
Lukáš Hrázký 4e70f6
     } else {
Lukáš Hrázký 4e70f6
         *pkg = Package_FromPyObject(result);
Lukáš Hrázký 4e70f6
-        if (data->py_pkgcb != Py_None) {
Lukáš Hrázký 4e70f6
-            // Store reference to the python pkg (result) only if we will need it later
Lukáš Hrázký 4e70f6
-            PyObject *keyFromPtr = PyLong_FromVoidPtr(*pkg);
Lukáš Hrázký 4e70f6
-            PyDict_SetItem(data->py_pkgs, keyFromPtr, result);
Lukáš Hrázký 4e70f6
-            Py_DECREF(keyFromPtr);
Lukáš Hrázký 4e70f6
-        }
Lukáš Hrázký 4e70f6
+        data->py_pkg = result; // Store reference to current package
Lukáš Hrázký 4e70f6
     }
Lukáš Hrázký 4e70f6
 
Lukáš Hrázký 4e70f6
-    Py_DECREF(result);
Lukáš Hrázký 4e70f6
-
Lukáš Hrázký 4e70f6
     return CR_CB_RET_OK;
Lukáš Hrázký 4e70f6
 }
Lukáš Hrázký 4e70f6
 
Lukáš Hrázký 4e70f6
@@ -90,23 +91,16 @@ c_pkgcb(cr_Package *pkg,
Lukáš Hrázký 4e70f6
     PyObject *arglist, *result, *py_pkg;
Lukáš Hrázký 4e70f6
     CbData *data = cbdata;
Lukáš Hrázký 4e70f6
 
Lukáš Hrázký 4e70f6
-    PyObject *keyFromPtr = PyLong_FromVoidPtr(pkg);
Lukáš Hrázký 4e70f6
-    py_pkg = PyDict_GetItem(data->py_pkgs, keyFromPtr);
Lukáš Hrázký 4e70f6
-    if (py_pkg) {
Lukáš Hrázký 4e70f6
-        arglist = Py_BuildValue("(O)", py_pkg);
Lukáš Hrázký 4e70f6
-        result = PyObject_CallObject(data->py_pkgcb, arglist);
Lukáš Hrázký 4e70f6
-        PyDict_DelItem(data->py_pkgs, keyFromPtr);
Lukáš Hrázký 4e70f6
-    } else {
Lukáš Hrázký 4e70f6
-        // The package was not provided by user in c_newpkgcb,
Lukáš Hrázký 4e70f6
-        // create new python package object
Lukáš Hrázký 4e70f6
-        PyObject *new_py_pkg = Object_FromPackage(pkg, 1);
Lukáš Hrázký 4e70f6
-        arglist = Py_BuildValue("(O)", new_py_pkg);
Lukáš Hrázký 4e70f6
-        result = PyObject_CallObject(data->py_pkgcb, arglist);
Lukáš Hrázký 4e70f6
-        Py_DECREF(new_py_pkg);
Lukáš Hrázký 4e70f6
-    }
Lukáš Hrázký 4e70f6
+    if (data->py_pkg)
Lukáš Hrázký 4e70f6
+        py_pkg = data->py_pkg;
Lukáš Hrázký 4e70f6
+    else
Lukáš Hrázký 4e70f6
+        py_pkg = Object_FromPackage(pkg, 1);
Lukáš Hrázký 4e70f6
 
Lukáš Hrázký 4e70f6
+    arglist = Py_BuildValue("(O)", py_pkg);
Lukáš Hrázký 4e70f6
+    result = PyObject_CallObject(data->py_pkgcb, arglist);
Lukáš Hrázký 4e70f6
     Py_DECREF(arglist);
Lukáš Hrázký 4e70f6
-    Py_DECREF(keyFromPtr);
Lukáš Hrázký 4e70f6
+    Py_DECREF(py_pkg);
Lukáš Hrázký 4e70f6
+    data->py_pkg = NULL;
Lukáš Hrázký 4e70f6
 
Lukáš Hrázký 4e70f6
     if (result == NULL) {
Lukáš Hrázký 4e70f6
         // Exception raised
Lukáš Hrázký 4e70f6
@@ -197,7 +191,7 @@ py_xml_parse_primary(G_GNUC_UNUSED PyObject *self, PyObject *args)
Lukáš Hrázký 4e70f6
     cbdata.py_newpkgcb  = py_newpkgcb;
Lukáš Hrázký 4e70f6
     cbdata.py_pkgcb     = py_pkgcb;
Lukáš Hrázký 4e70f6
     cbdata.py_warningcb = py_warningcb;
Lukáš Hrázký 4e70f6
-    cbdata.py_pkgs      = PyDict_New();
Lukáš Hrázký 4e70f6
+    cbdata.py_pkg       = NULL;
Lukáš Hrázký 4e70f6
 
Lukáš Hrázký 4e70f6
     cr_xml_parse_primary(filename,
Lukáš Hrázký 4e70f6
                          ptr_c_newpkgcb,
Lukáš Hrázký 4e70f6
@@ -212,8 +206,7 @@ py_xml_parse_primary(G_GNUC_UNUSED PyObject *self, PyObject *args)
Lukáš Hrázký 4e70f6
     Py_XDECREF(py_newpkgcb);
Lukáš Hrázký 4e70f6
     Py_XDECREF(py_pkgcb);
Lukáš Hrázký 4e70f6
     Py_XDECREF(py_warningcb);
Lukáš Hrázký 4e70f6
-
Lukáš Hrázký 4e70f6
-    Py_XDECREF(cbdata.py_pkgs);
Lukáš Hrázký 4e70f6
+    Py_XDECREF(cbdata.py_pkg);
Lukáš Hrázký 4e70f6
 
Lukáš Hrázký 4e70f6
     if (tmp_err) {
Lukáš Hrázký 4e70f6
         nice_exception(&tmp_err, NULL);
Lukáš Hrázký 4e70f6
@@ -279,7 +272,7 @@ py_xml_parse_primary_snippet(G_GNUC_UNUSED PyObject *self, PyObject *args)
Lukáš Hrázký 4e70f6
     cbdata.py_newpkgcb  = py_newpkgcb;
Lukáš Hrázký 4e70f6
     cbdata.py_pkgcb     = py_pkgcb;
Lukáš Hrázký 4e70f6
     cbdata.py_warningcb = py_warningcb;
Lukáš Hrázký 4e70f6
-    cbdata.py_pkgs      = PyDict_New();
Lukáš Hrázký 4e70f6
+    cbdata.py_pkg       = NULL;
Lukáš Hrázký 4e70f6
 
Lukáš Hrázký 4e70f6
     cr_xml_parse_primary_snippet(target, ptr_c_newpkgcb, &cbdata, ptr_c_pkgcb, &cbdata,
Lukáš Hrázký 4e70f6
                                  ptr_c_warningcb, &cbdata, do_files, &tmp_err);
Lukáš Hrázký 4e70f6
@@ -287,7 +280,7 @@ py_xml_parse_primary_snippet(G_GNUC_UNUSED PyObject *self, PyObject *args)
Lukáš Hrázký 4e70f6
     Py_XDECREF(py_newpkgcb);
Lukáš Hrázký 4e70f6
     Py_XDECREF(py_pkgcb);
Lukáš Hrázký 4e70f6
     Py_XDECREF(py_warningcb);
Lukáš Hrázký 4e70f6
-    Py_XDECREF(cbdata.py_pkgs);
Lukáš Hrázký 4e70f6
+    Py_XDECREF(cbdata.py_pkg);
Lukáš Hrázký 4e70f6
 
Lukáš Hrázký 4e70f6
     if (tmp_err) {
Lukáš Hrázký 4e70f6
         nice_exception(&tmp_err, NULL);
Lukáš Hrázký 4e70f6
@@ -351,7 +344,7 @@ py_xml_parse_filelists(G_GNUC_UNUSED PyObject *self, PyObject *args)
Lukáš Hrázký 4e70f6
     cbdata.py_newpkgcb  = py_newpkgcb;
Lukáš Hrázký 4e70f6
     cbdata.py_pkgcb     = py_pkgcb;
Lukáš Hrázký 4e70f6
     cbdata.py_warningcb = py_warningcb;
Lukáš Hrázký 4e70f6
-    cbdata.py_pkgs      = PyDict_New();
Lukáš Hrázký 4e70f6
+    cbdata.py_pkg       = NULL;
Lukáš Hrázký 4e70f6
 
Lukáš Hrázký 4e70f6
     cr_xml_parse_filelists(filename,
Lukáš Hrázký 4e70f6
                            ptr_c_newpkgcb,
Lukáš Hrázký 4e70f6
@@ -365,7 +358,7 @@ py_xml_parse_filelists(G_GNUC_UNUSED PyObject *self, PyObject *args)
Lukáš Hrázký 4e70f6
     Py_XDECREF(py_newpkgcb);
Lukáš Hrázký 4e70f6
     Py_XDECREF(py_pkgcb);
Lukáš Hrázký 4e70f6
     Py_XDECREF(py_warningcb);
Lukáš Hrázký 4e70f6
-    Py_XDECREF(cbdata.py_pkgs);
Lukáš Hrázký 4e70f6
+    Py_XDECREF(cbdata.py_pkg);
Lukáš Hrázký 4e70f6
 
Lukáš Hrázký 4e70f6
     if (tmp_err) {
Lukáš Hrázký 4e70f6
         nice_exception(&tmp_err, NULL);
Lukáš Hrázký 4e70f6
@@ -429,7 +422,7 @@ py_xml_parse_filelists_snippet(G_GNUC_UNUSED PyObject *self, PyObject *args)
Lukáš Hrázký 4e70f6
     cbdata.py_newpkgcb  = py_newpkgcb;
Lukáš Hrázký 4e70f6
     cbdata.py_pkgcb     = py_pkgcb;
Lukáš Hrázký 4e70f6
     cbdata.py_warningcb = py_warningcb;
Lukáš Hrázký 4e70f6
-    cbdata.py_pkgs      = PyDict_New();
Lukáš Hrázký 4e70f6
+    cbdata.py_pkg       = NULL;
Lukáš Hrázký 4e70f6
 
Lukáš Hrázký 4e70f6
     cr_xml_parse_filelists_snippet(target, ptr_c_newpkgcb, &cbdata, ptr_c_pkgcb,
Lukáš Hrázký 4e70f6
                                    &cbdata, ptr_c_warningcb, &cbdata, &tmp_err);
Lukáš Hrázký 4e70f6
@@ -437,7 +430,7 @@ py_xml_parse_filelists_snippet(G_GNUC_UNUSED PyObject *self, PyObject *args)
Lukáš Hrázký 4e70f6
     Py_XDECREF(py_newpkgcb);
Lukáš Hrázký 4e70f6
     Py_XDECREF(py_pkgcb);
Lukáš Hrázký 4e70f6
     Py_XDECREF(py_warningcb);
Lukáš Hrázký 4e70f6
-    Py_XDECREF(cbdata.py_pkgs);
Lukáš Hrázký 4e70f6
+    Py_XDECREF(cbdata.py_pkg);
Lukáš Hrázký 4e70f6
 
Lukáš Hrázký 4e70f6
     if (tmp_err) {
Lukáš Hrázký 4e70f6
         nice_exception(&tmp_err, NULL);
Lukáš Hrázký 4e70f6
@@ -501,7 +494,7 @@ py_xml_parse_other(G_GNUC_UNUSED PyObject *self, PyObject *args)
Lukáš Hrázký 4e70f6
     cbdata.py_newpkgcb  = py_newpkgcb;
Lukáš Hrázký 4e70f6
     cbdata.py_pkgcb     = py_pkgcb;
Lukáš Hrázký 4e70f6
     cbdata.py_warningcb = py_warningcb;
Lukáš Hrázký 4e70f6
-    cbdata.py_pkgs      = PyDict_New();
Lukáš Hrázký 4e70f6
+    cbdata.py_pkg       = NULL;
Lukáš Hrázký 4e70f6
 
Lukáš Hrázký 4e70f6
     cr_xml_parse_other(filename,
Lukáš Hrázký 4e70f6
                        ptr_c_newpkgcb,
Lukáš Hrázký 4e70f6
@@ -515,7 +508,7 @@ py_xml_parse_other(G_GNUC_UNUSED PyObject *self, PyObject *args)
Lukáš Hrázký 4e70f6
     Py_XDECREF(py_newpkgcb);
Lukáš Hrázký 4e70f6
     Py_XDECREF(py_pkgcb);
Lukáš Hrázký 4e70f6
     Py_XDECREF(py_warningcb);
Lukáš Hrázký 4e70f6
-    Py_XDECREF(cbdata.py_pkgs);
Lukáš Hrázký 4e70f6
+    Py_XDECREF(cbdata.py_pkg);
Lukáš Hrázký 4e70f6
 
Lukáš Hrázký 4e70f6
     if (tmp_err) {
Lukáš Hrázký 4e70f6
         nice_exception(&tmp_err, NULL);
Lukáš Hrázký 4e70f6
@@ -579,7 +572,7 @@ py_xml_parse_other_snippet(G_GNUC_UNUSED PyObject *self, PyObject *args)
Lukáš Hrázký 4e70f6
     cbdata.py_newpkgcb  = py_newpkgcb;
Lukáš Hrázký 4e70f6
     cbdata.py_pkgcb     = py_pkgcb;
Lukáš Hrázký 4e70f6
     cbdata.py_warningcb = py_warningcb;
Lukáš Hrázký 4e70f6
-    cbdata.py_pkgs      = PyDict_New();
Lukáš Hrázký 4e70f6
+    cbdata.py_pkg       = NULL;
Lukáš Hrázký 4e70f6
 
Lukáš Hrázký 4e70f6
     cr_xml_parse_other_snippet(target, ptr_c_newpkgcb, &cbdata, ptr_c_pkgcb, &cbdata,
Lukáš Hrázký 4e70f6
                                ptr_c_warningcb, &cbdata, &tmp_err);
Lukáš Hrázký 4e70f6
@@ -587,7 +580,7 @@ py_xml_parse_other_snippet(G_GNUC_UNUSED PyObject *self, PyObject *args)
Lukáš Hrázký 4e70f6
     Py_XDECREF(py_newpkgcb);
Lukáš Hrázký 4e70f6
     Py_XDECREF(py_pkgcb);
Lukáš Hrázký 4e70f6
     Py_XDECREF(py_warningcb);
Lukáš Hrázký 4e70f6
-    Py_XDECREF(cbdata.py_pkgs);
Lukáš Hrázký 4e70f6
+    Py_XDECREF(cbdata.py_pkg);
Lukáš Hrázký 4e70f6
 
Lukáš Hrázký 4e70f6
     if (tmp_err) {
Lukáš Hrázký 4e70f6
         nice_exception(&tmp_err, NULL);
Lukáš Hrázký 4e70f6
@@ -630,7 +623,7 @@ py_xml_parse_repomd(G_GNUC_UNUSED PyObject *self, PyObject *args)
Lukáš Hrázký 4e70f6
     cbdata.py_newpkgcb  = NULL;
Lukáš Hrázký 4e70f6
     cbdata.py_pkgcb     = NULL;
Lukáš Hrázký 4e70f6
     cbdata.py_warningcb = py_warningcb;
Lukáš Hrázký 4e70f6
-    cbdata.py_pkgs      = NULL;
Lukáš Hrázký 4e70f6
+    cbdata.py_pkg       = NULL;
Lukáš Hrázký 4e70f6
 
Lukáš Hrázký 4e70f6
     repomd = Repomd_FromPyObject(py_repomd);
Lukáš Hrázký 4e70f6
 
Lukáš Hrázký 4e70f6
@@ -684,7 +677,7 @@ py_xml_parse_updateinfo(G_GNUC_UNUSED PyObject *self, PyObject *args)
Lukáš Hrázký 4e70f6
     cbdata.py_newpkgcb  = NULL;
Lukáš Hrázký 4e70f6
     cbdata.py_pkgcb     = NULL;
Lukáš Hrázký 4e70f6
     cbdata.py_warningcb = py_warningcb;
Lukáš Hrázký 4e70f6
-    cbdata.py_pkgs      = NULL;
Lukáš Hrázký 4e70f6
+    cbdata.py_pkg       = NULL;
Lukáš Hrázký 4e70f6
 
Lukáš Hrázký 4e70f6
     updateinfo = UpdateInfo_FromPyObject(py_updateinfo);
Lukáš Hrázký 4e70f6
 
Lukáš Hrázký 4e70f6
@@ -704,88 +697,3 @@ py_xml_parse_updateinfo(G_GNUC_UNUSED PyObject *self, PyObject *args)
Lukáš Hrázký 4e70f6
 
Lukáš Hrázký 4e70f6
     Py_RETURN_NONE;
Lukáš Hrázký 4e70f6
 }
Lukáš Hrázký 4e70f6
-
Lukáš Hrázký 4e70f6
-
Lukáš Hrázký 4e70f6
-PyObject *
Lukáš Hrázký 4e70f6
-py_xml_parse_main_metadata_together(G_GNUC_UNUSED PyObject *self, PyObject *args, PyObject *kwargs)
Lukáš Hrázký 4e70f6
-{
Lukáš Hrázký 4e70f6
-    char *primary_filename;
Lukáš Hrázký 4e70f6
-    char *filelists_filename;
Lukáš Hrázký 4e70f6
-    char *other_filename;
Lukáš Hrázký 4e70f6
-    int allow_out_of_order = 1;
Lukáš Hrázký 4e70f6
-    PyObject *py_newpkgcb, *py_pkgcb, *py_warningcb;
Lukáš Hrázký 4e70f6
-    CbData cbdata;
Lukáš Hrázký 4e70f6
-    GError *tmp_err = NULL;
Lukáš Hrázký 4e70f6
-    static char *kwlist[] = { "primary", "filelists", "other", "newpkgcb", "pkgcb",
Lukáš Hrázký 4e70f6
-                              "warningcb", "allow_out_of_order", NULL };
Lukáš Hrázký 4e70f6
-
Lukáš Hrázký 4e70f6
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "sssOOO|p:py_xml_parse_main_metadata_together", kwlist,
Lukáš Hrázký 4e70f6
-                                     &primary_filename, &filelists_filename, &other_filename, &py_newpkgcb,
Lukáš Hrázký 4e70f6
-                                     &py_pkgcb, &py_warningcb, &allow_out_of_order)) {
Lukáš Hrázký 4e70f6
-        return NULL;
Lukáš Hrázký 4e70f6
-    }
Lukáš Hrázký 4e70f6
-
Lukáš Hrázký 4e70f6
-    if (!PyCallable_Check(py_newpkgcb) && py_newpkgcb != Py_None) {
Lukáš Hrázký 4e70f6
-        PyErr_SetString(PyExc_TypeError, "newpkgcb must be callable or None");
Lukáš Hrázký 4e70f6
-        return NULL;
Lukáš Hrázký 4e70f6
-    }
Lukáš Hrázký 4e70f6
-
Lukáš Hrázký 4e70f6
-    if (!PyCallable_Check(py_pkgcb) && py_pkgcb != Py_None) {
Lukáš Hrázký 4e70f6
-        PyErr_SetString(PyExc_TypeError, "pkgcb must be callable or None");
Lukáš Hrázký 4e70f6
-        return NULL;
Lukáš Hrázký 4e70f6
-    }
Lukáš Hrázký 4e70f6
-
Lukáš Hrázký 4e70f6
-    if (!PyCallable_Check(py_warningcb) && py_warningcb != Py_None) {
Lukáš Hrázký 4e70f6
-        PyErr_SetString(PyExc_TypeError, "warningcb must be callable or None");
Lukáš Hrázký 4e70f6
-        return NULL;
Lukáš Hrázký 4e70f6
-    }
Lukáš Hrázký 4e70f6
-
Lukáš Hrázký 4e70f6
-    if (py_newpkgcb == Py_None && py_pkgcb == Py_None) {
Lukáš Hrázký 4e70f6
-        PyErr_SetString(PyExc_ValueError, "both pkgcb and newpkgcb cannot be None");
Lukáš Hrázký 4e70f6
-        return NULL;
Lukáš Hrázký 4e70f6
-    }
Lukáš Hrázký 4e70f6
-
Lukáš Hrázký 4e70f6
-    Py_XINCREF(py_newpkgcb);
Lukáš Hrázký 4e70f6
-    Py_XINCREF(py_pkgcb);
Lukáš Hrázký 4e70f6
-    Py_XINCREF(py_warningcb);
Lukáš Hrázký 4e70f6
-
Lukáš Hrázký 4e70f6
-    cr_XmlParserNewPkgCb    ptr_c_newpkgcb  = NULL;
Lukáš Hrázký 4e70f6
-    cr_XmlParserPkgCb       ptr_c_pkgcb     = NULL;
Lukáš Hrázký 4e70f6
-    cr_XmlParserWarningCb   ptr_c_warningcb = NULL;
Lukáš Hrázký 4e70f6
-
Lukáš Hrázký 4e70f6
-    if (py_newpkgcb != Py_None)
Lukáš Hrázký 4e70f6
-        ptr_c_newpkgcb = c_newpkgcb;
Lukáš Hrázký 4e70f6
-    if (py_pkgcb != Py_None)
Lukáš Hrázký 4e70f6
-        ptr_c_pkgcb = c_pkgcb;
Lukáš Hrázký 4e70f6
-    if (py_warningcb != Py_None)
Lukáš Hrázký 4e70f6
-        ptr_c_warningcb = c_warningcb;
Lukáš Hrázký 4e70f6
-
Lukáš Hrázký 4e70f6
-    cbdata.py_newpkgcb  = py_newpkgcb;
Lukáš Hrázký 4e70f6
-    cbdata.py_pkgcb     = py_pkgcb;
Lukáš Hrázký 4e70f6
-    cbdata.py_warningcb = py_warningcb;
Lukáš Hrázký 4e70f6
-    cbdata.py_pkgs      = PyDict_New();
Lukáš Hrázký 4e70f6
-
Lukáš Hrázký 4e70f6
-    cr_xml_parse_main_metadata_together(primary_filename,
Lukáš Hrázký 4e70f6
-                                        filelists_filename,
Lukáš Hrázký 4e70f6
-                                        other_filename,
Lukáš Hrázký 4e70f6
-                                        ptr_c_newpkgcb,
Lukáš Hrázký 4e70f6
-                                        &cbdata,
Lukáš Hrázký 4e70f6
-                                        ptr_c_pkgcb,
Lukáš Hrázký 4e70f6
-                                        &cbdata,
Lukáš Hrázký 4e70f6
-                                        ptr_c_warningcb,
Lukáš Hrázký 4e70f6
-                                        &cbdata,
Lukáš Hrázký 4e70f6
-                                        allow_out_of_order,
Lukáš Hrázký 4e70f6
-                                        &tmp_err);
Lukáš Hrázký 4e70f6
-
Lukáš Hrázký 4e70f6
-    Py_XDECREF(py_newpkgcb);
Lukáš Hrázký 4e70f6
-    Py_XDECREF(py_pkgcb);
Lukáš Hrázký 4e70f6
-    Py_XDECREF(py_warningcb);
Lukáš Hrázký 4e70f6
-    Py_XDECREF(cbdata.py_pkgs);
Lukáš Hrázký 4e70f6
-
Lukáš Hrázký 4e70f6
-    if (tmp_err) {
Lukáš Hrázký 4e70f6
-        nice_exception(&tmp_err, NULL);
Lukáš Hrázký 4e70f6
-        return NULL;
Lukáš Hrázký 4e70f6
-    }
Lukáš Hrázký 4e70f6
-
Lukáš Hrázký 4e70f6
-    Py_RETURN_NONE;
Lukáš Hrázký 4e70f6
-}
Lukáš Hrázký 4e70f6
diff --git a/src/python/xml_parser-py.h b/src/python/xml_parser-py.h
Lukáš Hrázký 4e70f6
index 3260005..e5eea9f 100644
Lukáš Hrázký 4e70f6
--- a/src/python/xml_parser-py.h
Lukáš Hrázký 4e70f6
+++ b/src/python/xml_parser-py.h
Lukáš Hrázký 4e70f6
@@ -64,12 +64,4 @@ PyDoc_STRVAR(xml_parse_updateinfo__doc__,
Lukáš Hrázký 4e70f6
 
Lukáš Hrázký 4e70f6
 PyObject *py_xml_parse_updateinfo(PyObject *self, PyObject *args);
Lukáš Hrázký 4e70f6
 
Lukáš Hrázký 4e70f6
-PyDoc_STRVAR(xml_parse_main_metadata_together__doc__,
Lukáš Hrázký 4e70f6
-"xml_parse_main_metadata_together(primary_filename, filelists_filename, other_filename, newpkgcb, pkgcb, warningcb) -> None\n\n"
Lukáš Hrázký 4e70f6
-"Parse primary.xml, filelists.xml and other.xml together at the same time."
Lukáš Hrázký 4e70f6
-"- It can handle if packages are not in the same order in all 3 files but memory requirements grow."
Lukáš Hrázký 4e70f6
-"- It is not guaranteed that newpkgcb is always followed by pkgcb for the given package, it is possible newpkgcb will be called several times for different packages and only after that pkgcbs will be called.");
Lukáš Hrázký 4e70f6
-
Lukáš Hrázký 4e70f6
-PyObject *py_xml_parse_main_metadata_together(PyObject *self, PyObject *args, PyObject *kwargs);
Lukáš Hrázký 4e70f6
-
Lukáš Hrázký 4e70f6
 #endif
Lukáš Hrázký 4e70f6
-- 
Lukáš Hrázký 4e70f6
2.34.3
Lukáš Hrázký 4e70f6