Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-linux-procfs for
openSUSE:Factory checked in at 2026-06-30 15:12:25
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-linux-procfs (Old)
and /work/SRC/openSUSE:Factory/.python-linux-procfs.new.11887 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-linux-procfs"
Tue Jun 30 15:12:25 2026 rev:8 rq:1362526 version:0.7.4
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-linux-procfs/python-linux-procfs.changes
2025-03-26 21:25:34.759874748 +0100
+++
/work/SRC/openSUSE:Factory/.python-linux-procfs.new.11887/python-linux-procfs.changes
2026-06-30 15:12:57.795086690 +0200
@@ -1,0 +2,8 @@
+Mon Jun 29 20:15:29 UTC 2026 - Dirk Müller <[email protected]>
+
+- update to 0.7.4:
+ * Fix spelling mistakes in comments
+ * Modernize packaging and update authorship
+ * Remove import of range from six.moves
+
+-------------------------------------------------------------------
Old:
----
python-linux-procfs-0.7.3.tar.xz
New:
----
python-linux-procfs-0.7.4.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-linux-procfs.spec ++++++
--- /var/tmp/diff_new_pack.oWeSC2/_old 2026-06-30 15:12:58.203100497 +0200
+++ /var/tmp/diff_new_pack.oWeSC2/_new 2026-06-30 15:12:58.203100497 +0200
@@ -1,7 +1,7 @@
#
# spec file for package python-linux-procfs
#
-# 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
@@ -23,11 +23,11 @@
%endif
Name: python-linux-procfs
-Version: 0.7.3
+Version: 0.7.4
Release: 0
Summary: Linux /proc abstraction classes
License: GPL-2.0-only
-URL: https://rt.wiki.kernel.org/index.php/Tuna
+URL:
https://git.kernel.org/pub/scm/libs/python/python-linux-procfs/python-linux-procfs.git
Source:
https://cdn.kernel.org/pub/software/libs/python/%{name}/%{name}-%{version}.tar.xz
BuildRequires: %{python_module pip}
BuildRequires: %{python_module setuptools}
++++++ python-linux-procfs-0.7.3.tar.xz -> python-linux-procfs-0.7.4.tar.xz
++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-linux-procfs-0.7.3/CLAUDE.md
new/python-linux-procfs-0.7.4/CLAUDE.md
--- old/python-linux-procfs-0.7.3/CLAUDE.md 1970-01-01 01:00:00.000000000
+0100
+++ new/python-linux-procfs-0.7.4/CLAUDE.md 2025-10-09 22:21:49.000000000
+0200
@@ -0,0 +1,102 @@
+# CLAUDE.md
+
+This file provides guidance to Claude Code (claude.ai/code) when working with
code in this repository.
+
+## Project Overview
+
+python-linux-procfs is a Python library that provides abstractions to extract
information from the Linux kernel /proc filesystem. It's a GPL-2.0-only
licensed library maintained by Red Hat developers, primarily for Linux system
programming and process introspection.
+
+## Build and Test Commands
+
+### Installation
+```bash
+# Install the package locally for development
+python3 -m pip install -e .
+
+# Or using setup.py directly
+python3 setup.py install
+```
+
+### Testing
+```bash
+# Run the bitmasklist unit tests
+python3 bitmasklist_test.py
+```
+
+### Clean
+```bash
+# Remove temporary files and tags
+make clean
+
+# Remove only Python cache files
+make pyclean
+```
+
+### Tags Generation
+```bash
+# Generate ctags for code navigation
+make tags
+```
+
+## Architecture
+
+### Core Module Structure
+
+The library consists of a single `procfs` package with two main modules:
+
+**procfs/procfs.py** - Main module containing all /proc abstraction classes:
+- `pidstat` - Parses /proc/PID/stat files for process statistics
+- `pidstatus` - Parses /proc/PID/status files for additional process info
+- `process` - Combines stat and status data, lazy-loads cmdline, threads,
cgroups, environ
+- `pidstats` - Collection of all processes in the system with find/search
methods
+- `interrupts` - Parses /proc/interrupts for IRQ information
+- `cmdline` - Parses /proc/cmdline for kernel boot parameters
+- `cpuinfo` - Parses /proc/cpuinfo for CPU information and topology
+- `cpustat`/`cpusstats` - Parses /proc/stat for CPU usage statistics
+- `smaps`/`smaps_lib` - Parses /proc/PID/smaps for memory mapping information
+
+**procfs/utilist.py** - Utility functions for bitmask conversions:
+- `bitmasklist()` - Converts hex CPU affinity masks to lists of CPU numbers
+- `hexbitmask()` - Converts CPU number lists to hex bitmask format
+
+### Design Patterns
+
+1. **Lazy Loading**: The `process` class implements lazy loading via
`__getitem__` - attributes like "stat", "status", "cmdline", "threads",
"cgroups", and "environ" are only loaded when accessed.
+
+2. **Dictionary-like Interfaces**: Most classes implement dict-like access
patterns (`__getitem__`, `keys()`, `values()`, `items()`, `__contains__`) for
intuitive data access.
+
+3. **Ephemeral Process Handling**: Code throughout handles processes
disappearing mid-query by catching `FileNotFoundError` and `IOError` exceptions.
+
+4. **basedir Parameter**: Most classes accept a `basedir` parameter (default
"/proc") to support testing with mock /proc filesystems or accessing /proc from
containers.
+
+### Key Implementation Details
+
+- **Process flags**: `pidstat` class defines PF_* constants matching kernel's
include/linux/sched.h. Some flags have duplicate values representing kernel API
changes (e.g., PF_THREAD_BOUND and PF_NO_SETAFFINITY both = 0x04000000).
+
+- **Thread handling**: Threads are loaded from /proc/PID/task/ with the thread
leader (matching the PID) removed from the collection.
+
+- **CPU topology**: `cpuinfo` class calculates `nr_sockets` and `nr_cores`
based on "physical id", "siblings", and "cpu cores" fields. Has special
handling for s390/s390x architectures.
+
+- **Interrupt affinity**: The `interrupts` class reads both /proc/interrupts
and /proc/irq/*/smp_affinity to provide complete IRQ information.
+
+## Command Line Tools
+
+**pflags** - Utility to display process flags for running processes:
+- Can filter by PID, process name, or glob patterns
+- Shows kernel process flags (PF_*) in human-readable format
+- Handles superseded flags (removes old flag names when new ones exist)
+- Note: Currently imports from `six.moves` which should be removed as Python 2
support is no longer needed (requires-python = ">=3.10")
+
+## Python Version Requirements
+
+- Minimum Python version: 3.10
+- The codebase has been migrated away from Python 2/3 compatibility
+- Still has one remaining `six` import in `pflags` that should be removed
+
+## Package Configuration
+
+The project uses modern Python packaging with both:
+- `pyproject.toml` - Modern build configuration (preferred)
+- `setup.py` - Legacy setup script for backwards compatibility
+
+Both files must be kept in sync for version numbers and metadata.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-linux-procfs-0.7.3/MANIFEST
new/python-linux-procfs-0.7.4/MANIFEST
--- old/python-linux-procfs-0.7.3/MANIFEST 2023-11-10 01:39:51.000000000
+0100
+++ new/python-linux-procfs-0.7.4/MANIFEST 2025-10-09 22:21:49.000000000
+0200
@@ -5,5 +5,3 @@
procfs/__init__.py
procfs/procfs.py
procfs/utilist.py
-rpm/SPECS/python-linux-procfs.spec
-setup.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-linux-procfs-0.7.3/bitmasklist_test.py
new/python-linux-procfs-0.7.4/bitmasklist_test.py
--- old/python-linux-procfs-0.7.3/bitmasklist_test.py 2023-11-10
01:39:51.000000000 +0100
+++ new/python-linux-procfs-0.7.4/bitmasklist_test.py 2025-10-09
22:21:49.000000000 +0200
@@ -1,5 +1,8 @@
#!/usr/bin/python3
# SPDX-License-Identifier: GPL-2.0-only
+#
+# Copyright (C) 2025 Red Hat, Inc.
+# John Kacur <[email protected]>
""" Module to test bitmasklist functionality """
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-linux-procfs-0.7.3/pflags
new/python-linux-procfs-0.7.4/pflags
--- old/python-linux-procfs-0.7.3/pflags 2023-11-10 01:39:51.000000000
+0100
+++ new/python-linux-procfs-0.7.4/pflags 2025-10-09 22:21:49.000000000
+0200
@@ -1,24 +1,17 @@
#! /usr/bin/python3
# -*- python -*-
# -*- coding: utf-8 -*-
+# SPDX-License-Identifier: GPL-2.0-only
+#
# print process flags
-# Copyright (C) 2015 Red Hat Inc.
+# Copyright (C) 2015-2025 Red Hat, Inc.
# Arnaldo Carvalho de Melo <[email protected]>
-#
-# This application is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License
-# as published by the Free Software Foundation; version 2.
-#
-# This application is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# General Public License for more details.
+# John Kacur <[email protected]>
import procfs, re, fnmatch, sys
import argparse
from functools import reduce
-from six.moves import map
ps = None
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-linux-procfs-0.7.3/procfs/procfs.py
new/python-linux-procfs-0.7.4/procfs/procfs.py
--- old/python-linux-procfs-0.7.3/procfs/procfs.py 2023-11-10
01:39:51.000000000 +0100
+++ new/python-linux-procfs-0.7.4/procfs/procfs.py 2025-10-09
22:21:49.000000000 +0200
@@ -3,7 +3,9 @@
# -*- coding: utf-8 -*-
# SPDX-License-Identifier: GPL-2.0-only
#
-# Copyright (C) 2007-2015 Red Hat, Inc.
+# Copyright (C) 2007-2025 Red Hat, Inc.
+# Arnaldo Carvalho de Melo <[email protected]>
+# John Kacur <[email protected]>
#
import os
@@ -11,11 +13,9 @@
import re
import time
from functools import reduce
-from six.moves import range
from procfs.utilist import bitmasklist
-VERSION = "0.7.3"
-
+VERSION = "0.7.4"
def is_s390():
""" Return True if running on s390 or s390x """
@@ -346,7 +346,7 @@
try:
setattr(self, attr, sclass(self.pid, self.basedir))
except FileNotFoundError:
- # The pid has disappeared, progate the error
+ # The pid has disappeared, propagate the error
raise
elif attr == "cmdline":
self.load_cmdline()
@@ -602,7 +602,7 @@
The information comes from the /proc/interrupts file, documented in
'man procfs(5)', for instance, the 'cpu' dict is an array with one entry
- per CPU present in the sistem, each value being the number of interrupts
+ per CPU present in the system, each value being the number of interrupts
that took place per CPU.
E.g.:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-linux-procfs-0.7.3/procfs/utilist.py
new/python-linux-procfs-0.7.4/procfs/utilist.py
--- old/python-linux-procfs-0.7.3/procfs/utilist.py 2023-11-10
01:39:51.000000000 +0100
+++ new/python-linux-procfs-0.7.4/procfs/utilist.py 2025-10-09
22:21:49.000000000 +0200
@@ -3,12 +3,9 @@
# -*- coding: utf-8 -*-
# SPDX-License-Identifier: GPL-2.0-only
#
-# Copyright (C) 2007 Red Hat, Inc.
+# Copyright (C) 2007-2025 Red Hat, Inc.
#
-from six.moves import range
-
-
def hexbitmask(l, nr_entries):
hexbitmask = []
bit = 0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-linux-procfs-0.7.3/pyproject.toml
new/python-linux-procfs-0.7.4/pyproject.toml
--- old/python-linux-procfs-0.7.3/pyproject.toml 1970-01-01
01:00:00.000000000 +0100
+++ new/python-linux-procfs-0.7.4/pyproject.toml 2025-10-09
22:21:49.000000000 +0200
@@ -0,0 +1,39 @@
+[build-system]
+requires = ["setuptools>=61.0"]
+build-backend = "setuptools.build_meta"
+
+[project]
+name = "python-linux-procfs"
+version = "0.7.4"
+description = "Linux /proc abstraction classes"
+readme = "README.md"
+license = {text = "GPL-2.0-only"}
+authors = [
+ {name = "Arnaldo Carvalho de Melo", email = "[email protected]"},
+ {name = "John Kacur", email = "[email protected]"}
+]
+maintainers = [
+ {name = "John Kacur", email = "[email protected]"}
+]
+requires-python = ">=3.10"
+dependencies = []
+classifiers = [
+ "Development Status :: 4 - Beta",
+ "Intended Audience :: Developers",
+ "License :: OSI Approved :: GNU General Public License v2 (GPLv2)",
+ "Operating System :: POSIX :: Linux",
+ "Programming Language :: Python :: 3",
+ "Programming Language :: Python :: 3.10",
+ "Programming Language :: Python :: 3.11",
+ "Programming Language :: Python :: 3.12",
+ "Topic :: System :: Operating System Kernels :: Linux",
+]
+
+[project.urls]
+Homepage =
"https://www.kernel.org/pub/software/libs/python/python-linux-procfs"
+
+[tool.setuptools.packages.find]
+include = ["procfs*"]
+
+[tool.setuptools]
+script-files = ["pflags"]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-linux-procfs-0.7.3/setup.py
new/python-linux-procfs-0.7.4/setup.py
--- old/python-linux-procfs-0.7.3/setup.py 2023-11-10 01:39:51.000000000
+0100
+++ new/python-linux-procfs-0.7.4/setup.py 1970-01-01 01:00:00.000000000
+0100
@@ -1,33 +0,0 @@
-#!/usr/bin/python3
-# SPDX-License-Identifier: GPL-2.0-only
-
-import os
-from os.path import isfile, relpath
-import sysconfig
-from setuptools import setup
-
-if isfile("MANIFEST"):
- os.unlink("MANIFEST")
-
-SCHEME = 'rpm_prefix'
-if not SCHEME in sysconfig.get_scheme_names():
- SCHEME = 'posix_prefix'
-
-# Get PYTHONLIB with no prefix so --prefix installs work.
-PYTHONLIB = relpath(sysconfig.get_path('platlib', SCHEME), '/usr')
-
-setup(name="python-linux-procfs",
- version = "0.7.3",
- description = "Linux /proc abstraction classes",
- author = "Arnaldo Carvalho de Melo",
- author_email = "[email protected]",
- url = "http://userweb.kernel.org/python-linux-procfs",
- license = "GPLv2",
- long_description =
-"""\
-Abstractions to extract information from the Linux kernel /proc files.
-""",
- packages = ["procfs"],
- scripts = ['pflags'],
- install_requires = ['six'],
-)