Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update psutil to 6.1.0 #2664

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open

Conversation

pyup-bot
Copy link
Collaborator

This PR updates psutil from 5.8.0 to 6.1.0.

Changelog

6.1.0

=====

2024-10-17

**Enhancements**

- 2366_, [Windows]: drastically speedup `process_iter()`_. We now determine
process unique identity by using process "fast" create time method. This
will considerably speedup those apps which use `process_iter()`_ only once,
e.g. to look for a process with a certain name.
- 2446_: use pytest instead of unittest.
- 2448_: add ``make install-sysdeps`` target to install the necessary system
dependencies (python-dev, gcc, etc.) on all supported UNIX flavors.
- 2449_: add ``make install-pydeps-test`` and ``make install-pydeps-dev``
targets. They can be used to install dependencies meant for running tests and
for local development. They can also be installed via ``pip install .[test]``
and ``pip install .[dev]``.
- 2456_: allow to run tests via ``python3 -m psutil.tests`` even if ``pytest``
module is not installed. This is useful for production environments that
don't have pytest installed, but still want to be able to test psutil
installation.

**Bug fixes**

- 2427_: psutil (segfault) on import in the free-threaded (no GIL) version of
Python 3.13.  (patch by Sam Gross)
- 2455_, [Linux]: ``IndexError`` may occur when reading /proc/pid/stat and
field 40 (blkio_ticks) is missing.
- 2457_, [AIX]: significantly improve the speed of `Process.open_files()`_ for
some edge cases.
- 2460_, [OpenBSD]: `Process.num_fds()`_ and `Process.open_files()`_ may fail
with `NoSuchProcess`_ for PID 0. Instead, we now return "null" values (0 and
[] respectively).

6.0.0

- 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.

5.9.8

=====

2024-01-19

**Enhancements**

- 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.

**Bug fixes**

- 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.

5.9.7

=====

2023-12-17

**Enhancements**

- 2324_: enforce Ruff rule `raw-string-in-exception`, which helps providing
clearer tracebacks when exceptions are raised by psutil.

**Bug fixes**

- 2325_, [PyPy]: psutil did not compile on PyPy due to missing
`PyErr_SetExcFromWindowsErrWithFilenameObject` cPython API.

5.9.6

=====

2023-10-15

**Enhancements**

- 1703_: `cpu_percent()`_ and `cpu_times_percent()`_ are now thread safe,
meaning they can be called from different threads and still return
meaningful and independent results. Before, if (say) 10 threads called
``cpu_percent(interval=None)`` at the same time, only 1 thread out of 10
would get the right result.
- 2266_: if `Process`_ class is passed a very high PID, raise `NoSuchProcess`_
instead of OverflowError.  (patch by Xuehai Pan)
- 2246_: drop python 3.4 & 3.5 support.  (patch by Matthieu Darbois)
- 2290_: PID reuse is now pre-emptively checked for `Process.ppid()`_  and
`Process.parents()`_.
- 2312_: use ``ruff`` Python linter instead of ``flake8 + isort``. It's an
order of magnitude faster + it adds a ton of new code quality checks.

**Bug fixes**

- 2195_, [Linux]: no longer print exception at import time in case /proc/stat
can't be read due to permission error. Redirect it to ``PSUTIL_DEBUG``
instead.
- 2241_, [NetBSD]: can't compile On NetBSD 10.99.3/amd64.  (patch by Thomas
Klausner)
- 2245_, [Windows]: fix var unbound error on possibly in `swap_memory()`_
(patch by student_2333)
- 2268_: ``bytes2human()`` utility function was unable to properly represent
negative values.
- 2252_, [Windows]: `disk_usage()`_ fails on Python 3.12+.  (patch by
Matthieu Darbois)
- 2284_, [Linux]: `Process.memory_full_info()`_ may incorrectly raise
`ZombieProcess`_ if it's determined via ``/proc/pid/smaps_rollup``. Instead
we now fallback on reading ``/proc/pid/smaps``.
- 2287_, [OpenBSD], [NetBSD]: `Process.is_running()`_ erroneously return
``False`` for zombie processes, because creation time cannot be determined.
- 2288_, [Linux]: correctly raise `ZombieProcess`_ on `Process.exe()`_,
`Process.cmdline()`_ and `Process.memory_maps()`_ instead of returning a
"null" value.
- 2290_: differently from what stated in the doc, PID reuse is not
pre-emptively checked for `Process.nice()`_ (set), `Process.ionice()`_,
(set), `Process.cpu_affinity()`_ (set), `Process.rlimit()`_
(set), `Process.parent()`_.
- 2308_, [OpenBSD]: `Process.threads()`_ always fail with AccessDenied (also as
root).

5.9.5

=====

2023-04-17

**Enhancements**

