Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-libvirt-python for 
openSUSE:Factory checked in at 2026-04-04 19:05:18
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-libvirt-python (Old)
 and      /work/SRC/openSUSE:Factory/.python-libvirt-python.new.21863 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-libvirt-python"

Sat Apr  4 19:05:18 2026 rev:101 rq:1344220 version:12.2.0

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/python-libvirt-python/python-libvirt-python.changes  
    2026-03-08 17:26:14.413217430 +0100
+++ 
/work/SRC/openSUSE:Factory/.python-libvirt-python.new.21863/python-libvirt-python.changes
   2026-04-04 19:06:34.363047098 +0200
@@ -1,0 +2,7 @@
+Wed Apr  1 20:15:52 UTC 2026 - James Fehlig <[email protected]>
+
+- Update to 12.2.0
+  - Add all new APIs and constants in libvirt 12.2.0
+  - jsc#PED-14623
+
+-------------------------------------------------------------------

Old:
----
  libvirt-python-12.1.0.tar.gz

New:
----
  libvirt-python-12.2.0.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-libvirt-python.spec ++++++
--- /var/tmp/diff_new_pack.4kEdE9/_old  2026-04-04 19:06:35.087076784 +0200
+++ /var/tmp/diff_new_pack.4kEdE9/_new  2026-04-04 19:06:35.087076784 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package python-libvirt-python
 #
-# Copyright (c) 2026 SUSE LLC
+# Copyright (c) 2026 SUSE LLC and contributors
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -24,7 +24,7 @@
 %{?sle15_python_module_pythons}
 Name:           python-libvirt-python
 URL:            https://libvirt.org/
-Version:        12.1.0
+Version:        12.2.0
 Release:        0
 Summary:        Library providing a virtualization API
 License:        LGPL-2.1-or-later

++++++ _service ++++++
--- /var/tmp/diff_new_pack.4kEdE9/_old  2026-04-04 19:06:35.131078588 +0200
+++ /var/tmp/diff_new_pack.4kEdE9/_new  2026-04-04 19:06:35.135078752 +0200
@@ -1,7 +1,7 @@
 <services>
   <service name="tar_scm" mode="manual">
     <param name="filename">libvirt-python</param>
-    <param name="revision">v12.1.0</param>
+    <param name="revision">v12.2.0</param>
     <param name="scm">git</param>
     <param name="submodules">disable</param>
     <param name="url">https://gitlab.com/libvirt/libvirt-python.git</param>

