giampaolo/psutil (psutil)
### [`v6.1.0`](https://redirect.github.com/giampaolo/psutil/blob/HEAD/HISTORY.rst#610)
[Compare Source](https://redirect.github.com/giampaolo/psutil/compare/release-6.0.0...release-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).
### [`v6.0.0`](https://redirect.github.com/giampaolo/psutil/blob/HEAD/HISTORY.rst#600)
[Compare Source](https://redirect.github.com/giampaolo/psutil/compare/release-5.9.8...release-6.0.0)
\======
2024-06-18
**Enhancements**
- 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)
**Bug fixes**
- 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.
**Porting notes**
Version 6.0.0 introduces some changes which affect backward compatibility:
- 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.
### [`v5.9.8`](https://redirect.github.com/giampaolo/psutil/blob/HEAD/HISTORY.rst#598)
[Compare Source](https://redirect.github.com/giampaolo/psutil/compare/release-5.9.7...release-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](https://redirect.github.com/giampaolo/psutil/issues/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.
### [`v5.9.7`](https://redirect.github.com/giampaolo/psutil/blob/HEAD/HISTORY.rst#597)
[Compare Source](https://redirect.github.com/giampaolo/psutil/compare/release-5.9.6...release-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.
### [`v5.9.6`](https://redirect.github.com/giampaolo/psutil/blob/HEAD/HISTORY.rst#596)
[Compare Source](https://redirect.github.com/giampaolo/psutil/compare/release-5.9.5...release-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).
Configuration
π Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
π¦ Automerge: Disabled by config. Please merge this manually once you are satisfied.
β» Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
π Ignore: Close this PR and you won't be reminded about this update again.
[ ] If you want to rebase/retry this PR, check this box
This PR contains the following updates:
==5.9.5
->==6.1.0
Release Notes
giampaolo/psutil (psutil)
### [`v6.1.0`](https://redirect.github.com/giampaolo/psutil/blob/HEAD/HISTORY.rst#610) [Compare Source](https://redirect.github.com/giampaolo/psutil/compare/release-6.0.0...release-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). ### [`v6.0.0`](https://redirect.github.com/giampaolo/psutil/blob/HEAD/HISTORY.rst#600) [Compare Source](https://redirect.github.com/giampaolo/psutil/compare/release-5.9.8...release-6.0.0) \====== 2024-06-18 **Enhancements** - 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) **Bug fixes** - 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. **Porting notes** Version 6.0.0 introduces some changes which affect backward compatibility: - 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. ### [`v5.9.8`](https://redirect.github.com/giampaolo/psutil/blob/HEAD/HISTORY.rst#598) [Compare Source](https://redirect.github.com/giampaolo/psutil/compare/release-5.9.7...release-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](https://redirect.github.com/giampaolo/psutil/issues/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. ### [`v5.9.7`](https://redirect.github.com/giampaolo/psutil/blob/HEAD/HISTORY.rst#597) [Compare Source](https://redirect.github.com/giampaolo/psutil/compare/release-5.9.6...release-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. ### [`v5.9.6`](https://redirect.github.com/giampaolo/psutil/blob/HEAD/HISTORY.rst#596) [Compare Source](https://redirect.github.com/giampaolo/psutil/compare/release-5.9.5...release-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).Configuration
π Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
π¦ Automerge: Disabled by config. Please merge this manually once you are satisfied.
β» Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
π Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.