- 2196_: in case of exception, display a cleaner error traceback by hiding the
`KeyError` bit deriving from a missed cache hit.
- 2217_: print the full traceback when a `DeprecationWarning` or `UserWarning`
is raised.
- 2230_, [OpenBSD]: `net_connections()`_ implementation was rewritten
from scratch:
- We're now able to retrieve the path of AF_UNIX sockets (before it was an
empty string)
- The function is faster since it no longer iterates over all processes.
- No longer produces duplicate connection entries.
- 2238_: there are cases where `Process.cwd()`_ cannot be determined
(e.g. directory no longer exists), in which case we returned either ``None``
or an empty string. This was consolidated and we now return ``""`` on all
platforms.
- 2239_, [UNIX]: if process is a zombie, and we can only determine part of the
its truncated `Process.name()`_ (15 chars), don't fail with `ZombieProcess`_
when we try to guess the full name from the `Process.cmdline()`_. Just
return the truncated name.
- 2240_, [NetBSD], [OpenBSD]: add CI testing on every commit for NetBSD and
OpenBSD platforms (python 3 only).

**Bug fixes**

- 1043_, [OpenBSD] `net_connections()`_ returns duplicate entries.
- 1915_, [Linux]: on certain kernels, ``"MemAvailable"`` field from
``/proc/meminfo`` returns ``0`` (possibly a kernel bug), in which case we
calculate an approximation for ``available`` memory which matches "free"
CLI utility.
- 2164_, [Linux]: compilation fails on kernels < 2.6.27 (e.g. CentOS 5).
- 2186_, [FreeBSD]: compilation fails with Clang 15.  (patch by Po-Chuan Hsieh)
- 2191_, [Linux]: `disk_partitions()`_: do not unnecessarily read
/proc/filesystems and raise `AccessDenied`_ unless user specified `all=False`
argument.
- 2216_, [Windows]: fix tests when running in a virtual environment (patch by
Matthieu Darbois)
- 2225_, [POSIX]: `users()`_ loses precision for ``started`` attribute (off by
1 minute).
- 2229_, [OpenBSD]: unable to properly recognize zombie processes.
`NoSuchProcess`_ may be raised instead of `ZombieProcess`_.
- 2231_, [NetBSD]: *available*  `virtual_memory()`_ is higher than *total*.
- 2234_, [NetBSD]: `virtual_memory()`_ metrics are wrong: *available* and
*used* are too high. We now match values shown by *htop* CLI utility.
- 2236_, [NetBSD]: `Process.num_threads()`_ and `Process.threads()`_ return
threads that are already terminated.
- 2237_, [OpenBSD], [NetBSD]: `Process.cwd()`_ may raise ``FileNotFoundError``
if cwd no longer exists. Return an empty string instead.

5.9.4

=====

2022-11-07

**Enhancements**

- 2102_: use Limited API when building wheels with CPython 3.6+ on Linux,
macOS and Windows. This allows to use pre-built wheels in all future versions
of cPython 3.  (patch by Matthieu Darbois)

**Bug fixes**

