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); } }