++++++ libvirt-python-12.1.0.tar.gz -> libvirt-python-12.2.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libvirt-python-12.1.0/VERSION 
new/libvirt-python-12.2.0/VERSION
--- old/libvirt-python-12.1.0/VERSION   2026-01-29 10:31:10.000000000 +0100
+++ new/libvirt-python-12.2.0/VERSION   2026-03-25 21:55:34.000000000 +0100
@@ -1 +1 @@
-12.1.0
+12.2.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libvirt-python-12.1.0/ci/buildenv/centos-stream-10.sh 
new/libvirt-python-12.2.0/ci/buildenv/centos-stream-10.sh
--- old/libvirt-python-12.1.0/ci/buildenv/centos-stream-10.sh   1970-01-01 
01:00:00.000000000 +0100
+++ new/libvirt-python-12.2.0/ci/buildenv/centos-stream-10.sh   2026-03-25 
21:55:34.000000000 +0100
@@ -0,0 +1,38 @@
+# THIS FILE WAS AUTO-GENERATED
+#
+#  $ lcitool manifest ci/manifest.yml
+#
+# https://gitlab.com/libvirt/libvirt-ci
+
+function install_buildenv() {
+    dnf --quiet distro-sync -y
+    dnf --quiet install 'dnf-command(config-manager)' -y
+    dnf --quiet config-manager --set-enabled -y crb
+    dnf --quiet install -y epel-release
+    dnf --quiet install -y \
+                ca-certificates \
+                ccache \
+                gcc \
+                git \
+                glibc-langpack-en \
+                libvirt-devel \
+                pkgconfig \
+                python3 \
+                python3-build \
+                python3-devel \
+                python3-lxml \
+                python3-pip \
+                python3-pytest \
+                python3-setuptools \
+                python3-wheel \
+                rpm-build
+    rm -f /usr/lib*/python3*/EXTERNALLY-MANAGED
+    rpm -qa | sort > /packages.txt
+    mkdir -p /usr/libexec/ccache-wrappers
+    ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc
+    ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc
+}
+
+export CCACHE_WRAPPERSDIR="/usr/libexec/ccache-wrappers"
+export LANG="en_US.UTF-8"
+export PYTHON="/usr/bin/python3"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libvirt-python-12.1.0/ci/buildenv/centos-stream-9.sh 
new/libvirt-python-12.2.0/ci/buildenv/centos-stream-9.sh
--- old/libvirt-python-12.1.0/ci/buildenv/centos-stream-9.sh    2026-01-29 
10:31:10.000000000 +0100
+++ new/libvirt-python-12.2.0/ci/buildenv/centos-stream-9.sh    2026-03-25 
21:55:34.000000000 +0100
@@ -5,43 +5,43 @@
 # https://gitlab.com/libvirt/libvirt-ci
 
 function install_buildenv() {
-    dnf distro-sync -y
-    dnf install 'dnf-command(config-manager)' -y
-    dnf config-manager --set-enabled -y crb
-    dnf install -y epel-release
-    dnf install -y epel-next-release
-    dnf install -y \
-        ca-certificates \
-        ccache \
-        cpp \
-        gcc \
-        gettext \
-        git \
-        glib2-devel \
-        glibc-devel \
-        glibc-langpack-en \
-        gnutls-devel \
-        libnl3-devel \
-        libtirpc-devel \
-        libvirt-devel \
-        libxml2 \
-        libxml2-devel \
-        libxslt \
-        make \
-        meson \
-        ninja-build \
-        perl-base \
-        pkgconfig \
-        python3 \
-        python3-build \
-        python3-devel \
-        python3-docutils \
-        python3-lxml \
-        python3-pip \
-        python3-pytest \
-        python3-setuptools \
-        python3-wheel \
-        rpm-build
+    dnf --quiet distro-sync -y
+    dnf --quiet install 'dnf-command(config-manager)' -y
+    dnf --quiet config-manager --set-enabled -y crb
+    dnf --quiet install -y epel-release
+    dnf --quiet install -y epel-next-release
+    dnf --quiet install -y \
+                ca-certificates \
+                ccache \
+                cpp \
+                gcc \
+                gettext \
+                git \
+                glib2-devel \
+                glibc-devel \
+                glibc-langpack-en \
+                gnutls-devel \
+                libnl3-devel \
+                libtirpc-devel \
+                libvirt-devel \
+                libxml2 \
+                libxml2-devel \
+                libxslt \
+                make \
+                meson \
+                ninja-build \
+                perl-base \
+                pkgconfig \
+                python3 \
+                python3-build \
+                python3-devel \
+                python3-docutils \
+                python3-lxml \
+                python3-pip \
+                python3-pytest \
+                python3-setuptools \
+                python3-wheel \
+                rpm-build
     rm -f /usr/lib*/python3*/EXTERNALLY-MANAGED
     rpm -qa | sort > /packages.txt
     mkdir -p /usr/libexec/ccache-wrappers
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libvirt-python-12.1.0/ci/buildenv/fedora-42.sh 
new/libvirt-python-12.2.0/ci/buildenv/fedora-42.sh
--- old/libvirt-python-12.1.0/ci/buildenv/fedora-42.sh  2026-01-29 
10:31:10.000000000 +0100
+++ new/libvirt-python-12.2.0/ci/buildenv/fedora-42.sh  2026-03-25 
21:55:34.000000000 +0100
@@ -5,24 +5,24 @@
 # https://gitlab.com/libvirt/libvirt-ci
 
 function install_buildenv() {
-    dnf update -y
-    dnf install -y \
-        ca-certificates \
-        ccache \
-        gcc \
-        git \
-        glibc-langpack-en \
-        libvirt-devel \
-        pkgconfig \
-        python3 \
-        python3-build \
-        python3-devel \
-        python3-lxml \
-        python3-pip \
-        python3-pytest \
-        python3-setuptools \
-        python3-wheel \
-        rpm-build
+    dnf --quiet update -y
+    dnf --quiet install -y \
+                ca-certificates \
+                ccache \
+                gcc \
+                git \
+                glibc-langpack-en \
+                libvirt-devel \
+                pkgconfig \
+                python3 \
+                python3-build \
+                python3-devel \
+                python3-lxml \
+                python3-pip \
+                python3-pytest \
+                python3-setuptools \
+                python3-wheel \
+                rpm-build
     rm -f /usr/lib*/python3*/EXTERNALLY-MANAGED
     rpm -qa | sort > /packages.txt
     mkdir -p /usr/libexec/ccache-wrappers
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libvirt-python-12.1.0/ci/buildenv/fedora-43.sh 
new/libvirt-python-12.2.0/ci/buildenv/fedora-43.sh
--- old/libvirt-python-12.1.0/ci/buildenv/fedora-43.sh  2026-01-29 
10:31:10.000000000 +0100
+++ new/libvirt-python-12.2.0/ci/buildenv/fedora-43.sh  2026-03-25 
21:55:34.000000000 +0100
@@ -5,24 +5,24 @@
 # https://gitlab.com/libvirt/libvirt-ci
 
 function install_buildenv() {
-    dnf update -y
-    dnf install -y \
-        ca-certificates \
-        ccache \
-        gcc \
-        git \
-        glibc-langpack-en \
-        libvirt-devel \
-        pkgconfig \
-        python3 \
-        python3-build \
-        python3-devel \
-        python3-lxml \
-        python3-pip \
-        python3-pytest \
-        python3-setuptools \
-        python3-wheel \
-        rpm-build
+    dnf --quiet update -y
+    dnf --quiet install -y \
+                ca-certificates \
+                ccache \
+                gcc \
+                git \
+                glibc-langpack-en \
+                libvirt-devel \
+                pkgconfig \
+                python3 \
+                python3-build \
+                python3-devel \
+                python3-lxml \
+                python3-pip \
+                python3-pytest \
+                python3-setuptools \
+                python3-wheel \
+                rpm-build
     rm -f /usr/lib*/python3*/EXTERNALLY-MANAGED
     rpm -qa | sort > /packages.txt
     mkdir -p /usr/libexec/ccache-wrappers
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libvirt-python-12.1.0/ci/buildenv/fedora-rawhide.sh 
new/libvirt-python-12.2.0/ci/buildenv/fedora-rawhide.sh
--- old/libvirt-python-12.1.0/ci/buildenv/fedora-rawhide.sh     2026-01-29 
10:31:10.000000000 +0100
+++ new/libvirt-python-12.2.0/ci/buildenv/fedora-rawhide.sh     2026-03-25 
21:55:34.000000000 +0100
@@ -5,25 +5,25 @@
 # https://gitlab.com/libvirt/libvirt-ci
 
 function install_buildenv() {
-    dnf update -y --nogpgcheck fedora-gpg-keys
-    dnf distro-sync -y
-    dnf install -y \
-        ca-certificates \
-        ccache \
-        gcc \
-        git \
-        glibc-langpack-en \
-        libvirt-devel \
-        pkgconfig \
-        python3 \
-        python3-build \
-        python3-devel \
-        python3-lxml \
-        python3-pip \
-        python3-pytest \
-        python3-setuptools \
-        python3-wheel \
-        rpm-build
+    dnf --quiet update -y --nogpgcheck fedora-gpg-keys
+    dnf --quiet distro-sync -y
+    dnf --quiet install -y \
+                ca-certificates \
+                ccache \
+                gcc \
+                git \
+                glibc-langpack-en \
+                libvirt-devel \
+                pkgconfig \
+                python3 \
+                python3-build \
+                python3-devel \
+                python3-lxml \
+                python3-pip \
+                python3-pytest \
+                python3-setuptools \
+                python3-wheel \
+                rpm-build
     rm -f /usr/lib*/python3*/EXTERNALLY-MANAGED
     rpm -qa | sort > /packages.txt
     mkdir -p /usr/libexec/ccache-wrappers
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libvirt-python-12.1.0/ci/containers/centos-stream-10.Dockerfile 
new/libvirt-python-12.2.0/ci/containers/centos-stream-10.Dockerfile
--- old/libvirt-python-12.1.0/ci/containers/centos-stream-10.Dockerfile 
1970-01-01 01:00:00.000000000 +0100
+++ new/libvirt-python-12.2.0/ci/containers/centos-stream-10.Dockerfile 
2026-03-25 21:55:34.000000000 +0100
@@ -0,0 +1,40 @@
+# THIS FILE WAS AUTO-GENERATED
+#
+#  $ lcitool manifest ci/manifest.yml
+#
+# https://gitlab.com/libvirt/libvirt-ci
+
+FROM quay.io/centos/centos:stream10
+
+RUN dnf --quiet distro-sync -y && \
+    dnf --quiet install 'dnf-command(config-manager)' -y && \
+    dnf --quiet config-manager --set-enabled -y crb && \
+    dnf --quiet install -y epel-release && \
+    dnf --quiet install -y \
+                ca-certificates \
+                ccache \
+                gcc \
+                git \
+                glibc-langpack-en \
+                libvirt-devel \
+                pkgconfig \
+                python3 \
+                python3-build \
+                python3-devel \
+                python3-lxml \
+                python3-pip \
+                python3-pytest \
+                python3-setuptools \
+                python3-wheel \
+                rpm-build && \
+    dnf --quiet autoremove -y && \
+    dnf --quiet clean all -y && \
+    rm -f /usr/lib*/python3*/EXTERNALLY-MANAGED && \
+    rpm -qa | sort > /packages.txt && \
+    mkdir -p /usr/libexec/ccache-wrappers && \
+    ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc && \
+    ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc
+
+ENV CCACHE_WRAPPERSDIR="/usr/libexec/ccache-wrappers"
+ENV LANG="en_US.UTF-8"
+ENV PYTHON="/usr/bin/python3"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libvirt-python-12.1.0/ci/containers/centos-stream-9.Dockerfile 
new/libvirt-python-12.2.0/ci/containers/centos-stream-9.Dockerfile
--- old/libvirt-python-12.1.0/ci/containers/centos-stream-9.Dockerfile  
2026-01-29 10:31:10.000000000 +0100
+++ new/libvirt-python-12.2.0/ci/containers/centos-stream-9.Dockerfile  
2026-03-25 21:55:34.000000000 +0100
@@ -6,45 +6,45 @@
 
 FROM quay.io/centos/centos:stream9
 
-RUN dnf distro-sync -y && \
-    dnf install 'dnf-command(config-manager)' -y && \
-    dnf config-manager --set-enabled -y crb && \
-    dnf install -y epel-release && \
-    dnf install -y epel-next-release && \
-    dnf install -y \
-        ca-certificates \
-        ccache \
-        cpp \
-        gcc \
-        gettext \
-        git \
-        glib2-devel \
-        glibc-devel \
-        glibc-langpack-en \
-        gnutls-devel \
-        libnl3-devel \
-        libtirpc-devel \
-        libvirt-devel \
-        libxml2 \
-        libxml2-devel \
-        libxslt \
-        make \
-        meson \
-        ninja-build \
-        perl-base \
-        pkgconfig \
-        python3 \
-        python3-build \
-        python3-devel \
-        python3-docutils \
-        python3-lxml \
-        python3-pip \
-        python3-pytest \
-        python3-setuptools \
-        python3-wheel \
-        rpm-build && \
-    dnf autoremove -y && \
-    dnf clean all -y && \
+RUN dnf --quiet distro-sync -y && \
+    dnf --quiet install 'dnf-command(config-manager)' -y && \
+    dnf --quiet config-manager --set-enabled -y crb && \
+    dnf --quiet install -y epel-release && \
+    dnf --quiet install -y epel-next-release && \
+    dnf --quiet install -y \
+                ca-certificates \
+                ccache \
+                cpp \
+                gcc \
+                gettext \
+                git \
+                glib2-devel \
+                glibc-devel \
+                glibc-langpack-en \
+                gnutls-devel \
+                libnl3-devel \
+                libtirpc-devel \
+                libvirt-devel \
+                libxml2 \
+                libxml2-devel \
+                libxslt \
+                make \
+                meson \
+                ninja-build \
+                perl-base \
+                pkgconfig \
+                python3 \
+                python3-build \
+                python3-devel \
+                python3-docutils \
+                python3-lxml \
+                python3-pip \
+                python3-pytest \
+                python3-setuptools \
+                python3-wheel \
+                rpm-build && \
+    dnf --quiet autoremove -y && \
+    dnf --quiet clean all -y && \
     rm -f /usr/lib*/python3*/EXTERNALLY-MANAGED && \
     rpm -qa | sort > /packages.txt && \
     mkdir -p /usr/libexec/ccache-wrappers && \
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libvirt-python-12.1.0/ci/containers/fedora-42.Dockerfile 
new/libvirt-python-12.2.0/ci/containers/fedora-42.Dockerfile
--- old/libvirt-python-12.1.0/ci/containers/fedora-42.Dockerfile        
2026-01-29 10:31:10.000000000 +0100
+++ new/libvirt-python-12.2.0/ci/containers/fedora-42.Dockerfile        
2026-03-25 21:55:34.000000000 +0100
@@ -6,7 +6,7 @@
 
 FROM registry.fedoraproject.org/fedora:42
 
-RUN dnf install -y nosync && \
+RUN dnf --quiet install -y nosync && \
     printf '#!/bin/sh\n\
 if test -d /usr/lib64\n\
 then\n\
@@ -16,26 +16,26 @@
 fi\n\
 exec "$@"\n' > /usr/bin/nosync && \
     chmod +x /usr/bin/nosync && \
-    nosync dnf update -y && \
-    nosync dnf install -y \
-               ca-certificates \
-               ccache \
-               gcc \
-               git \
-               glibc-langpack-en \
-               libvirt-devel \
-               pkgconfig \
-               python3 \
-               python3-build \
-               python3-devel \
-               python3-lxml \
-               python3-pip \
-               python3-pytest \
-               python3-setuptools \
-               python3-wheel \
-               rpm-build && \
-    nosync dnf autoremove -y && \
-    nosync dnf clean all -y && \
+    nosync dnf --quiet update -y && \
+    nosync dnf --quiet install -y \
+                       ca-certificates \
+                       ccache \
+                       gcc \
+                       git \
+                       glibc-langpack-en \
+                       libvirt-devel \
+                       pkgconfig \
+                       python3 \
+                       python3-build \
+                       python3-devel \
+                       python3-lxml \
+                       python3-pip \
+                       python3-pytest \
+                       python3-setuptools \
+                       python3-wheel \
+                       rpm-build && \
+    nosync dnf --quiet autoremove -y && \
+    nosync dnf --quiet clean all -y && \
     rm -f /usr/lib*/python3*/EXTERNALLY-MANAGED && \
     rpm -qa | sort > /packages.txt && \
     mkdir -p /usr/libexec/ccache-wrappers && \
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libvirt-python-12.1.0/ci/containers/fedora-43.Dockerfile 
new/libvirt-python-12.2.0/ci/containers/fedora-43.Dockerfile
--- old/libvirt-python-12.1.0/ci/containers/fedora-43.Dockerfile        
2026-01-29 10:31:10.000000000 +0100
+++ new/libvirt-python-12.2.0/ci/containers/fedora-43.Dockerfile        
2026-03-25 21:55:34.000000000 +0100
@@ -6,7 +6,7 @@
 
 FROM registry.fedoraproject.org/fedora:43
 
-RUN dnf install -y nosync && \
+RUN dnf --quiet install -y nosync && \
     printf '#!/bin/sh\n\
 if test -d /usr/lib64\n\
 then\n\
@@ -16,26 +16,26 @@
 fi\n\
 exec "$@"\n' > /usr/bin/nosync && \
     chmod +x /usr/bin/nosync && \
-    nosync dnf update -y && \
-    nosync dnf install -y \
-               ca-certificates \
-               ccache \
-               gcc \
-               git \
-               glibc-langpack-en \
-               libvirt-devel \
-               pkgconfig \
-               python3 \
-               python3-build \
-               python3-devel \
-               python3-lxml \
-               python3-pip \
-               python3-pytest \
-               python3-setuptools \
-               python3-wheel \
-               rpm-build && \
-    nosync dnf autoremove -y && \
-    nosync dnf clean all -y && \
+    nosync dnf --quiet update -y && \
+    nosync dnf --quiet install -y \
+                       ca-certificates \
+                       ccache \
+                       gcc \
+                       git \
+                       glibc-langpack-en \
+                       libvirt-devel \
+                       pkgconfig \
+                       python3 \
+                       python3-build \
+                       python3-devel \
+                       python3-lxml \
+                       python3-pip \
+                       python3-pytest \
+                       python3-setuptools \
+                       python3-wheel \
+                       rpm-build && \
+    nosync dnf --quiet autoremove -y && \
+    nosync dnf --quiet clean all -y && \
     rm -f /usr/lib*/python3*/EXTERNALLY-MANAGED && \
     rpm -qa | sort > /packages.txt && \
     mkdir -p /usr/libexec/ccache-wrappers && \
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libvirt-python-12.1.0/ci/containers/fedora-rawhide.Dockerfile 
new/libvirt-python-12.2.0/ci/containers/fedora-rawhide.Dockerfile
--- old/libvirt-python-12.1.0/ci/containers/fedora-rawhide.Dockerfile   
2026-01-29 10:31:10.000000000 +0100
+++ new/libvirt-python-12.2.0/ci/containers/fedora-rawhide.Dockerfile   
2026-03-25 21:55:34.000000000 +0100
@@ -6,8 +6,8 @@
 
 FROM registry.fedoraproject.org/fedora:rawhide
 
-RUN dnf update -y --nogpgcheck fedora-gpg-keys && \
-    dnf install -y nosync && \
+RUN dnf --quiet update -y --nogpgcheck fedora-gpg-keys && \
+    dnf --quiet install -y nosync && \
     printf '#!/bin/sh\n\
 if test -d /usr/lib64\n\
 then\n\
@@ -17,26 +17,26 @@
 fi\n\
 exec "$@"\n' > /usr/bin/nosync && \
     chmod +x /usr/bin/nosync && \
-    nosync dnf distro-sync -y && \
-    nosync dnf install -y \
-               ca-certificates \
-               ccache \
-               gcc \
-               git \
-               glibc-langpack-en \
-               libvirt-devel \
-               pkgconfig \
-               python3 \
-               python3-build \
-               python3-devel \
-               python3-lxml \
-               python3-pip \
-               python3-pytest \
-               python3-setuptools \
-               python3-wheel \
-               rpm-build && \
-    nosync dnf autoremove -y && \
-    nosync dnf clean all -y && \
+    nosync dnf --quiet distro-sync -y && \
+    nosync dnf --quiet install -y \
+                       ca-certificates \
+                       ccache \
+                       gcc \
+                       git \
+                       glibc-langpack-en \
+                       libvirt-devel \
+                       pkgconfig \
+                       python3 \
+                       python3-build \
+                       python3-devel \
+                       python3-lxml \
+                       python3-pip \
+                       python3-pytest \
+                       python3-setuptools \
+                       python3-wheel \
+                       rpm-build && \
+    nosync dnf --quiet autoremove -y && \
+    nosync dnf --quiet clean all -y && \
     rm -f /usr/lib*/python3*/EXTERNALLY-MANAGED && \
     rpm -qa | sort > /packages.txt && \
     mkdir -p /usr/libexec/ccache-wrappers && \
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libvirt-python-12.1.0/ci/gitlab/build-templates.yml 
new/libvirt-python-12.2.0/ci/gitlab/build-templates.yml
--- old/libvirt-python-12.1.0/ci/gitlab/build-templates.yml     2026-01-29 
10:31:10.000000000 +0100
+++ new/libvirt-python-12.2.0/ci/gitlab/build-templates.yml     2026-03-25 
21:55:34.000000000 +0100
@@ -32,8 +32,9 @@
       then
         source ci/buildenv/$NAME.sh ;
         install_buildenv ;
+      else
+        cat /packages.txt ;
       fi
-    - cat /packages.txt
   variables:
     IMAGE: 
$CI_REGISTRY/$CONTAINER_UPSTREAM_NAMESPACE/libvirt-python/ci-$NAME:latest
   rules:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libvirt-python-12.1.0/ci/gitlab/builds.yml 
new/libvirt-python-12.2.0/ci/gitlab/builds.yml
--- old/libvirt-python-12.1.0/ci/gitlab/builds.yml      2026-01-29 
10:31:10.000000000 +0100
+++ new/libvirt-python-12.2.0/ci/gitlab/builds.yml      2026-03-25 
21:55:34.000000000 +0100
@@ -38,6 +38,21 @@
       - dist
 
 
+x86_64-centos-stream-10:
+  extends: .native_build_job
+  needs:
+    - job: x86_64-centos-stream-10-container
+      optional: true
+  allow_failure: false
+  variables:
+    NAME: centos-stream-10
+    TARGET_BASE_IMAGE: quay.io/centos/centos:stream10
+  artifacts:
+    expire_in: 1 hour
+    paths:
+      - libvirt-python-rpms
+
+
 x86_64-debian-12:
   extends: .native_build_job
   needs:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libvirt-python-12.1.0/ci/gitlab/containers.yml 
new/libvirt-python-12.2.0/ci/gitlab/containers.yml
--- old/libvirt-python-12.1.0/ci/gitlab/containers.yml  2026-01-29 
10:31:10.000000000 +0100
+++ new/libvirt-python-12.2.0/ci/gitlab/containers.yml  2026-03-25 
21:55:34.000000000 +0100
@@ -14,6 +14,13 @@
     NAME: centos-stream-9
 
 
+x86_64-centos-stream-10-container:
+  extends: .container_job
+  allow_failure: false
+  variables:
+    NAME: centos-stream-10
+
+
 x86_64-debian-12-container:
   extends: .container_job
   allow_failure: false
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libvirt-python-12.1.0/ci/manifest.yml 
new/libvirt-python-12.2.0/ci/manifest.yml
--- old/libvirt-python-12.1.0/ci/manifest.yml   2026-01-29 10:31:10.000000000 
+0100
+++ new/libvirt-python-12.2.0/ci/manifest.yml   2026-03-25 21:55:34.000000000 
+0100
@@ -30,6 +30,13 @@
             - scratch
             - dist
 
+  centos-stream-10:
+    jobs:
+      - arch: x86_64
+        artifacts:
+          expire_in: 1 hour
+          paths:
+            - libvirt-python-rpms
 
   debian-12: x86_64
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libvirt-python-12.1.0/generator.py 
new/libvirt-python-12.2.0/generator.py
--- old/libvirt-python-12.1.0/generator.py      2026-01-29 10:31:10.000000000 
+0100
+++ new/libvirt-python-12.2.0/generator.py      2026-03-25 21:55:34.000000000 
+0100
@@ -230,75 +230,96 @@
 #######################################################################
 
 py_types = {
-    'void': ('', '', '', ''),
-    'int': ('i', '', "int", "int"),
-    'long': ('l', '', "long", "long"),
-    'double': ('d', '', "double", "double"),
-    'unsigned int': ('I', '', "int", "int"),
-    'unsigned long': ('l', '', "long", "long"),
-    'long long': ('L', '', "longlong", "long long"),
-    'unsigned long long': ('L', '', "longlong", "long long"),
-    'unsigned char *': ('z', '', "charPtr", "char *"),
-    'char *': ('z', '', "charPtr", "char *"),
-    'const char *': ('z', '', "constcharPtr", "const char *"),
-    'size_t': ('n', '', "size_t", "size_t"),
-
-    'virDomainPtr': ('O', "virDomain", "virDomainPtr", "virDomainPtr"),
-    'virDomain *': ('O', "virDomain", "virDomainPtr", "virDomainPtr"),
-    'const virDomain *': ('O', "virDomain", "virDomainPtr", "virDomainPtr"),
-
-    'virNetworkPtr': ('O', "virNetwork", "virNetworkPtr", "virNetworkPtr"),
-    'virNetwork *': ('O', "virNetwork", "virNetworkPtr", "virNetworkPtr"),
-    'const virNetwork *': ('O', "virNetwork", "virNetworkPtr", 
"virNetworkPtr"),
-
-    'virNetworkPortPtr': ('O', "virNetworkPort", "virNetworkPortPtr", 
"virNetworkPortPtr"),
-    'virNetworkPort *': ('O', "virNetworkPort", "virNetworkPortPtr", 
"virNetworkPortPtr"),
-    'const virNetworkPort *': ('O', "virNetworkPort", "virNetworkPortPtr", 
"virNetworkPortPtr"),
-
-    'virInterfacePtr': ('O', "virInterface", "virInterfacePtr", 
"virInterfacePtr"),
-    'virInterface *': ('O', "virInterface", "virInterfacePtr", 
"virInterfacePtr"),
-    'const virInterface *': ('O', "virInterface", "virInterfacePtr", 
"virInterfacePtr"),
-
-    'virStoragePoolPtr': ('O', "virStoragePool", "virStoragePoolPtr", 
"virStoragePoolPtr"),
-    'virStoragePool *': ('O', "virStoragePool", "virStoragePoolPtr", 
"virStoragePoolPtr"),
-    'const virStoragePool *': ('O', "virStoragePool", "virStoragePoolPtr", 
"virStoragePoolPtr"),
-
-    'virStorageVolPtr': ('O', "virStorageVol", "virStorageVolPtr", 
"virStorageVolPtr"),
-    'virStorageVol *': ('O', "virStorageVol", "virStorageVolPtr", 
"virStorageVolPtr"),
-    'const virStorageVol *': ('O', "virStorageVol", "virStorageVolPtr", 
"virStorageVolPtr"),
-
-    'virConnectPtr': ('O', "virConnect", "virConnectPtr", "virConnectPtr"),
-    'virConnect *': ('O', "virConnect", "virConnectPtr", "virConnectPtr"),
-    'const virConnect *': ('O', "virConnect", "virConnectPtr", 
"virConnectPtr"),
-
-    'virNodeDevicePtr': ('O', "virNodeDevice", "virNodeDevicePtr", 
"virNodeDevicePtr"),
-    'virNodeDevice *': ('O', "virNodeDevice", "virNodeDevicePtr", 
"virNodeDevicePtr"),
-    'const virNodeDevice *': ('O', "virNodeDevice", "virNodeDevicePtr", 
"virNodeDevicePtr"),
-
-    'virSecretPtr': ('O', "virSecret", "virSecretPtr", "virSecretPtr"),
-    'virSecret *': ('O', "virSecret", "virSecretPtr", "virSecretPtr"),
-    'const virSecret *': ('O', "virSecret", "virSecretPtr", "virSecretPtr"),
-
-    'virNWFilterPtr': ('O', "virNWFilter", "virNWFilterPtr", "virNWFilterPtr"),
-    'virNWFilter *': ('O', "virNWFilter", "virNWFilterPtr", "virNWFilterPtr"),
-    'const virNWFilter *': ('O', "virNWFilter", "virNWFilterPtr", 
"virNWFilterPtr"),
-
-    'virNWFilterBindingPtr': ('O', "virNWFilterBinding", 
"virNWFilterBindingPtr", "virNWFilterBindingPtr"),
-    'virNWFilterBinding *': ('O', "virNWFilterBinding", 
"virNWFilterBindingPtr", "virNWFilterBindingPtr"),
-    'const virNWFilterBinding *': ('O', "virNWFilterBinding", 
"virNWFilterBindingPtr", "virNWFilterBindingPtr"),
-
-    'virStreamPtr': ('O', "virStream", "virStreamPtr", "virStreamPtr"),
-    'virStream *': ('O', "virStream", "virStreamPtr", "virStreamPtr"),
-    'const virStream *': ('O', "virStream", "virStreamPtr", "virStreamPtr"),
-
-    'virDomainCheckpointPtr': ('O', "virDomainCheckpoint", 
"virDomainCheckpointPtr", "virDomainCheckpointPtr"),
-    'virDomainCheckpoint *': ('O', "virDomainCheckpoint", 
"virDomainCheckpointPtr", "virDomainCheckpointPtr"),
-    'const virDomainCheckpoint *': ('O', "virDomainCheckpoint", 
"virDomainCheckpointPtr", "virDomainCheckpointPtr"),
-
-    'virDomainSnapshotPtr': ('O', "virDomainSnapshot", "virDomainSnapshotPtr", 
"virDomainSnapshotPtr"),
-    'virDomainSnapshot *': ('O', "virDomainSnapshot", "virDomainSnapshotPtr", 
"virDomainSnapshotPtr"),
-    'const virDomainSnapshot *': ('O', "virDomainSnapshot", 
"virDomainSnapshotPtr", "virDomainSnapshotPtr"),
-}  # type: Dict[str, Tuple[str, str, str, str]]
+    'void': ('', '', '', '', 'None'),
+    'int': ('i', '', "int", "int", "int"),
+    'long': ('l', '', "long", "long", "int"),
+    'double': ('d', '', "double", "double", "float"),
+    'unsigned int': ('I', '', "int", "int", "int"),
+    'unsigned long': ('l', '', "long", "long", "int"),
+    'long long': ('L', '', "longlong", "long long", "int"),
+    'unsigned long long': ('L', '', "longlong", "long long", "int"),
+    'unsigned char *': ('z', '', "charPtr", "char *", "str"),
+    'char *': ('z', '', "charPtr", "char *", "str"),
+    'const char *': ('z', '', "constcharPtr", "const char *", "str"),
+    'size_t': ('n', '', "size_t", "size_t", "int"),
+
+    'virDomainPtr': ('O', "virDomain", "virDomainPtr", "virDomainPtr", 
"virDomain"),
+    'virDomain *': ('O', "virDomain", "virDomainPtr", "virDomainPtr", 
"virDomain"),
+    'const virDomain *': ('O', "virDomain", "virDomainPtr", "virDomainPtr", 
"virDomain"),
+
+    'virNetworkPtr': ('O', "virNetwork", "virNetworkPtr", "virNetworkPtr", 
"virNetwork"),
+    'virNetwork *': ('O', "virNetwork", "virNetworkPtr", "virNetworkPtr", 
"virNetwork"),
+    'const virNetwork *': ('O', "virNetwork", "virNetworkPtr", 
"virNetworkPtr", "virNetwork"),
+
+    'virNetworkPortPtr': ('O', "virNetworkPort", "virNetworkPortPtr", 
"virNetworkPortPtr", "virNetworkPort"),
+    'virNetworkPort *': ('O', "virNetworkPort", "virNetworkPortPtr", 
"virNetworkPortPtr", "virNetworkPort"),
+    'const virNetworkPort *': ('O', "virNetworkPort", "virNetworkPortPtr", 
"virNetworkPortPtr", "virNetworkPort"),
+
+    'virInterfacePtr': ('O', "virInterface", "virInterfacePtr", 
"virInterfacePtr", "virInterface"),
+    'virInterface *': ('O', "virInterface", "virInterfacePtr", 
"virInterfacePtr", "virInterface"),
+    'const virInterface *': ('O', "virInterface", "virInterfacePtr", 
"virInterfacePtr", "virInterface"),
+
+    'virStoragePoolPtr': ('O', "virStoragePool", "virStoragePoolPtr", 
"virStoragePoolPtr", "virStoragePool"),
+    'virStoragePool *': ('O', "virStoragePool", "virStoragePoolPtr", 
"virStoragePoolPtr", "virStoragePool"),
+    'const virStoragePool *': ('O', "virStoragePool", "virStoragePoolPtr", 
"virStoragePoolPtr", "virStoragePool"),
+
+    'virStorageVolPtr': ('O', "virStorageVol", "virStorageVolPtr", 
"virStorageVolPtr", "virStorageVol"),
+    'virStorageVol *': ('O', "virStorageVol", "virStorageVolPtr", 
"virStorageVolPtr", "virStorageVol"),
+    'const virStorageVol *': ('O', "virStorageVol", "virStorageVolPtr", 
"virStorageVolPtr", "virStorageVol"),
+
+    'virConnectPtr': ('O', "virConnect", "virConnectPtr", "virConnectPtr", 
"virConnect"),
+    'virConnect *': ('O', "virConnect", "virConnectPtr", "virConnectPtr", 
"virConnect"),
+    'const virConnect *': ('O', "virConnect", "virConnectPtr", 
"virConnectPtr", "virConnect"),
+
+    'virNodeDevicePtr': ('O', "virNodeDevice", "virNodeDevicePtr", 
"virNodeDevicePtr", "virNodeDevice"),
+    'virNodeDevice *': ('O', "virNodeDevice", "virNodeDevicePtr", 
"virNodeDevicePtr", "virNodeDevice"),
+    'const virNodeDevice *': ('O', "virNodeDevice", "virNodeDevicePtr", 
"virNodeDevicePtr", "virNodeDevice"),
+
+    'virSecretPtr': ('O', "virSecret", "virSecretPtr", "virSecretPtr", 
"virSecret"),
+    'virSecret *': ('O', "virSecret", "virSecretPtr", "virSecretPtr", 
"virSecret"),
+    'const virSecret *': ('O', "virSecret", "virSecretPtr", "virSecretPtr", 
"virSecret"),
+
+    'virNWFilterPtr': ('O', "virNWFilter", "virNWFilterPtr", "virNWFilterPtr", 
"virNWFilter"),
+    'virNWFilter *': ('O', "virNWFilter", "virNWFilterPtr", "virNWFilterPtr", 
"virNWFilter"),
+    'const virNWFilter *': ('O', "virNWFilter", "virNWFilterPtr", 
"virNWFilterPtr", "virNWFilter"),
+
+    'virNWFilterBindingPtr': ('O', "virNWFilterBinding", 
"virNWFilterBindingPtr", "virNWFilterBindingPtr", "virNWFilterBinding"),
+    'virNWFilterBinding *': ('O', "virNWFilterBinding", 
"virNWFilterBindingPtr", "virNWFilterBindingPtr", "virNWFilterBinding"),
+    'const virNWFilterBinding *': ('O', "virNWFilterBinding", 
"virNWFilterBindingPtr", "virNWFilterBindingPtr", "virNWFilterBinding"),
+
+    'virStreamPtr': ('O', "virStream", "virStreamPtr", "virStreamPtr", 
"virStream"),
+    'virStream *': ('O', "virStream", "virStreamPtr", "virStreamPtr", 
"virStream"),
+    'const virStream *': ('O', "virStream", "virStreamPtr", "virStreamPtr", 
"virStream"),
+
+    'virDomainCheckpointPtr': ('O', "virDomainCheckpoint", 
"virDomainCheckpointPtr", "virDomainCheckpointPtr", "virDomainCheckpoint"),
+    'virDomainCheckpoint *': ('O', "virDomainCheckpoint", 
"virDomainCheckpointPtr", "virDomainCheckpointPtr", "virDomainCheckpoint"),
+    'const virDomainCheckpoint *': ('O', "virDomainCheckpoint", 
"virDomainCheckpointPtr", "virDomainCheckpointPtr", "virDomainCheckpoint"),
+
+    'virDomainSnapshotPtr': ('O', "virDomainSnapshot", "virDomainSnapshotPtr", 
"virDomainSnapshotPtr", "virDomainSnapshot"),
+    'virDomainSnapshot *': ('O', "virDomainSnapshot", "virDomainSnapshotPtr", 
"virDomainSnapshotPtr", "virDomainSnapshot"),
+    'const virDomainSnapshot *': ('O', "virDomainSnapshot", 
"virDomainSnapshotPtr", "virDomainSnapshotPtr", "virDomainSnapshot"),
+}  # type: Dict[str, Tuple[str, str, str, str, str]]
+
+
+# These C types are used only in generated Python code, so don't need the
+# C-supporting elements from py_types.
+py_types_only = {
+    'bool': "bool",
+    'const unsigned char *': "str",
+    'const char **': "List[str]",
+    'unsigned int *': "List[int]",
+    'virErrorPtr': "_RawError",
+    'virEventAddHandleFunc': "_EventAddHandleFunc[_T]",
+    'virEventUpdateHandleFunc': "_EventUpdateHandleFunc",
+    'virEventRemoveHandleFunc': "_EventRemoveHandleFunc",
+    'virEventAddTimeoutFunc': "_EventAddTimeoutFunc[_T]",
+    'virEventUpdateTimeoutFunc': "_EventUpdateTimeoutFunc",
+    'virEventRemoveTimeoutFunc': "_EventRemoveTimeoutFunc",
+    'virBlkioParameterPtr': "_BlkioParameter",
+    'virMemoryParameterPtr': "_MemoryParameter",
+    'virSchedParameterPtr': "_SchedParameter",
+    'virTypedParameterPtr': "_TypedParameter",
+}  # type: Dict[str, str]
 
 
 #######################################################################
@@ -712,7 +733,7 @@
             a_type = a_type[6:]
         c_args += "    %s %s;\n" % (a_type, a_name)
         if a_type in py_types:
-            (f, t, n, c) = py_types[a_type]
+            (f, t, n, c, p) = py_types[a_type]
             if f:
                 format += f
             if t:
@@ -750,7 +771,7 @@
             c_call = "\n    %s(%s);\n" % (name, c_call)
         ret_convert = "    Py_INCREF(Py_None);\n    return Py_None;\n"
     elif r_type in py_types:
-        (f, t, n, c) = py_types[r_type]
+        (f, t, n, c, p) = py_types[r_type]
         c_return = "    %s c_retval;\n" % (r_type)
         if file == "python_accessor" and r_field:
             c_call = "\n    c_retval = %s->%s;\n" % (args[0][0], r_field)
@@ -858,7 +879,7 @@
         print("Found %d functions in %s" % ((n), api_xml))
 
     override_api_xml = "%s-override-api.xml" % module
-    py_types['pythonObject'] = ('O', "pythonObject", "pythonObject", 
"pythonObject")
+    py_types['pythonObject'] = ('O', "pythonObject", "pythonObject", 
"pythonObject", "object")
 
     try:
         onlyOverrides = True
@@ -890,8 +911,8 @@
 
     wrapper = open(wrapper_file, "w")
     wrapper.write("/* Generated by generator.py */\n\n")
-    wrapper.write("#include <stdlib.h>\n")
     wrapper.write("#include <Python.h>\n")
+    wrapper.write("#include <stdlib.h>\n")
     wrapper.write("#include <libvirt/%s.h>\n" % (module,))
     wrapper.write("#include \"typewrappers.h\"\n")
     wrapper.write("#include \"%s.h\"\n\n" % (module))
@@ -1366,6 +1387,9 @@
     if extra:
         extra.close()
 
+    types_map = {name: types[-1] for name, types in py_types.items()}
+    types_map.update(py_types_only)
+
     if "None" in function_classes:
         flist = function_classes["None"]
         oldfile = ""
@@ -1378,12 +1402,18 @@
                 if n != 0:
                     classes.write(", ")
                 classes.write("%s" % a_name)
+                if a_type in types_map:
+                    classes.write(": \"%s\"" % types_map[a_type])
                 if a_name == "flags" or is_optional_arg(a_info):
                     if is_integral_type(a_type):
                         classes.write("=0")
                     else:
                         classes.write("=None")
-            classes.write("):\n")
+            r_type, r_info, r_field = ret
+            classes.write(")")
+            if r_type in types_map:
+                classes.write(" -> \"%s\"" % types_map[r_type])
+            classes.write(":\n")
             writeDoc(module, name, args, '    ', classes)
 
             for a_name, a_type, a_info in args:
@@ -1395,7 +1425,6 @@
                                   "        %s__o = %s%s\n" %
                                   (a_name, a_name, classes_type[a_type][0]))
 
-            r_type, r_info, r_field = ret
             if r_type != "void":
                 classes.write("    ret = ")
             else:
@@ -1477,18 +1506,18 @@
             if classname in ["virDomain", "virNetwork", "virInterface", 
"virStoragePool",
                              "virStorageVol", "virNodeDevice", "virSecret", 
"virStream",
                              "virNWFilter", "virNWFilterBinding"]:
-                classes.write("    def __init__(self, conn, _obj=None):\n")
+                classes.write("    def __init__(self, conn: \"virConnect\", 
_obj: object=None):\n")
                 classes.write("        self._conn = conn\n")
             elif classname in ["virDomainCheckpoint", "virDomainSnapshot"]:
-                classes.write("    def __init__(self, dom, _obj=None):\n")
+                classes.write("    def __init__(self, dom: \"virDomain\", 
_obj: object=None):\n")
                 classes.write("        self._dom = dom\n")
                 classes.write("        self._conn = dom.connect()\n")
             elif classname in ["virNetworkPort"]:
-                classes.write("    def __init__(self, net, _obj=None) -> 
None:\n")
+                classes.write("    def __init__(self, net: \"virNetwork\", 
_obj: object=None) -> None:\n")
                 classes.write("        self._net = net\n")
                 classes.write("        self._conn = net.connect()\n")
             else:
-                classes.write("    def __init__(self, _obj=None):\n")
+                classes.write("    def __init__(self, _obj: object=None):\n")
 
             classes.write("        if type(_obj).__name__ not in 
[\"PyCapsule\", \"PyCObject\"]:\n")
             classes.write("            raise Exception(\"Expected a wrapped C 
Object but got %s\" % type(_obj))\n")
@@ -1515,7 +1544,7 @@
                 classes.write("    def network(self):\n")
                 classes.write("        return self._net\n\n")
 
-            classes.write("    def c_pointer(self):\n")
+            classes.write("    def c_pointer(self) -> object:\n")
             classes.write("        \"\"\"Get C pointer to underlying 
object\"\"\"\n")
             classes.write("        return %s.%s_pointer(self._o)\n\n" %
                           (pymod, classname))
@@ -1542,12 +1571,18 @@
                 for n, (a_name, a_type, a_info) in enumerate(args):
                     if n != index:
                         classes.write(", %s" % a_name)
+                        if a_type in types_map:
+                            classes.write(": \"%s\"" % types_map[a_type])
                     if a_name == "flags" or is_optional_arg(a_info):
                         if is_integral_type(a_type):
                             classes.write("=0")
                         else:
                             classes.write("=None")
-                classes.write("):\n")
+                r_type, r_info, r_field = ret
+                classes.write(")")
+                if r_type in types_map:
+                    classes.write(" -> \"%s\"" % types_map[r_type])
+                classes.write(":\n")
                 writeDoc(module, name, args, '        ', classes)
                 for n, (a_name, a_type, a_info) in enumerate(args):
                     if a_type in classes_type:
@@ -1558,7 +1593,6 @@
                             classes.write("        else:\n"
                                           "            %s__o = %s%s\n" %
                                           (a_name, a_name, 
classes_type[a_type][0]))
-                r_type, r_info, r_field = ret
                 if r_type != "void":
                     classes.write("        ret = ")
                 else:
@@ -1701,10 +1735,15 @@
             if n != 0:
                 classes.write(", ")
             classes.write("%s" % a_name)
-        classes.write("):\n")
+            if a_type in types_map:
+                classes.write(": \"%s\"" % types_map[a_type])
+        r_type, r_info, r_field = ret
+        classes.write(")")
+        if r_type in types_map:
+            classes.write(" -> \"%s\"" % types_map[r_type])
+        classes.write(":\n")
         writeDoc(module, name, args, '    ', classes)
 
-        r_type, r_info, r_field = ret
         if r_type != "void":
             classes.write("    ret = ")
         else:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libvirt-python-12.1.0/libvirt-override-virConnect.py 
new/libvirt-python-12.2.0/libvirt-override-virConnect.py
--- old/libvirt-python-12.1.0/libvirt-override-virConnect.py    2026-01-29 
10:31:10.000000000 +0100
+++ new/libvirt-python-12.2.0/libvirt-override-virConnect.py    2026-03-25 
21:55:34.000000000 +0100
@@ -16,7 +16,7 @@
     def __exit__(self, exc_type_: Optional[Type[BaseException]], exc_value_: 
Optional[BaseException], traceback_: Optional[TracebackType]) -> None:
         self.close()
 
-    def domainEventDeregister(self, cb: _DomainCB) -> None:
+    def domainEventDeregister(self, cb: _DomainCB[_T]) -> None:
         """Removes a Domain Event Callback. De-registering for a
            domain callback will disable delivery of this event type """
         try:
@@ -29,13 +29,13 @@
         except AttributeError:
             pass
 
-    def domainEventRegister(self, cb: _DomainCB, opaque: _T) -> None:
+    def domainEventRegister(self, cb: _DomainCB[_T], opaque: _T) -> None:
         """Adds a Domain Event Callback. Registering for a domain
            callback will enable delivery of the events """
         try:
             self.domainEventCallbacks[cb] = opaque
         except AttributeError:
-            self.domainEventCallbacks = {cb: opaque}  # type: Dict[_DomainCB, 
_T]
+            self.domainEventCallbacks = {cb: opaque}  # type: 
Dict[_DomainCB[_T], _T]
             ret = libvirtmod.virConnectDomainEventRegister(self._o, self)
             if ret == -1:
                 raise libvirtError('virConnectDomainEventRegister() failed')
@@ -572,7 +572,7 @@
         if ret == -1:
             raise libvirtError('virConnectUnregisterCloseCallback() failed')
 
-    def registerCloseCallback(self, cb: Callable, opaque: _T) -> int:
+    def registerCloseCallback(self, cb: Callable[['virConnect', int, _T], 
None], opaque: _T) -> int:
         """Adds a close event callback, providing a notification
          when a connection fails / closes"""
         cbData = {"cb": cb, "conn": self, "opaque": opaque}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libvirt-python-12.1.0/libvirt-override.c 
new/libvirt-python-12.2.0/libvirt-override.c
--- old/libvirt-python-12.1.0/libvirt-override.c        2026-01-29 
10:31:10.000000000 +0100
+++ new/libvirt-python-12.2.0/libvirt-override.c        2026-03-25 
21:55:34.000000000 +0100
@@ -19,9 +19,9 @@
 
 #define PY_SSIZE_T_CLEAN
 
+#include <Python.h>
 #include <stdio.h>
 #include <string.h>
-#include <Python.h>
 #include <libvirt/libvirt.h>
 #include <libvirt/virterror.h>
 #include <stddef.h>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libvirt-python-12.1.0/libvirt-override.py 
new/libvirt-python-12.2.0/libvirt-override.py
--- old/libvirt-python-12.1.0/libvirt-override.py       2026-01-29 
10:31:10.000000000 +0100
+++ new/libvirt-python-12.2.0/libvirt-override.py       2026-03-25 
21:55:34.000000000 +0100
@@ -3,11 +3,11 @@
 from typing import Any, Callable, Dict, List, Optional, overload, Tuple, Type, 
TypeVar, Union
 _T = TypeVar('_T')
 _EventCB = Callable[[int, int, int, _T], None]
-_EventAddHandleFunc = Callable[[int, int, _EventCB, _T], int]
+_EventAddHandleFunc = Callable[[int, int, _EventCB[_T], _T], int]
 _EventUpdateHandleFunc = Callable[[int, int], None]
 _EventRemoveHandleFunc = Callable[[int], int]
 _TimerCB = Callable[[int, _T], None]
-_EventAddTimeoutFunc = Callable[[int, _TimerCB, _T], int]
+_EventAddTimeoutFunc = Callable[[int, _TimerCB[_T], _T], int]
 _EventUpdateTimeoutFunc = Callable[[int, int], None]
 _EventRemoveTimeoutFunc = Callable[[int], int]
 _DomainCB = Callable[['virConnect', 'virDomain', int, int, _T], Optional[int]]
@@ -15,6 +15,7 @@
 _MemoryParameter = Dict[str, Any]
 _SchedParameter = Dict[str, Any]
 _TypedParameter = Dict[str, Any]
+_RawError = Tuple[int, int, str, int, str, Optional[str], Optional[str], int, 
int]
 
 
 # The root of all libvirt errors.
@@ -23,7 +24,7 @@
 
         # Never call virConnGetLastError().
         # virGetLastError() is now thread local
-        err = libvirtmod.virGetLastError()  # type: Optional[Tuple[int, int, 
str, int, str, Optional[str], Optional[str], int, int]]
+        err = libvirtmod.virGetLastError()  # type: Optional[_RawError]
         if err is None:
             msg = defmsg
         else:
@@ -82,7 +83,7 @@
 #
 # register the libvirt global error handler
 #
-def registerErrorHandler(f: Callable[[_T, List], None], ctx: _T) -> int:
+def registerErrorHandler(f: Callable[[_T, _RawError], None], ctx: _T) -> int:
     """Register a Python function for error reporting.
        The function is called back as f(ctx, error), with error
        being a list of information about the error being raised.
@@ -153,10 +154,10 @@
 # Invoke an EventHandle callback
 #
 @overload
-def _eventInvokeHandleCallback(watch: int, fd: int, event: int, opaque: 
Tuple[_EventCB, _T], opaquecompat: None = None) -> None: ...  # noqa E704
+def _eventInvokeHandleCallback(watch: int, fd: int, event: int, opaque: 
Tuple[_EventCB[_T], _T], opaquecompat: None = None) -> None: ...  # noqa E704
 @overload  # noqa F811
-def _eventInvokeHandleCallback(watch: int, fd: int, event: int, opaque: 
_EventCB, opaquecompat: _T = None) -> None: ...  # noqa E704
-def _eventInvokeHandleCallback(watch: int, fd: int, event: int, opaque: 
Union[Tuple[_EventCB, _T], _EventCB], opaquecompat: Optional[_T] = None) -> 
None:  # noqa F811
+def _eventInvokeHandleCallback(watch: int, fd: int, event: int, opaque: 
_EventCB[_T], opaquecompat: _T = None) -> None: ...  # noqa E704
+def _eventInvokeHandleCallback(watch: int, fd: int, event: int, opaque: 
Union[Tuple[_EventCB[_T], _T], _EventCB[_T]], opaquecompat: Optional[_T] = 
None) -> None:  # noqa F811
     """
     Invoke the Event Impl Handle Callback in C
     """
@@ -178,7 +179,7 @@
 #
 # Invoke an EventTimeout callback
 #
-def _eventInvokeTimeoutCallback(timer: int, opaque: Union[Tuple[_TimerCB, _T], 
_TimerCB], opaquecompat: Optional[_T] = None) -> None:
+def _eventInvokeTimeoutCallback(timer: int, opaque: Union[Tuple[_TimerCB[_T], 
_T], _TimerCB[_T]], opaquecompat: Optional[_T] = None) -> None:
     """
     Invoke the Event Impl Timeout Callback in C
     """
@@ -213,7 +214,7 @@
     return 0
 
 
-def virEventAddHandle(fd: int, events: int, cb: _EventCB, opaque: _T) -> int:
+def virEventAddHandle(fd: int, events: int, cb: _EventCB[_T], opaque: _T) -> 
int:
     """
     register a callback for monitoring file handle events
 
@@ -235,7 +236,7 @@
     return ret
 
 
-def virEventAddTimeout(timeout: int, cb: _TimerCB, opaque: _T) -> int:
+def virEventAddTimeout(timeout: int, cb: _TimerCB[_T], opaque: _T) -> int:
     """
     register a callback for a timer event
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libvirt-python-12.1.0/libvirt-qemu-override.c 
new/libvirt-python-12.2.0/libvirt-qemu-override.c
--- old/libvirt-python-12.1.0/libvirt-qemu-override.c   2026-01-29 
10:31:10.000000000 +0100
+++ new/libvirt-python-12.2.0/libvirt-qemu-override.c   2026-03-25 
21:55:34.000000000 +0100
@@ -14,8 +14,8 @@
    which has over 180 autoconf-style HAVE_* definitions.  Shame on them.  */
 #undef HAVE_PTHREAD_H
 
-#include <stdio.h>
 #include <Python.h>
+#include <stdio.h>
 #include <libvirt/libvirt-qemu.h>
 #include <libvirt/virterror.h>
 #include "typewrappers.h"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libvirt-python-12.1.0/libvirt-utils.c 
new/libvirt-python-12.2.0/libvirt-utils.c
--- old/libvirt-python-12.1.0/libvirt-utils.c   2026-01-29 10:31:10.000000000 
+0100
+++ new/libvirt-python-12.2.0/libvirt-utils.c   2026-03-25 21:55:34.000000000 
+0100
@@ -19,10 +19,10 @@
  *
  */
 
-#include <string.h>
-
 #include <Python.h>
 
+#include <string.h>
+
 /* Ugly python defines that, which is also defined in errno.h */
 #undef _POSIC_C_SOURCE
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libvirt-python-12.1.0/libvirtaio.py 
new/libvirt-python-12.2.0/libvirtaio.py
--- old/libvirt-python-12.1.0/libvirtaio.py     2026-01-29 10:31:10.000000000 
+0100
+++ new/libvirt-python-12.2.0/libvirtaio.py     2026-03-25 21:55:34.000000000 
+0100
@@ -418,7 +418,7 @@
         callback.close()
         return 0
 
-    def _add_timeout(self, timeout: int, cb: libvirt._TimerCB, opaque: _T) -> 
int:
+    def _add_timeout(self, timeout: int, cb: libvirt._TimerCB[_T], opaque: _T) 
-> int:
         '''Register a callback for a timer event
 
         :param int timeout: the timeout to monitor
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libvirt-python-12.1.0/requirements-test.txt 
new/libvirt-python-12.2.0/requirements-test.txt
--- old/libvirt-python-12.1.0/requirements-test.txt     2026-01-29 
10:31:10.000000000 +0100
+++ new/libvirt-python-12.2.0/requirements-test.txt     2026-03-25 
21:55:34.000000000 +0100
@@ -1,2 +1,2 @@
-nose
+pytest
 lxml
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libvirt-python-12.1.0/tests/eventmock.py 
new/libvirt-python-12.2.0/tests/eventmock.py
--- old/libvirt-python-12.1.0/tests/eventmock.py        2026-01-29 
10:31:10.000000000 +0100
+++ new/libvirt-python-12.2.0/tests/eventmock.py        2026-03-25 
21:55:34.000000000 +0100
@@ -12,7 +12,7 @@
 
 _registered = False
 
-def _add_handle(fd: int, event: int, cb: libvirt._EventCB, opaque: libvirt._T) 
-> int:
+def _add_handle(fd: int, event: int, cb: libvirt._EventCB[libvirt._T], opaque: 
libvirt._T) -> int:
     global _add_handle_impl
     assert _add_handle_impl != None
     return _add_handle_impl(fd, event, cb, opaque)
@@ -27,7 +27,7 @@
     assert _remove_handle_impl != None
     return _remove_handle_impl(watch)
 
-def _add_timeout(timeout: int, cb: libvirt._TimerCB, opaque: libvirt._T) -> 
int:
+def _add_timeout(timeout: int, cb: libvirt._TimerCB[libvirt._T], opaque: 
libvirt._T) -> int:
     global _add_timeout_impl
     assert _add_timeout_impl != None
     return _add_timeout_impl(timeout, cb, opaque)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libvirt-python-12.1.0/tox.ini 
new/libvirt-python-12.2.0/tox.ini
--- old/libvirt-python-12.1.0/tox.ini   2026-01-29 10:31:10.000000000 +0100
+++ new/libvirt-python-12.2.0/tox.ini   2026-03-25 21:55:34.000000000 +0100
@@ -3,7 +3,6 @@
 
 [testenv]
 deps=
-    lxml
-    pytest
+    -r{toxinidir}/requirements-test.txt
 commands=
     pytest
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libvirt-python-12.1.0/typewrappers.c 
new/libvirt-python-12.2.0/typewrappers.c
--- old/libvirt-python-12.1.0/typewrappers.c    2026-01-29 10:31:10.000000000 
+0100
+++ new/libvirt-python-12.2.0/typewrappers.c    2026-03-25 21:55:34.000000000 
+0100
@@ -12,6 +12,7 @@
  * which has over 180 autoconf-style HAVE_* definitions.  Shame on them.  */
 #undef HAVE_PTHREAD_H
 
+#include <Python.h>
 #include <stdio.h>
 #include <string.h>
 #include "typewrappers.h"

Reply via email to