Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-evdev for openSUSE:Factory 
checked in at 2026-02-24 18:31:30
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-evdev (Old)
 and      /work/SRC/openSUSE:Factory/.python-evdev.new.1977 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-evdev"

Tue Feb 24 18:31:30 2026 rev:20 rq:1334799 version:1.9.3

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-evdev/python-evdev.changes        
2025-05-09 18:51:45.206062114 +0200
+++ /work/SRC/openSUSE:Factory/.python-evdev.new.1977/python-evdev.changes      
2026-02-24 18:31:50.725360604 +0100
@@ -1,0 +2,9 @@
+Tue Feb 24 13:43:09 UTC 2026 - John Paul Adrian Glaubitz 
<[email protected]>
+
+- Update to 1.9.3
+  * Fix several memory leaks in ``input.c``.
+  * Raise the minimum supported Python version to 3.9
+    and the setuptools version to 77.0.
+- Update BuildRequires from pyproject.toml
+
+-------------------------------------------------------------------

Old:
----
  python-evdev-1.9.2.tar.gz

New:
----
  python-evdev-1.9.3.tar.gz

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

Other differences:
------------------
++++++ python-evdev.spec ++++++
--- /var/tmp/diff_new_pack.OHDa6X/_old  2026-02-24 18:31:51.477391922 +0100
+++ /var/tmp/diff_new_pack.OHDa6X/_new  2026-02-24 18:31:51.481392088 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package python-evdev
 #
-# Copyright (c) 2025 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
@@ -19,7 +19,7 @@
 %define modname evdev
 %{?sle15_python_module_pythons}
 Name:           python-evdev
-Version:        1.9.2
+Version:        1.9.3
 Release:        0
 Summary:        Python bindings to the Linux input handling subsystem
 License:        BSD-3-Clause
@@ -30,7 +30,7 @@
 BuildRequires:  %{python_module devel}
 BuildRequires:  %{python_module pip}
 BuildRequires:  %{python_module pytest}
-BuildRequires:  %{python_module setuptools >= 61.0}
+BuildRequires:  %{python_module setuptools >= 77.0}
 BuildRequires:  %{python_module wheel}
 BuildRequires:  fdupes
 BuildRequires:  python-rpm-macros

++++++ python-evdev-1.9.2.tar.gz -> python-evdev-1.9.3.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-evdev-1.9.2/.github/workflows/install.yaml 
new/python-evdev-1.9.3/.github/workflows/install.yaml
--- old/python-evdev-1.9.2/.github/workflows/install.yaml       2025-05-01 
21:15:19.000000000 +0200
+++ new/python-evdev-1.9.3/.github/workflows/install.yaml       2026-02-05 
22:46:48.000000000 +0100
@@ -11,15 +11,15 @@
       fail-fast: false
       matrix:
         os: [ubuntu-latest]
-        python-version: ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13"]
+        python-version: ["3.9", "3.10", "3.11", "3.12", "3.13", "3.14"]
         include:
           - os: ubuntu-latest
-            python-version: "3.8"
+            python-version: "3.9"
 
     steps:
-      - uses: actions/checkout@v4
+      - uses: actions/checkout@v6
       - name: Set up Python ${{ matrix.python-version }}
-        uses: actions/setup-python@v5
+        uses: actions/setup-python@v6
         with:
           python-version: ${{ matrix.python-version }}
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-evdev-1.9.2/.github/workflows/lint.yml 
new/python-evdev-1.9.3/.github/workflows/lint.yml
--- old/python-evdev-1.9.2/.github/workflows/lint.yml   2025-05-01 
21:15:19.000000000 +0200
+++ new/python-evdev-1.9.3/.github/workflows/lint.yml   2026-02-05 
22:46:48.000000000 +0100
@@ -11,12 +11,12 @@
       fail-fast: false
       matrix:
         os: [ubuntu-latest]
-        python-version: ["3.12"]
+        python-version: ["3.14"]
 
     steps:
-      - uses: actions/checkout@v4
+      - uses: actions/checkout@v6
       - name: Set up Python ${{ matrix.python-version }}
