Accepting request 1188219 from devel:languages:python

OBS-URL: https://build.opensuse.org/request/show/1188219
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-psutil?expand=0&rev=81
This commit is contained in:
Ana Guerrero 2024-07-18 17:15:40 +00:00 committed by Git OBS Bridge
commit d7f03b8b1e
6 changed files with 165 additions and 140 deletions

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:3f02134e82cfb5d089fddf20bb2e03fd5cd52395321d1c8458a9e58500ff417c
size 498429

BIN
psutil-6.0.0.tar.gz (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -1,3 +1,65 @@
-------------------------------------------------------------------
Wed Jul 17 12:33:03 UTC 2024 - John Paul Adrian Glaubitz <adrian.glaubitz@suse.com>
- Update to version 6.0.0
* 2109_: ``maxfile`` and ``maxpath`` fields were removed from the namedtuple
returned by `disk_partitions()`_. Reason: on network filesystems (NFS) this
can potentially take a very long time to complete.
* 2366_, [Windows]: log debug message when using slower process APIs.
* 2375_, [macOS]: provide arm64 wheels. (patch by Matthieu Darbois)
* 2396_: `process_iter()`_ no longer pre-emptively checks whether PIDs have
been reused. This makes `process_iter()`_ around 20x times faster.
* 2396_: a new ``psutil.process_iter.cache_clear()`` API can be used the clear
`process_iter()`_ internal cache.
* 2401_, Support building with free-threaded CPython 3.13. (patch by Sam Gross)
* 2407_: `Process.connections()`_ was renamed to `Process.net_connections()`_.
The old name is still available, but it's deprecated (triggers a
``DeprecationWarning``) and will be removed in the future.
* 2425_: [Linux]: provide aarch64 wheels. (patch by Matthieu Darbois / Ben Raz)
* 2250_, [NetBSD]: `Process.cmdline()`_ sometimes fail with EBUSY. It usually
happens for long cmdlines with lots of arguments. In this case retry getting
the cmdline for up to 50 times, and return an empty list as last resort.
* 2254_, [Linux]: offline cpus raise NotImplementedError in cpu_freq() (patch
by Shade Gladden)
* 2272_: Add pickle support to psutil Exceptions.
* 2359_, [Windows], [CRITICAL]: `pid_exists()`_ disagrees with `Process`_ on
whether a pid exists when ERROR_ACCESS_DENIED.
* 2360_, [macOS]: can't compile on macOS < 10.13. (patch by Ryan Schmidt)
* 2362_, [macOS]: can't compile on macOS 10.11. (patch by Ryan Schmidt)
* 2365_, [macOS]: can't compile on macOS < 10.9. (patch by Ryan Schmidt)
* 2395_, [OpenBSD]: `pid_exists()`_ erroneously return True if the argument is
a thread ID (TID) instead of a PID (process ID).
* 2412_, [macOS]: can't compile on macOS 10.4 PowerPC due to missing `MNT_`
constants.
* 2109_: the namedtuple returned by `disk_partitions()`_' no longer has
``maxfile`` and ``maxpath`` fields.
* 2396_: `process_iter()`_ no longer pre-emptively checks whether PIDs have
been reused. If you want to check for PID reusage you are supposed to use
`Process.is_running()`_ against the yielded `Process`_ instances. That will
also automatically remove reused PIDs from `process_iter()`_ internal cache.
* 2407_: `Process.connections()`_ was renamed to `Process.net_connections()`_.
The old name is still available, but it's deprecated (triggers a
``DeprecationWarning``) and will be removed in the future.
- from version 5.9.8
* 2343_, [FreeBSD]: filter `net_connections()`_ returned list in C instead of
Python, and avoid to retrieve unnecessary connection types unless explicitly
asked. E.g., on an IDLE system with few IPv6 connections this will run around
4 times faster. Before all connection types (TCP, UDP, UNIX) were retrieved
internally, even if only a portion was returned.
* 2342_, [NetBSD]: same as above (#2343) but for NetBSD.
* 2349_: adopted black formatting style.
* 930_, [NetBSD], [critical]: `net_connections()`_ implementation was broken.
It could either leak memory or core dump.
* 2340_, [NetBSD]: if process is terminated, `Process.cwd()`_ will return an
empty string instead of raising `NoSuchProcess`_.
* 2345_, [Linux]: fix compilation on older compiler missing DUPLEX_UNKNOWN.
* 2222_, [macOS]: `cpu_freq()` now returns fixed values for `min` and `max`
frequencies in all Apple Silicon chips.
- Drop obsolete patch to skip tests on Python 2
* skip_rlimit_tests_on_python2.patch
- Update patch to skip failing tests for new version
* skip_failing_tests.patch
-------------------------------------------------------------------
Fri Mar 22 10:40:19 UTC 2024 - Fabian Vogt <fvogt@suse.com>

View File

@ -23,7 +23,7 @@
%endif
%{?sle15_python_module_pythons}
Name: python-psutil
Version: 5.9.7
Version: 6.0.0
Release: 0
Summary: A process utilities module for Python
License: BSD-3-Clause
@ -32,8 +32,6 @@ Source: https://files.pythonhosted.org/packages/source/p/psutil/psutil-%
# PATCH-FIX-UPSTREAM skip_failing_tests.patch gh#giampaolo/psutil#1635 mcepl@suse.com
# skip tests failing because of incomplete emulation of the environment in osc build
Patch2: skip_failing_tests.patch
# PATCH-FIX-SLE skip_rlimit_tests_on_python2.patch alarrosa@suse.com
Patch3: skip_rlimit_tests_on_python2.patch
# PATCH-FIX-SLE adopt change of used memory of procps
Patch4: mem-used-bsc1181475.patch
BuildRequires: %{python_module devel}

View File

@ -1,36 +1,18 @@
Index: psutil-5.9.5/psutil/tests/test_misc.py
===================================================================
--- psutil-5.9.5.orig/psutil/tests/test_misc.py
+++ psutil-5.9.5/psutil/tests/test_misc.py
@@ -251,6 +251,7 @@ class TestMisc(PsutilTestCase):
# # XXX: https://github.com/pypa/setuptools/pull/2896
# @unittest.skipIf(APPVEYOR, "temporarily disabled due to setuptools bug")
+ # @unittest.skip("Fails in OBS")
# def test_setup_script(self):
# setup_py = os.path.join(ROOT_DIR, 'setup.py')
# if CI_TESTING and not os.path.exists(setup_py):
@@ -847,6 +848,7 @@ class TestScripts(PsutilTestCase):
src = f.read()
ast.parse(src)
diff -Nru psutil-6.0.0.orig/psutil/tests/test_contracts.py psutil-6.0.0/psutil/tests/test_contracts.py
--- psutil-6.0.0.orig/psutil/tests/test_contracts.py 2024-06-18 22:36:40.000000000 +0200
+++ psutil-6.0.0/psutil/tests/test_contracts.py 2024-07-17 14:20:15.685789923 +0200
@@ -249,6 +249,7 @@
self.assertIsInstance(k, str)
self.assert_ntuple_of_nums(v, type_=(int, long))
+ @unittest.skip("Fails in OBS")
def test_coverage(self):
# make sure all example scripts have a test method defined
meths = dir(self)
@@ -866,6 +868,7 @@ class TestScripts(PsutilTestCase):
if not stat.S_IXUSR & os.stat(path)[stat.ST_MODE]:
raise self.fail('%r is not executable' % path)
+ @unittest.skip("Fails in OBS")
def test_disk_usage(self):
self.assert_stdout('disk_usage.py')
Index: psutil-5.9.5/psutil/tests/test_linux.py
===================================================================
--- psutil-5.9.5.orig/psutil/tests/test_linux.py
+++ psutil-5.9.5/psutil/tests/test_linux.py
@@ -713,6 +713,7 @@ class TestSystemCPUCountLogical(PsutilTe
def test_disk_partitions(self):
# Duplicate of test_system.py. Keep it anyway.
for disk in psutil.disk_partitions():
diff -Nru psutil-6.0.0.orig/psutil/tests/test_linux.py psutil-6.0.0/psutil/tests/test_linux.py
--- psutil-6.0.0.orig/psutil/tests/test_linux.py 2024-06-18 23:00:36.000000000 +0200
+++ psutil-6.0.0/psutil/tests/test_linux.py 2024-07-17 14:20:15.685789923 +0200
@@ -756,6 +756,7 @@
self.assertEqual(psutil.cpu_count(logical=True), num)
@unittest.skipIf(not which("lscpu"), "lscpu utility not available")
@ -38,31 +20,31 @@ Index: psutil-5.9.5/psutil/tests/test_linux.py
def test_against_lscpu(self):
out = sh("lscpu -p")
num = len([x for x in out.split('\n') if not x.startswith('#')])
@@ -756,6 +757,7 @@ class TestSystemCPUCountLogical(PsutilTe
@@ -801,6 +802,7 @@
@unittest.skipIf(not LINUX, "LINUX only")
class TestSystemCPUCountCores(PsutilTestCase):
@unittest.skipIf(not which("lscpu"), "lscpu utility not available")
+ @unittest.skip("Fails in OBS")
def test_against_lscpu(self):
out = sh("lscpu -p")
core_ids = set()
@@ -1134,6 +1136,7 @@ class TestSystemDiskPartitions(PsutilTes
@@ -1196,6 +1198,7 @@
class TestSystemDiskPartitions(PsutilTestCase):
@unittest.skipIf(not hasattr(os, 'statvfs'), "os.statvfs() not available")
@skip_on_not_implemented()
+ @unittest.skip("Fails in OBS")
def test_against_df(self):
# test psutil.disk_usage() and psutil.disk_partitions()
# against "df -a"
@@ -1308,6 +1311,7 @@ class TestSystemDiskIoCounters(PsutilTes
@@ -1374,6 +1377,7 @@
self.assertEqual(ret.read_count, 1)
self.assertEqual(ret.write_count, 5)
+ @unittest.skip("Fails in OBS")
def test_emulate_use_sysfs(self):
def exists(path):
if path == '/proc/diskstats':
@@ -1351,6 +1355,7 @@ class TestRootFsDeviceFinder(PsutilTestC
return path == '/proc/diskstats'
@@ -1417,6 +1421,7 @@
finder.ask_sys_class_block()
@unittest.skipIf(GITHUB_ACTIONS, "unsupported on GITHUB_ACTIONS")
@ -70,15 +52,15 @@ Index: psutil-5.9.5/psutil/tests/test_linux.py
def test_comparisons(self):
finder = RootFsDeviceFinder()
self.assertIsNotNone(finder.find())
@@ -1378,6 +1383,7 @@ class TestRootFsDeviceFinder(PsutilTestC
@@ -1445,6 +1450,7 @@
findmnt_value = sh("findmnt -o SOURCE -rn /")
self.assertEqual(psutil_value, findmnt_value)
+ @unittest.skip("Fails in OBS")
def test_disk_partitions_mocked(self):
with mock.patch(
'psutil._pslinux.cext.disk_partitions',
@@ -1676,6 +1682,8 @@ class TestSensorsBattery(PsutilTestCase)
'psutil._pslinux.cext.disk_partitions',
@@ -1728,6 +1734,8 @@
self.assertIsNone(psutil.sensors_battery().power_plugged)
assert m.called
@ -87,7 +69,7 @@ Index: psutil-5.9.5/psutil/tests/test_linux.py
def test_emulate_energy_full_0(self):
# Emulate a case where energy_full files returns 0.
with mock_open_content(
@@ -1683,6 +1691,8 @@ class TestSensorsBattery(PsutilTestCase)
@@ -1736,6 +1744,8 @@
self.assertEqual(psutil.sensors_battery().percent, 0)
assert m.called
@ -96,7 +78,7 @@ Index: psutil-5.9.5/psutil/tests/test_linux.py
def test_emulate_energy_full_not_avail(self):
# Emulate a case where energy_full file does not exist.
# Expected fallback on /capacity.
@@ -2275,6 +2285,7 @@ class TestProcessAgainstStatus(PsutilTes
@@ -2324,6 +2334,7 @@
value = self.read_status_file("nonvoluntary_ctxt_switches:")
self.assertEqual(self.proc.num_ctx_switches().involuntary, value)
@ -104,11 +86,37 @@ Index: psutil-5.9.5/psutil/tests/test_linux.py
def test_cpu_affinity(self):
value = self.read_status_file("Cpus_allowed_list:")
if '-' in str(value):
Index: psutil-5.9.5/psutil/tests/test_posix.py
===================================================================
--- psutil-5.9.5.orig/psutil/tests/test_posix.py
+++ psutil-5.9.5/psutil/tests/test_posix.py
@@ -413,6 +413,7 @@ class TestSystemAPIs(PsutilTestCase):
diff -Nru psutil-6.0.0.orig/psutil/tests/test_misc.py psutil-6.0.0/psutil/tests/test_misc.py
--- psutil-6.0.0.orig/psutil/tests/test_misc.py 2024-06-18 22:36:40.000000000 +0200
+++ psutil-6.0.0/psutil/tests/test_misc.py 2024-07-17 14:20:15.682456583 +0200
@@ -343,6 +343,7 @@
# # XXX: https://github.com/pypa/setuptools/pull/2896
# @unittest.skipIf(APPVEYOR, "temporarily disabled due to setuptools bug")
+ # @unittest.skip("Fails in OBS")
# def test_setup_script(self):
# setup_py = os.path.join(ROOT_DIR, 'setup.py')
# if CI_TESTING and not os.path.exists(setup_py):
@@ -966,6 +967,7 @@
src = f.read()
ast.parse(src)
+ @unittest.skip("Fails in OBS")
def test_coverage(self):
# make sure all example scripts have a test method defined
meths = dir(self)
@@ -987,6 +989,7 @@
if not stat.S_IXUSR & os.stat(path)[stat.ST_MODE]:
raise self.fail('%r is not executable' % path)
+ @unittest.skip("Fails in OBS")
def test_disk_usage(self):
self.assert_stdout('disk_usage.py')
diff -Nru psutil-6.0.0.orig/psutil/tests/test_posix.py psutil-6.0.0/psutil/tests/test_posix.py
--- psutil-6.0.0.orig/psutil/tests/test_posix.py 2024-06-18 22:36:40.000000000 +0200
+++ psutil-6.0.0/psutil/tests/test_posix.py 2024-07-17 14:20:15.685789923 +0200
@@ -443,6 +443,7 @@
# AIX can return '-' in df output instead of numbers, e.g. for /proc
@unittest.skipIf(AIX, "unreliable on AIX")
@retry_on_failure()
@ -116,11 +124,40 @@ Index: psutil-5.9.5/psutil/tests/test_posix.py
def test_disk_usage(self):
def df(device):
try:
Index: psutil-5.9.5/psutil/tests/test_system.py
===================================================================
--- psutil-5.9.5.orig/psutil/tests/test_system.py
+++ psutil-5.9.5/psutil/tests/test_system.py
@@ -201,6 +201,7 @@ class TestMiscAPIs(PsutilTestCase):
diff -Nru psutil-6.0.0.orig/psutil/tests/test_process_all.py psutil-6.0.0/psutil/tests/test_process_all.py
--- psutil-6.0.0.orig/psutil/tests/test_process_all.py 2024-06-18 23:00:36.000000000 +0200
+++ psutil-6.0.0/psutil/tests/test_process_all.py 2024-07-17 14:28:46.700089665 +0200
@@ -15,6 +15,7 @@
import stat
import time
import traceback
+import unittest
import psutil
from psutil import AIX
@@ -130,6 +131,7 @@
ls.append(proc_info(pid))
return ls
+ @unittest.skip("Fails in OBS")
def test_all(self):
failures = []
for info in self.iter_proc_info():
diff -Nru psutil-6.0.0.orig/psutil/tests/test_process.py psutil-6.0.0/psutil/tests/test_process.py
--- psutil-6.0.0.orig/psutil/tests/test_process.py 2024-06-18 22:36:40.000000000 +0200
+++ psutil-6.0.0/psutil/tests/test_process.py 2024-07-17 14:20:15.685789923 +0200
@@ -360,6 +360,7 @@
@unittest.skipIf(not HAS_IONICE, "not supported")
@unittest.skipIf(not LINUX, "linux only")
+ @unittest.skip("Unreliable in OBS")
def test_ionice_linux(self):
def cleanup(init):
ioclass, value = init
diff -Nru psutil-6.0.0.orig/psutil/tests/test_system.py psutil-6.0.0/psutil/tests/test_system.py
--- psutil-6.0.0.orig/psutil/tests/test_system.py 2024-06-18 22:36:40.000000000 +0200
+++ psutil-6.0.0/psutil/tests/test_system.py 2024-07-17 14:25:27.213045941 +0200
@@ -243,6 +243,7 @@
self.assertLess(bt, time.time())
@unittest.skipIf(CI_TESTING and not psutil.users(), "unreliable on CI")
@ -128,7 +165,15 @@ Index: psutil-5.9.5/psutil/tests/test_system.py
def test_users(self):
users = psutil.users()
self.assertNotEqual(users, [])
@@ -586,6 +587,7 @@ class TestDiskAPIs(PsutilTestCase):
@@ -591,6 +592,7 @@
MACOS and platform.machine() == 'arm64', "skipped due to #1892"
)
@unittest.skipIf(not HAS_CPU_FREQ, "not supported")
+ @unittest.skip("Fails in OBS")
def test_cpu_freq(self):
def check_ls(ls):
for nt in ls:
@@ -662,6 +664,7 @@
def test_disk_usage_bytes(self):
psutil.disk_usage(b'.')
@ -136,27 +181,3 @@ Index: psutil-5.9.5/psutil/tests/test_system.py
def test_disk_partitions(self):
def check_ntuple(nt):
self.assertIsInstance(nt.device, str)
Index: psutil-5.9.5/psutil/tests/test_contracts.py
===================================================================
--- psutil-5.9.5.orig/psutil/tests/test_contracts.py
+++ psutil-5.9.5/psutil/tests/test_contracts.py
@@ -251,6 +251,7 @@ class TestSystemAPITypes(PsutilTestCase)
self.assertIsInstance(k, str)
self.assert_ntuple_of_nums(v, type_=(int, long))
+ @unittest.skip("Fails in OBS")
def test_disk_partitions(self):
# Duplicate of test_system.py. Keep it anyway.
for disk in psutil.disk_partitions():
Index: psutil-5.9.5/psutil/tests/test_process.py
===================================================================
--- psutil-5.9.5.orig/psutil/tests/test_process.py
+++ psutil-5.9.5/psutil/tests/test_process.py
@@ -346,6 +346,7 @@ class TestProcess(PsutilTestCase):
@unittest.skipIf(not HAS_IONICE, "not supported")
@unittest.skipIf(not LINUX, "linux only")
+ @unittest.skip("Unreliable in OBS")
def test_ionice_linux(self):
p = psutil.Process()
if not CI_TESTING:

View File

@ -1,56 +0,0 @@
---
psutil/tests/test_process.py | 6 ++++++
1 file changed, 6 insertions(+)
Index: psutil-5.9.6/psutil/tests/test_process.py
===================================================================
--- psutil-5.9.6.orig/psutil/tests/test_process.py
+++ psutil-5.9.6/psutil/tests/test_process.py
@@ -419,6 +419,7 @@ class TestProcess(PsutilTestCase):
p.ionice(init)
@unittest.skipIf(not HAS_RLIMIT, "not supported")
+ @unittest.skipIf(sys.version_info.major == 2, "not supported on python2")
def test_rlimit_get(self):
import resource
p = psutil.Process(os.getpid())
@@ -442,6 +443,7 @@ class TestProcess(PsutilTestCase):
self.assertGreaterEqual(ret[1], -1)
@unittest.skipIf(not HAS_RLIMIT, "not supported")
+ @unittest.skipIf(sys.version_info.major == 2, "not supported on python2")
def test_rlimit_set(self):
p = self.spawn_psproc()
p.rlimit(psutil.RLIMIT_NOFILE, (5, 5))
@@ -455,6 +457,7 @@ class TestProcess(PsutilTestCase):
p.rlimit(psutil.RLIMIT_NOFILE, (5, 5, 5))
@unittest.skipIf(not HAS_RLIMIT, "not supported")
+ @unittest.skipIf(sys.version_info.major == 2, "not supported on python2")
def test_rlimit(self):
p = psutil.Process()
testfn = self.get_testfn()
@@ -475,6 +478,7 @@ class TestProcess(PsutilTestCase):
self.assertEqual(p.rlimit(psutil.RLIMIT_FSIZE), (soft, hard))
@unittest.skipIf(not HAS_RLIMIT, "not supported")
+ @unittest.skipIf(sys.version_info.major == 2, "not supported on python2")
def test_rlimit_infinity(self):
# First set a limit, then re-set it by specifying INFINITY
# and assume we overridden the previous limit.
@@ -490,6 +494,7 @@ class TestProcess(PsutilTestCase):
self.assertEqual(p.rlimit(psutil.RLIMIT_FSIZE), (soft, hard))
@unittest.skipIf(not HAS_RLIMIT, "not supported")
+ @unittest.skipIf(sys.version_info.major == 2, "not supported on python2")
def test_rlimit_infinity_value(self):
# RLIMIT_FSIZE should be RLIM_INFINITY, which will be a really
# big number on a platform with large file support. On these
@@ -1303,6 +1308,7 @@ class TestProcess(PsutilTestCase):
assert_raises_nsp(fun, name)
@unittest.skipIf(not POSIX, 'POSIX only')
+ @unittest.skipIf(sys.version_info.major == 2, "not supported on python2")
def test_zombie_process(self):
parent, zombie = self.spawn_zombie()
self.assertProcessZombie(zombie)