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"