-        uses: actions/setup-python@v5
+        uses: actions/setup-python@v6
         with:
           python-version: ${{ matrix.python-version }}
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-evdev-1.9.2/.github/workflows/test.yml 
new/python-evdev-1.9.3/.github/workflows/test.yml
--- old/python-evdev-1.9.2/.github/workflows/test.yml   2025-05-01 
21:15:19.000000000 +0200
+++ new/python-evdev-1.9.3/.github/workflows/test.yml   2026-02-05 
22:46:48.000000000 +0100
@@ -11,12 +11,12 @@
       fail-fast: false
       matrix:
         os: [ubuntu-latest]
-        python-version: ["3.12"]
+        python-version: ["3.14"]
 
     steps:
-      - uses: actions/checkout@v4
+      - uses: actions/checkout@v6
       - name: Set up Python ${{ matrix.python-version }}
-        uses: actions/setup-python@v5
+        uses: actions/setup-python@v6
         with:
           python-version: ${{ matrix.python-version }}
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-evdev-1.9.2/docs/changelog.rst 
new/python-evdev-1.9.3/docs/changelog.rst
--- old/python-evdev-1.9.2/docs/changelog.rst   2025-05-01 21:15:19.000000000 
+0200
+++ new/python-evdev-1.9.3/docs/changelog.rst   2026-02-05 22:46:48.000000000 
+0100
@@ -1,6 +1,13 @@
 Changelog
 ---------
 
+1.9.3 (Feb 05, 2025)
+====================
+
+- Fix several memory leaks in ``input.c``.
+
+- Raise the minimum supported Python version to 3.9 and the setuptools version 
to 77.0.
+
 
 1.9.2 (May 01, 2025)
 ====================
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-evdev-1.9.2/docs/conf.py 
new/python-evdev-1.9.3/docs/conf.py
--- old/python-evdev-1.9.2/docs/conf.py 2025-05-01 21:15:19.000000000 +0200
+++ new/python-evdev-1.9.3/docs/conf.py 2026-02-05 22:46:48.000000000 +0100
@@ -65,7 +65,7 @@
 # built documents.
 #
 # The full version, including alpha/beta/rc tags.
-release = "1.9.2"
+release = "1.9.3"
 
 # The short X.Y version.
 version = release
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-evdev-1.9.2/pyproject.toml 
new/python-evdev-1.9.3/pyproject.toml
--- old/python-evdev-1.9.2/pyproject.toml       2025-05-01 21:15:19.000000000 
+0200
+++ new/python-evdev-1.9.3/pyproject.toml       2026-02-05 22:46:48.000000000 
+0100
@@ -1,15 +1,15 @@
 [build-system]
-requires = ["setuptools>=61.0"]
+requires = ["setuptools>=77.0"]
 build-backend = "setuptools.build_meta"
 
 [project]
 name = "evdev"
-version = "1.9.2"
+version = "1.9.3"
 description = "Bindings to the Linux input handling subsystem"
 keywords = ["evdev", "input", "uinput"]
 readme = "README.md"
-license = {file = "LICENSE"}
-requires-python = ">=3.8"
+license = "BSD-3-Clause"
+requires-python = ">=3.9"
 authors = [
   { name="Georgi Valkov", email="[email protected]" },
 ]
@@ -22,7 +22,6 @@
     "Operating System :: POSIX :: Linux",
     "Intended Audience :: Developers",
     "Topic :: Software Development :: Libraries",
-    "License :: OSI Approved :: BSD License",
     "Programming Language :: Python :: Implementation :: CPython",
 ]
 
@@ -36,7 +35,7 @@
 ignore = ["E265", "E241", "F403", "F401", "E401", "E731"]
 
 [tool.bumpversion]
-current_version = "1.9.2"
+current_version = "1.9.3"
 commit = true
 tag = true
 allow_dirty = true
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-evdev-1.9.2/src/evdev/input.c 
new/python-evdev-1.9.3/src/evdev/input.c
--- old/python-evdev-1.9.2/src/evdev/input.c    2025-05-01 21:15:19.000000000 
+0200
+++ new/python-evdev-1.9.3/src/evdev/input.c    2026-02-05 22:46:48.000000000 
+0100
@@ -63,12 +63,12 @@
         return NULL;
     }
 
-    PyObject* sec  = PyLong_FromLong(event.input_event_sec);
-    PyObject* usec = PyLong_FromLong(event.input_event_usec);
-    PyObject* val  = PyLong_FromLong(event.value);
-    PyObject* type = PyLong_FromLong(event.type);
-    PyObject* code = PyLong_FromLong(event.code);
-    PyObject* py_input_event = PyTuple_Pack(5, sec, usec, type, code, val);
+    PyObject *py_input_event = PyTuple_New(5);
+    PyTuple_SET_ITEM(py_input_event, 0, 
PyLong_FromLong(event.input_event_sec));
+    PyTuple_SET_ITEM(py_input_event, 1, 
PyLong_FromLong(event.input_event_usec));
+    PyTuple_SET_ITEM(py_input_event, 2, PyLong_FromLong(event.type));
+    PyTuple_SET_ITEM(py_input_event, 3, PyLong_FromLong(event.code));
+    PyTuple_SET_ITEM(py_input_event, 4, PyLong_FromLong(event.value));
 
     return py_input_event;
 }
@@ -81,14 +81,6 @@
     // get device file descriptor (O_RDONLY|O_NONBLOCK)
     int fd = (int)PyLong_AsLong(PyTuple_GET_ITEM(args, 0));
 
-    PyObject* py_input_event = NULL;
-    PyObject* events = NULL;
-    PyObject* sec  = NULL;
-    PyObject* usec = NULL;
-    PyObject* val  = NULL;
-    PyObject* type = NULL;
-    PyObject* code = NULL;
-
     struct input_event event[64];
 
     size_t event_size = sizeof(struct input_event);
@@ -101,15 +93,15 @@
 
     // Construct a tuple of event tuples. Each tuple is the arguments to 
InputEvent.
     size_t num_events = nread / event_size;
-    events = PyTuple_New(num_events);
-    for (size_t i = 0 ; i < num_events; i++) {
-        sec  = PyLong_FromLong(event[i].input_event_sec);
-        usec = PyLong_FromLong(event[i].input_event_usec);
-        val  = PyLong_FromLong(event[i].value);
-        type = PyLong_FromLong(event[i].type);
-        code = PyLong_FromLong(event[i].code);
 
-        py_input_event = PyTuple_Pack(5, sec, usec, type, code, val);
+    PyObject* events = PyTuple_New(num_events);
+    for (size_t i = 0 ; i < num_events; i++) {
+        PyObject *py_input_event = PyTuple_New(5);
+        PyTuple_SET_ITEM(py_input_event, 0, 
PyLong_FromLong(event[i].input_event_sec));
+        PyTuple_SET_ITEM(py_input_event, 1, 
PyLong_FromLong(event[i].input_event_usec));
+        PyTuple_SET_ITEM(py_input_event, 2, PyLong_FromLong(event[i].type));
+        PyTuple_SET_ITEM(py_input_event, 3, PyLong_FromLong(event[i].code));
+        PyTuple_SET_ITEM(py_input_event, 4, PyLong_FromLong(event[i].value));
         PyTuple_SET_ITEM(events, i, py_input_event);
     }
 
@@ -200,6 +192,11 @@
     return capabilities;
 
     on_err:
+        Py_XDECREF(capabilities);
+        Py_XDECREF(eventcodes);
+        Py_XDECREF(capability);
+        Py_XDECREF(py_absinfo);
+        Py_XDECREF(absitem);
         PyErr_SetFromErrno(PyExc_OSError);
         return NULL;
 }
@@ -408,7 +405,9 @@
     PyObject* res = PyList_New(0);
     for (int i=0; i<=max; i++) {
         if (test_bit(bytes, i)) {
-            PyList_Append(res, Py_BuildValue("i", i));
+            PyObject *val = PyLong_FromLong(i);
+            PyList_Append(res, val);
+            Py_DECREF(val);
         }
     }
 
@@ -523,7 +522,9 @@
     PyObject* res = PyList_New(0);
     for (int i=0; i<INPUT_PROP_MAX; i++) {
         if (test_bit(bytes, i)) {
-            PyList_Append(res, Py_BuildValue("i", i));
+            PyObject *val = PyLong_FromLong(i);
+            PyList_Append(res, val);
+            Py_DECREF(val);
         }
     }
 

Reply via email to