- 2077_, [Windows]: Use system-level values for `virtual_memory()`_. (patch by
Daniel Widdis)
- 2156_, [Linux]: compilation may fail on very old gcc compilers due to missing
``SPEED_UNKNOWN`` definition.  (patch by Amir Rossert)
- 2010_, [macOS]: on MacOS, arm64 ``IFM_1000_TX`` and ``IFM_1000_T`` are the
same value, causing a build failure.  (patch by Lawrence D'Anna)
- 2160_, [Windows]: Get Windows percent swap usage from performance counters.
(patch by Daniel Widdis)

5.9.3

=====

2022-10-18

**Enhancements**

- 2040_, [macOS]: provide wheels for arm64 architecture.  (patch by Matthieu
Darbois)

**Bug fixes**

- 2116_, [macOS], [critical]: `net_connections()`_ fails with RuntimeError.
- 2135_, [macOS]: `Process.environ()`_ may contain garbage data. Fix
out-of-bounds read around ``sysctl_procargs``.  (patch by Bernhard Urban-Forster)
- 2138_, [Linux], **[critical]**: can't compile psutil on Android due to
undefined ``ethtool_cmd_speed`` symbol.
- 2142_, [POSIX]: `net_if_stats()`_ 's ``flags`` on Python 2 returned unicode
instead of str.  (patch by Matthieu Darbois)
- 2147_, [macOS] Fix disk usage report on macOS 12+.  (patch by Matthieu Darbois)
- 2150_, [Linux] `Process.threads()`_ may raise ``NoSuchProcess``. Fix race
condition.  (patch by Daniel Li)
- 2153_, [macOS] Fix race condition in test_posix.TestProcess.test_cmdline.
(patch by Matthieu Darbois)

5.9.2

=====

2022-09-04

**Bug fixes**

- 2093_, [FreeBSD], **[critical]**: `pids()`_ may fail with ENOMEM. Dynamically
increase the ``malloc()`` buffer size until it's big enough.
- 2095_, [Linux]: `net_if_stats()`_ returns incorrect interface speed for
100GbE network cards.
- 2113_, [FreeBSD], **[critical]**: `virtual_memory()`_ may raise ENOMEM due to
missing ``include <sys/param.h>`` directive.  (patch by Peter Jeremy)
- 2128_, [NetBSD]: `swap_memory()`_ was miscalculated.  (patch by Thomas Klausner)

5.9.1

=====

2022-05-20

**Enhancements**

- 1053_: drop Python 2.6 support.  (patches by Matthieu Darbois and Hugo van
Kemenade)
- 2037_: Add additional flags to net_if_stats.
- 2050_, [Linux]: increase ``read(2)`` buffer size from 1k to 32k when reading
``/proc`` pseudo files line by line. This should help having more consistent
results.
- 2057_, [OpenBSD]: add support for `cpu_freq()`_.
- 2107_, [Linux]: `Process.memory_full_info()`_ (reporting process USS/PSS/Swap
memory) now reads ``/proc/pid/smaps_rollup`` instead of ``/proc/pids/smaps``,
which makes it 5 times faster.

**Bug fixes**

- 2048_: ``AttributeError`` is raised if ``psutil.Error`` class is raised
manually and passed through ``str``.
- 2049_, [Linux]: `cpu_freq()`_ erroneously returns ``curr`` value in GHz while
``min`` and ``max`` are in MHz.
- 2050_, [Linux]: `virtual_memory()`_ may raise ``ValueError`` if running in a
LCX container.

5.9.0

=====

2021-12-29

**Enhancements**

- 1851_, [Linux]: `cpu_freq()`_ is slow on systems with many CPUs. Read current
frequency values for all CPUs from ``/proc/cpuinfo`` instead of opening many
files in ``/sys`` fs.  (patch by marxin)
- 1992_: `NoSuchProcess`_ message now specifies if the PID has been reused.
- 1992_: error classes (`NoSuchProcess`_, `AccessDenied`_, etc.) now have a better
formatted and separated ``__repr__`` and ``__str__`` implementations.
- 1996_, [BSD]: add support for MidnightBSD.  (patch by Saeed Rasooli)
- 1999_, [Linux]: `disk_partitions()`_: convert ``/dev/root`` device (an alias
used on some Linux distros) to real root device path.
- 2005_: ``PSUTIL_DEBUG`` mode now prints file name and line number of the debug
messages coming from C extension modules.
- 2042_: rewrite HISTORY.rst to use hyperlinks pointing to psutil API doc.

**Bug fixes**

- 1456_, [macOS], **[critical]**: `cpu_freq()`_ ``min`` and ``max`` are set to
0 if can't be determined (instead of crashing).
- 1512_, [macOS]: sometimes `Process.connections()`_ will crash with
``EOPNOTSUPP`` for one connection; this is now ignored.
- 1598_, [Windows]: `disk_partitions()`_ only returns mountpoints on drives
where it first finds one.
- 1874_, [SunOS]: swap output error due to incorrect range.
- 1892_, [macOS]: `cpu_freq()`_ broken on Apple M1.
- 1901_, [macOS]: different functions, especially `Process.open_files()`_ and
`Process.connections()`_, could randomly raise `AccessDenied`_ because the
internal buffer of ``proc_pidinfo(PROC_PIDLISTFDS)`` syscall was not big enough.
We now dynamically increase the buffer size until it's big enough instead of
giving up and raising `AccessDenied`_, which was a fallback to avoid crashing.
- 1904_, [Windows]: ``OpenProcess`` fails with ``ERROR_SUCCESS`` due to
``GetLastError()`` called after ``sprintf()``.  (patch by alxchk)
- 1913_, [Linux]: `wait_procs()`_ should catch ``subprocess.TimeoutExpired``
exception.
- 1919_, [Linux]: `sensors_battery()`_ can raise ``TypeError`` on PureOS.
- 1921_, [Windows]: `swap_memory()`_ shows committed memory instead of swap.
- 1940_, [Linux]: psutil does not handle ``ENAMETOOLONG`` when accessing process
file descriptors in procfs.  (patch by Nikita Radchenko)
- 1948_, **[critical]**: ``memoize_when_activated`` decorator is not thread-safe.
(patch by Xuehai Pan)
- 1953_, [Windows], **[critical]**: `disk_partitions()`_ crashes due to
insufficient buffer len. (patch by MaWe2019)
- 1965_, [Windows], **[critical]**: fix "Fatal Python error: deallocating None"
when calling `users()`_ multiple times.
- 1980_, [Windows]: 32bit / WoW64 processes fails to read `Process.name()`_ longer
than 128 characters resulting in `AccessDenied`_. This is now fixed.  (patch
by PetrPospisil)
- 1991_, **[critical]**: `process_iter()`_ is not thread safe and can raise
``TypeError`` if invoked from multiple threads.
- 1956_, [macOS]: `Process.cpu_times()`_ reports incorrect timings on M1 machines.
(patch by Olivier Dormond)
- 2023_, [Linux]: `cpu_freq()`_ return order is wrong on systems with more than
9 CPUs.
Links

@pyup-bot pyup-bot mentioned this pull request Oct 17, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant