diff options
author | Giampaolo Rodola <g.rodola@gmail.com> | 2021-12-28 18:38:05 +0100 |
---|---|---|
committer | Giampaolo Rodola <g.rodola@gmail.com> | 2021-12-28 18:38:05 +0100 |
commit | 77d99fe27817d32a56369322abeb5ddff2d500c9 (patch) | |
tree | 018cbbef64934b4c52f031ab5484e2e45ffda172 | |
parent | 969141f52ba74116c9eb40cda31828fa9006c8e4 (diff) | |
download | psutil-77d99fe27817d32a56369322abeb5ddff2d500c9.tar.gz |
big reformatting of labels
Signed-off-by: Giampaolo Rodola <g.rodola@gmail.com>
-rw-r--r-- | HISTORY.rst | 980 |
1 files changed, 490 insertions, 490 deletions
diff --git a/HISTORY.rst b/HISTORY.rst index c782a523..cd8c41a0 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -7,54 +7,54 @@ XXXX-XX-XX **Enhancements** -- 1851_: [Linux] `cpu_freq()`_ is slow on systems with many CPUs. Read current +- 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_: add support for MidnightBSD. (patch by Saeed Rasooli) -- 1999_: [Linux] `disk_partitions()`_: convert "/dev/root" device (an alias used +- 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. **Bug fixes** -- 1456_: [macOS] `cpu_freq()`_ ``min`` and ``max`` are set to 0 if can't be +- 1456_, [macOS]: `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 +- 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 +- 1598_, [Windows]: `disk_partitions()`_ only returns mountpoints on drives where it first finds one -- 1874_: [Solaris] swap output error due to incorrect range. -- 1892_: [macOS] `cpu_freq()`_ broken on Apple M1. -- 1901_: [macOS] different functions, especially `Process.open_files()`_ and +- 1874_, [Solaris]: 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 +- 1904_, [Windows]: ``OpenProcess`` fails with ``ERROR_SUCCESS`` due to ``GetLastError()`` called after ``sprintf()``. (patch by alxchk) -- 1913_: [Linux] `wait_procs()`_ seemingly ignoring timeout, TimeoutExpired thrown -- 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 +- 1913_, [Linux]: `wait_procs()`_ seemingly ignoring timeout, TimeoutExpired thrown +- 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_: Process' ``memoize_when_activated`` decorator was not thread-safe. (patch by Xuehai Pan) -- 1953_: [Windows] `disk_partitions()`_ crashes due to insufficient buffer len. +- 1953_, [Windows]: `disk_partitions()`_ crashes due to insufficient buffer len. (patch by MaWe2019) -- 1965_: [Windows] fix "Fatal Python error: deallocating ``None``" when calling +- 1965_, [Windows]: fix "Fatal Python error: deallocating ``None``" when calling `users()`_ multiple times. -- 1980_: [Windows] 32bit / WOW64 processes fails to read `Process.name()`_ longer +- 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_: `process_iter()`_ can raise ``TypeError`` if invoked from multiple threads (not thread-safe). -- 1956_: [macOS] `Process.cpu_times()`_ reports incorrect timings on M1 machines. +- 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 > 9 CPUs. +- 2023_, [Linux]: `cpu_freq()`_ return order is wrong on systems with > 9 CPUs. 5.8.0 ===== @@ -65,7 +65,7 @@ XXXX-XX-XX - 1863_: `disk_partitions()`_ exposes 2 extra fields: ``maxfile`` and ``maxpath``, which are the maximum file name and path name length. -- 1872_: [Windows] added support for PyPy 2.7. +- 1872_, [Windows]: added support for PyPy 2.7. - 1879_: provide pre-compiled wheels for Linux and macOS (yey!). - 1880_: get rid of Travis and Cirrus CI services (they are no longer free). CI testing is now done by GitHub Actions on Linux, macOS and FreeBSD (yes). @@ -73,20 +73,20 @@ XXXX-XX-XX **Bug fixes** -- 1708_: [Linux] get rid of `sensors_temperatures()`_ duplicates. (patch by Tim +- 1708_, [Linux]: get rid of `sensors_temperatures()`_ duplicates. (patch by Tim Schlueter). -- 1839_: [Windows] always raise `AccessDenied`_ when failing to query 64 processes +- 1839_, [Windows]: always raise `AccessDenied`_ when failing to query 64 processes from 32 bit ones (``NtWoW64`` APIs). -- 1866_: [Windows] `Process.exe()`_, `Process.cmdline()`_, `Process.environ()`_ +- 1866_, [Windows]: `Process.exe()`_, `Process.cmdline()`_, `Process.environ()`_ may raise "invalid access to memory location" on Python 3.9. -- 1874_: [Solaris] wrong swap output given when encrypted column is present. -- 1875_: [Windows] `Process.username()`_ may raise ``ERROR_NONE_MAPPED`` if the SID +- 1874_, [Solaris]: wrong swap output given when encrypted column is present. +- 1875_, [Windows]: `Process.username()`_ may raise ``ERROR_NONE_MAPPED`` if the SID has no corresponding account name. In this case `AccessDenied`_ is now raised. -- 1877_: [Windows] ``OpenProcess`` may fail with ``ERROR_SUCCESS``. Turn it into +- 1877_, [Windows]: ``OpenProcess`` may fail with ``ERROR_SUCCESS``. Turn it into `AccessDenied`_ or `NoSuchProcess`_ depending on whether the PID is alive. -- 1886_: [macOS] EIO error may be raised on `Process.cmdline()`_ and +- 1886_, [macOS]: EIO error may be raised on `Process.cmdline()`_ and `Process.environ()`_. Now it gets translated into `AccessDenied`_. -- 1891_: [macOS] get rid of deprecated ``getpagesize()``. +- 1891_, [macOS]: get rid of deprecated ``getpagesize()``. 5.7.3 ===== @@ -95,23 +95,23 @@ XXXX-XX-XX **Enhancements** -- 809_: [FreeBSD] add support for `Process.rlimit()`_. -- 893_: [BSD] add support for `Process.environ()`_ (patch by Armin Gruner) -- 1830_: [UNIX] `net_if_stats()`_ `isup` also checks whether the NIC is +- 809_, [FreeBSD]: add support for `Process.rlimit()`_. +- 893_, [BSD]: add support for `Process.environ()`_ (patch by Armin Gruner) +- 1830_, [UNIX]: `net_if_stats()`_ `isup` also checks whether the NIC is running (meaning Wi-Fi or ethernet cable is connected). (patch by Chris Burger) -- 1837_: [Linux] improved battery detection and charge "secsleft" calculation +- 1837_, [Linux]: improved battery detection and charge "secsleft" calculation (patch by aristocratos) **Bug fixes** -- 1620_: [Linux] `cpu_count()`_ with ``logical=False`` result is incorrect on +- 1620_, [Linux]: `cpu_count()`_ with ``logical=False`` result is incorrect on systems with more than one CPU socket. (patch by Vincent A. Arcila) -- 1738_: [macOS] `Process.exe()`_ may raise ``FileNotFoundError`` if process is still +- 1738_, [macOS]: `Process.exe()`_ may raise ``FileNotFoundError`` if process is still alive but the exe file which launched it got deleted. -- 1791_: [macOS] fix missing include for ``getpagesize()``. -- 1823_: [Windows] `Process.open_files()`_ may cause a segfault due to a NULL +- 1791_, [macOS]: fix missing include for ``getpagesize()``. +- 1823_, [Windows]: `Process.open_files()`_ may cause a segfault due to a NULL pointer. -- 1838_: [Linux] `sensors_battery()`_: if `percent` can be determined but not +- 1838_, [Linux]: `sensors_battery()`_: if `percent` can be determined but not the remaining values, still return a result instead of ``None``. (patch by aristocratos) @@ -149,15 +149,15 @@ XXXX-XX-XX psutil.Process(pid=12739, name='python3', status='terminated', exitcode=<Negsigs.SIGTERM: -15>, started='15:08:20') - 1757_: memory leak tests are now stable. -- 1768_: [Windows] added support for Windows Nano Server. (contributed by +- 1768_, [Windows]: added support for Windows Nano Server. (contributed by Julien Lebot) **Bug fixes** -- 1726_: [Linux] `cpu_freq()`_ parsing should use spaces instead of tabs on ia64. +- 1726_, [Linux]: `cpu_freq()`_ parsing should use spaces instead of tabs on ia64. (patch by Michał Górny) -- 1760_: [Linux] `Process.rlimit()`_ does not handle long long type properly. -- 1766_: [macOS] `NoSuchProcess`_ may be raised instead of `ZombieProcess`_. +- 1760_, [Linux]: `Process.rlimit()`_ does not handle long long type properly. +- 1766_, [macOS]: `NoSuchProcess`_ may be raised instead of `ZombieProcess`_. - 1781_: fix signature of callback function for `getloadavg()`_. (patch by Ammar Askar) @@ -168,42 +168,42 @@ XXXX-XX-XX **Enhancements** -- 1637_: [SunOS] add partial support for old SunOS 5.10 Update 0 to 3. -- 1648_: [Linux] `sensors_temperatures()`_ looks into an additional +- 1637_, [SunOS]: add partial support for old SunOS 5.10 Update 0 to 3. +- 1648_, [Linux]: `sensors_temperatures()`_ looks into an additional ``/sys/device/`` directory for additional data. (patch by Javad Karabi) -- 1652_: [Windows] dropped support for Windows XP and Windows Server 2003. +- 1652_, [Windows]: dropped support for Windows XP and Windows Server 2003. Minimum supported Windows version now is Windows Vista. -- 1671_: [FreeBSD] add CI testing/service for FreeBSD (Cirrus CI). -- 1677_: [Windows] `Process.exe()`_ will succeed for all process PIDs (instead of +- 1671_, [FreeBSD]: add CI testing/service for FreeBSD (Cirrus CI). +- 1677_, [Windows]: `Process.exe()`_ will succeed for all process PIDs (instead of raising `AccessDenied`_). -- 1679_: [Windows] `net_connections()`_ and `Process.connections()`_ are 10% faster. -- 1682_: [PyPy] added CI / test integration for PyPy via Travis. -- 1686_: [Windows] added support for PyPy on Windows. -- 1693_: [Windows] `boot_time()`_, `Process.create_time()`_ and `users()`_'s +- 1679_, [Windows]: `net_connections()`_ and `Process.connections()`_ are 10% faster. +- 1682_, [PyPy]: added CI / test integration for PyPy via Travis. +- 1686_, [Windows]: added support for PyPy on Windows. +- 1693_, [Windows]: `boot_time()`_, `Process.create_time()`_ and `users()`_'s login time now have 1 micro second precision (before the precision was of 1 second). **Bug fixes** -- 1538_: [NetBSD] `Process.cwd()`_ may return ``ENOENT`` instead of `NoSuchProcess`_. -- 1627_: [Linux] `Process.memory_maps()`_ can raise ``KeyError``. -- 1642_: [SunOS] querying basic info for PID 0 results in ``FileNotFoundError``. -- 1646_: [FreeBSD] many Process methods may cause a segfault on FreeBSD 12.0 +- 1538_, [NetBSD]: `Process.cwd()`_ may return ``ENOENT`` instead of `NoSuchProcess`_. +- 1627_, [Linux]: `Process.memory_maps()`_ can raise ``KeyError``. +- 1642_, [SunOS]: querying basic info for PID 0 results in ``FileNotFoundError``. +- 1646_, [FreeBSD]: many Process methods may cause a segfault on FreeBSD 12.0 due to a backward incompatible change in a C type introduced in 12.0. -- 1656_: [Windows] `Process.memory_full_info()`_ raises `AccessDenied`_ even for the +- 1656_, [Windows]: `Process.memory_full_info()`_ raises `AccessDenied`_ even for the current user and os.getpid(). -- 1660_: [Windows] `Process.open_files()`_ complete rewrite + check of errors. -- 1662_: [Windows] `Process.exe()`_ may raise WinError 0. -- 1665_: [Linux] `disk_io_counters()`_ does not take into account extra fields +- 1660_, [Windows]: `Process.open_files()`_ complete rewrite + check of errors. +- 1662_, [Windows]: `Process.exe()`_ may raise WinError 0. +- 1665_, [Linux]: `disk_io_counters()`_ does not take into account extra fields added to recent kernels. (patch by Mike Hommey) - 1672_: use the right C type when dealing with PIDs (int or long). Thus far (long) was almost always assumed, which is wrong on most platforms. -- 1673_: [OpenBSD] `Process.connections()`_, `Process.num_fds()`_ and +- 1673_, [OpenBSD]: `Process.connections()`_, `Process.num_fds()`_ and `Process.threads()`_ returned improper exception if process is gone. -- 1674_: [SunOS] `disk_partitions()`_ may raise ``OSError``. -- 1684_: [Linux] `disk_io_counters()`_ may raise ``ValueError`` on systems not +- 1674_, [SunOS]: `disk_partitions()`_ may raise ``OSError``. +- 1684_, [Linux]: `disk_io_counters()`_ may raise ``ValueError`` on systems not having ``/proc/diskstats``. -- 1695_: [Linux] could not compile on kernels <= 2.6.13 due to +- 1695_, [Linux]: could not compile on kernels <= 2.6.13 due to ``PSUTIL_HAVE_IOPRIO`` not being defined. (patch by Anselm Kruis) 5.6.7 @@ -213,7 +213,7 @@ XXXX-XX-XX **Bug fixes** -- 1630_: [Windows] can't compile source distribution due to C syntax error. +- 1630_, [Windows]: can't compile source distribution due to C syntax error. 5.6.6 ===== @@ -222,13 +222,13 @@ XXXX-XX-XX **Bug fixes** -- 1179_: [Linux] `Process.cmdline()`_ now takes into account misbehaving processes +- 1179_, [Linux]: `Process.cmdline()`_ now takes into account misbehaving processes renaming the command line and using inappropriate chars to separate args. - 1616_: use of ``Py_DECREF`` instead of ``Py_CLEAR`` will result in double ``free()`` and segfault (`CVE-2019-18874 <https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-18874>`__). (patch by Riccardo Schirone) -- 1619_: [OpenBSD] compilation fails due to C syntax error. (patch by Nathan +- 1619_, [OpenBSD]: compilation fails due to C syntax error. (patch by Nathan Houghton) 5.6.5 @@ -247,32 +247,32 @@ XXXX-XX-XX **Enhancements** -- 1527_: [Linux] added `Process.cpu_times()`_.iowait counter, which is the time +- 1527_, [Linux]: added `Process.cpu_times()`_.iowait counter, which is the time spent waiting for blocking I/O to complete. - 1565_: add PEP 517/8 build backend and requirements specification for better pip integration. (patch by Bernát Gábor) **Bug fixes** -- 875_: [Windows] `Process.cmdline()`_, `Process.environ()`_ or `Process.cwd()`_ +- 875_, [Windows]: `Process.cmdline()`_, `Process.environ()`_ or `Process.cwd()`_ may occasionally fail with ``ERROR_PARTIAL_COPY`` which now gets translated to `AccessDenied`_. -- 1126_: [Linux] `Process.cpu_affinity()`_ segfaults on CentOS 5 / manylinux. +- 1126_, [Linux]: `Process.cpu_affinity()`_ segfaults on CentOS 5 / manylinux. `Process.cpu_affinity()`_ support for CentOS 5 was removed. -- 1528_: [AIX] compilation error on AIX 7.2 due to 32 vs 64 bit differences. +- 1528_, [AIX]: compilation error on AIX 7.2 due to 32 vs 64 bit differences. (patch by Arnon Yaari) - 1535_: ``type`` and ``family`` fields returned by `net_connections()`_ are not always turned into enums. -- 1536_: [NetBSD] `Process.cmdline()`_ erroneously raise `ZombieProcess`_ error if +- 1536_, [NetBSD]: `Process.cmdline()`_ erroneously raise `ZombieProcess`_ error if cmdline has non encodable chars. - 1546_: usage percent may be rounded to 0 on Python 2. -- 1552_: [Windows] `getloadavg()`_ math for calculating 5 and 15 mins values is +- 1552_, [Windows]: `getloadavg()`_ math for calculating 5 and 15 mins values is incorrect. -- 1568_: [Linux] use CC compiler env var if defined. -- 1570_: [Windows] ``NtWow64*`` syscalls fail to raise the proper error code -- 1585_: [OSX] calling close() (in C) on possible negative integers. (patch +- 1568_, [Linux]: use CC compiler env var if defined. +- 1570_, [Windows]: ``NtWow64*`` syscalls fail to raise the proper error code +- 1585_, [OSX]: calling close() (in C) on possible negative integers. (patch by Athos Ribeiro) -- 1606_: [SunOS] compilation fails on SunOS 5.10. (patch by vser1) +- 1606_, [SunOS]: compilation fails on SunOS 5.10. (patch by vser1) 5.6.3 ===== @@ -281,15 +281,15 @@ XXXX-XX-XX **Enhancements** -- 1494_: [AIX] added support for `Process.environ()`_. (patch by Arnon Yaari) +- 1494_, [AIX]: added support for `Process.environ()`_. (patch by Arnon Yaari) **Bug fixes** -- 1276_: [AIX] can't get whole `Process.cmdline()`_. (patch by Arnon Yaari) -- 1501_: [Windows] `Process.cmdline()`_ and `Process.exe()`_ raise unhandled +- 1276_, [AIX]: can't get whole `Process.cmdline()`_. (patch by Arnon Yaari) +- 1501_, [Windows]: `Process.cmdline()`_ and `Process.exe()`_ raise unhandled "WinError 1168 element not found" exceptions for "Registry" and "Memory Compression" psuedo processes on Windows 10. -- 1526_: [NetBSD] `Process.cmdline()`_ could raise ``MemoryError``. (patch by +- 1526_, [NetBSD]: `Process.cmdline()`_ could raise ``MemoryError``. (patch by Kamil Rytarowski) 5.6.2 @@ -299,15 +299,15 @@ XXXX-XX-XX **Enhancements** -- 604_: [Windows] add new `getloadavg()`_, returning system load average +- 604_, [Windows]: add new `getloadavg()`_, returning system load average calculation, including on Windows (emulated). (patch by Ammar Askar) -- 1404_: [Linux] `cpu_count()`_ with ``logical=False`` uses a second method +- 1404_, [Linux]: `cpu_count()`_ with ``logical=False`` uses a second method (read from ``/sys/devices/system/cpu/cpu[0-9]/topology/core_id``) in order to determine the number of CPU cores in case ``/proc/cpuinfo`` does not provide this info. - 1458_: provide coloured test output. Also show failures on KeyboardInterrupt. - 1464_: various docfixes (always point to python3 doc, fix links, etc.). -- 1476_: [Windows] it is now possible to set process high I/O priority +- 1476_, [Windows]: it is now possible to set process high I/O priority (`Process.ionice()`_). Also, I/O priority values are now exposed as 4 new constants: ``IOPRIO_VERYLOW``, ``IOPRIO_LOW``, ``IOPRIO_NORMAL``, ``IOPRIO_HIGH``. @@ -315,29 +315,29 @@ XXXX-XX-XX **Bug fixes** -- 1223_: [Windows] `boot_time()`_ may return incorrect value on Windows XP. -- 1456_: [Linux] `cpu_freq()`_ returns ``None`` instead of 0.0 when min/max not +- 1223_, [Windows]: `boot_time()`_ may return incorrect value on Windows XP. +- 1456_, [Linux]: `cpu_freq()`_ returns ``None`` instead of 0.0 when min/max not available (patch by Alex Manuskin) -- 1462_: [Linux] (tests) make tests invariant to LANG setting (patch by +- 1462_, [Linux]: (tests) make tests invariant to LANG setting (patch by Benjamin Drung) - 1463_: `cpu_distribution.py`_ script was broken. -- 1470_: [Linux] `disk_partitions()`_: fix corner case when /etc/mtab doesn't +- 1470_, [Linux]: `disk_partitions()`_: fix corner case when /etc/mtab doesn't exist. (patch by Cedric Lamoriniere) -- 1471_: [SunOS] `Process.name()`_ and `Process.cmdline()`_ can return +- 1471_, [SunOS]: `Process.name()`_ and `Process.cmdline()`_ can return ``SystemError``. (patch by Daniel Beer) -- 1472_: [Linux] `cpu_freq()`_ does not return all CPUs on Rasbperry-pi 3. +- 1472_, [Linux]: `cpu_freq()`_ does not return all CPUs on Rasbperry-pi 3. - 1474_: fix formatting of ``psutil.tests()`` which mimicks 'ps aux' output. -- 1475_: [Windows] ``OSError``.winerror attribute wasn't properly checked resuling +- 1475_, [Windows]: ``OSError``.winerror attribute wasn't properly checked resuling in ``WindowsError`` being raised instead of `AccessDenied`_. -- 1477_: [Windows] wrong or absent error handling for private NTSTATUS Windows +- 1477_, [Windows]: wrong or absent error handling for private NTSTATUS Windows APIs. Different process methods were affected by this. -- 1480_: [Windows] `cpu_count()`_ with ``logical=False`` could cause a crash +- 1480_, [Windows]: `cpu_count()`_ with ``logical=False`` could cause a crash due to fixed read violation. (patch by Samer Masterson) -- 1486_: [AIX, SunOS] AttributeError when interacting with Process methods +- 1486_, [AIX,: SunOS] AttributeError when interacting with Process methods involved into `Process.oneshot()`_ context. -- 1491_: [SunOS] `net_if_addrs()`_: ``free()`` ifap struct on error. (patch by +- 1491_, [SunOS]: `net_if_addrs()`_: ``free()`` ifap struct on error. (patch by Agnewee) -- 1493_: [Linux] `cpu_freq()`_: handle the case where +- 1493_, [Linux]: `cpu_freq()`_: handle the case where ``/sys/devices/system/cpu/cpufreq/`` exists but is empty. 5.6.1 @@ -347,10 +347,10 @@ XXXX-XX-XX **Bug fixes** -- 1329_: [AIX] psutil doesn't compile on AIX 6.1. (patch by Arnon Yaari) -- 1448_: [Windows] crash on import due to ``rtlIpv6AddressToStringA`` not available +- 1329_, [AIX]: psutil doesn't compile on AIX 6.1. (patch by Arnon Yaari) +- 1448_, [Windows]: crash on import due to ``rtlIpv6AddressToStringA`` not available on Wine. -- 1451_: [Windows] `Process.memory_full_info()`_ segfaults. +- 1451_, [Windows]: `Process.memory_full_info()`_ segfaults. ``NtQueryVirtualMemory`` is now used instead of ``QueryWorkingSet`` to calculate USS memory. @@ -361,16 +361,16 @@ XXXX-XX-XX **Enhancements** -- 1379_: [Windows] `Process.suspend()`_ and `Process.resume()`_ now use +- 1379_, [Windows]: `Process.suspend()`_ and `Process.resume()`_ now use ``NtSuspendProcess`` and ``NtResumeProcess`` instead of stopping/resuming all threads of a process. This is faster and more reliable (aka this is what ProcessHacker does). -- 1420_: [Windows] in case of exception `disk_usage()`_ now also shows the path +- 1420_, [Windows]: in case of exception `disk_usage()`_ now also shows the path name. -- 1422_: [Windows] Windows APIs requiring to be dynamically loaded from DLL +- 1422_, [Windows]: Windows APIs requiring to be dynamically loaded from DLL libraries are now loaded only once on startup (instead of on per function call) significantly speeding up different functions and methods. -- 1426_: [Windows] ``PAGESIZE`` and number of processors is now calculated on +- 1426_, [Windows]: ``PAGESIZE`` and number of processors is now calculated on startup. - 1428_: in case of error, the traceback message now shows the underlying C function called which failed. @@ -381,28 +381,28 @@ XXXX-XX-XX **Bug fixes** - 1353_: `process_iter()`_ is now thread safe (it rarely raised ``TypeError``). -- 1394_: [Windows] `Process.name()`_ and `Process.exe()`_ may erroneously return +- 1394_, [Windows]: `Process.name()`_ and `Process.exe()`_ may erroneously return "Registry". ``QueryFullProcessImageNameW`` is now used instead of ``GetProcessImageFileNameW`` in order to prevent that. -- 1411_: [BSD] lack of ``Py_DECREF`` could cause segmentation fault on process +- 1411_, [BSD]: lack of ``Py_DECREF`` could cause segmentation fault on process instantiation. -- 1419_: [Windows] `Process.environ()`_ raises ``NotImplementedError`` when querying +- 1419_, [Windows]: `Process.environ()`_ raises ``NotImplementedError`` when querying a 64-bit process in 32-bit-WoW mode. Now it raises `AccessDenied`_. -- 1427_: [OSX] `Process.cmdline()`_ and `Process.environ()`_ may erroneously raise ``OSError`` +- 1427_, [OSX]: `Process.cmdline()`_ and `Process.environ()`_ may erroneously raise ``OSError`` on failed ``malloc()``. -- 1429_: [Windows] ``SE DEBUG`` was not properly set for current process. It is +- 1429_, [Windows]: ``SE DEBUG`` was not properly set for current process. It is now, and it should result in less `AccessDenied`_ exceptions for low-pid processes. -- 1432_: [Windows] `Process.memory_info_ex()`_'s USS memory is miscalculated +- 1432_, [Windows]: `Process.memory_info_ex()`_'s USS memory is miscalculated because we're not using the actual system ``PAGESIZE``. -- 1439_: [NetBSD] `Process.connections()`_ may return incomplete results if using +- 1439_, [NetBSD]: `Process.connections()`_ may return incomplete results if using `Process.oneshot()`_. - 1447_: original exception wasn't turned into NSP/AD exceptions when using `Process.oneshot()`_ ctx manager. **Incompatible API changes** -- 1291_: [OSX] `Process.memory_maps()`_ was removed because inherently broken +- 1291_, [OSX]: `Process.memory_maps()`_ was removed because inherently broken (segfault) for years. 5.5.1 @@ -412,16 +412,16 @@ XXXX-XX-XX **Enhancements** -- 1348_: [Windows] on Windows >= 8.1 if `Process.cmdline()`_ fails due to +- 1348_, [Windows]: on Windows >= 8.1 if `Process.cmdline()`_ fails due to ``ERROR_ACCESS_DENIED`` attempt using ``NtQueryInformationProcess`` + ``ProcessCommandLineInformation``. (patch by EccoTheFlintstone) **Bug fixes** -- 1394_: [Windows] `Process.exe()`_ returns "[Error 0] The operation completed +- 1394_, [Windows]: `Process.exe()`_ returns "[Error 0] The operation completed successfully" when Python process runs in "Virtual Secure Mode". - 1402_: psutil exceptions' ``repr()`` show the internal private module path. -- 1408_: [AIX] psutil won't compile on AIX 7.1 due to missing header. (patch +- 1408_, [AIX]: psutil won't compile on AIX 7.1 due to missing header. (patch by Arnon Yaari) 5.5.0 @@ -431,26 +431,26 @@ XXXX-XX-XX **Enhancements** -- 1350_: [FreeBSD] added support for `sensors_temperatures()`_. (patch by Alex +- 1350_, [FreeBSD]: added support for `sensors_temperatures()`_. (patch by Alex Manuskin) -- 1352_: [FreeBSD] added support for CPU frequency. (patch by Alex Manuskin) +- 1352_, [FreeBSD]: added support for CPU frequency. (patch by Alex Manuskin) **Bug fixes** - 1111_: `Process.oneshot()`_ is now thread safe. -- 1354_: [Linux] `disk_io_counters()`_ fails on Linux kernel 4.18+. -- 1357_: [Linux] `Process.memory_maps()`_ and `Process.io_counters()`_ methods +- 1354_, [Linux]: `disk_io_counters()`_ fails on Linux kernel 4.18+. +- 1357_, [Linux]: `Process.memory_maps()`_ and `Process.io_counters()`_ methods are no longer exposed if not supported by the kernel. -- 1368_: [Windows] fix `Process.ionice()`_ mismatch. (patch by +- 1368_, [Windows]: fix `Process.ionice()`_ mismatch. (patch by EccoTheFlintstone) -- 1370_: [Windows] improper usage of CloseHandle() may lead to override the +- 1370_, [Windows]: improper usage of CloseHandle() may lead to override the original error code when raising an exception. - 1373_: incorrect handling of cache in `Process.oneshot()`_ context causes Process instances to return incorrect results. -- 1376_: [Windows] ``OpenProcess`` now uses PROCESS_QUERY_LIMITED_INFORMATION +- 1376_, [Windows]: ``OpenProcess`` now uses PROCESS_QUERY_LIMITED_INFORMATION access rights wherever possible, resulting in less `AccessDenied`_ exceptions being thrown for system processes. -- 1376_: [Windows] check if variable is NULL before ``free()``ing it. (patch by +- 1376_, [Windows]: check if variable is NULL before ``free()``ing it. (patch by EccoTheFlintstone) 5.4.8 @@ -460,28 +460,28 @@ XXXX-XX-XX **Enhancements** -- 1197_: [Linux] `cpu_freq()`_ is now implemented by parsing ``/proc/cpuinfo`` +- 1197_, [Linux]: `cpu_freq()`_ is now implemented by parsing ``/proc/cpuinfo`` in case ``/sys/devices/system/cpu/*`` filesystem is not available. -- 1310_: [Linux] `sensors_temperatures()`_ now parses ``/sys/class/thermal`` +- 1310_, [Linux]: `sensors_temperatures()`_ now parses ``/sys/class/thermal`` in case ``/sys/class/hwmon`` fs is not available (e.g. Raspberry Pi). (patch by Alex Manuskin) -- 1320_: [Posix] better compilation support when using g++ instead of GCC. +- 1320_, [Posix]: better compilation support when using g++ instead of GCC. (patch by Jaime Fullaondo) **Bug fixes** - 715_: do not print exception on import time in case `cpu_times()`_ fails. -- 1004_: [Linux] `Process.io_counters()`_ may raise ``ValueError``. -- 1277_: [OSX] available and used memory (`virtual_memory()`_) metrics are +- 1004_, [Linux]: `Process.io_counters()`_ may raise ``ValueError``. +- 1277_, [OSX]: available and used memory (`virtual_memory()`_) metrics are not accurate. -- 1294_: [Windows] `Process.connections()`_ may sometimes fail with +- 1294_, [Windows]: `Process.connections()`_ may sometimes fail with intermittent ``0xC0000001``. (patch by Sylvain Duchesne) -- 1307_: [Linux] `disk_partitions()`_ does not honour `PROCFS_PATH`_. -- 1320_: [AIX] system CPU times (`cpu_times()`_) were being reported with +- 1307_, [Linux]: `disk_partitions()`_ does not honour `PROCFS_PATH`_. +- 1320_, [AIX]: system CPU times (`cpu_times()`_) were being reported with ticks unit as opposed to seconds. (patch by Jaime Fullaondo) -- 1332_: [OSX] psutil debug messages are erroneously printed all the time. +- 1332_, [OSX]: psutil debug messages are erroneously printed all the time. (patch by Ilya Yanok) -- 1346_: [SunOS] `net_connections()`_ returns an empty list. (patch by Oleksii +- 1346_, [SunOS]: `net_connections()`_ returns an empty list. (patch by Oleksii Shevchuk) 5.4.7 @@ -491,28 +491,28 @@ XXXX-XX-XX **Enhancements** -- 1286_: [macOS] ``psutil.OSX`` constant is now deprecated in favor of new +- 1286_, [macOS]: ``psutil.OSX`` constant is now deprecated in favor of new ``psutil.MACOS``. -- 1309_: [Linux] added ``psutil.STATUS_PARKED`` constant for `Process.status()`_. -- 1321_: [Linux] add `disk_io_counters()`_ dual implementation relying on +- 1309_, [Linux]: added ``psutil.STATUS_PARKED`` constant for `Process.status()`_. +- 1321_, [Linux]: add `disk_io_counters()`_ dual implementation relying on ``/sys/block`` filesystem in case ``/proc/diskstats`` is not available. (patch by Lawrence Ye) **Bug fixes** -- 1209_: [macOS] `Process.memory_maps()`_ may fail with ``EINVAL`` due to poor +- 1209_, [macOS]: `Process.memory_maps()`_ may fail with ``EINVAL`` due to poor ``task_for_pid()`` syscall. `AccessDenied`_ is now raised instead. -- 1278_: [macOS] `Process.threads()`_ incorrectly return microseconds instead of +- 1278_, [macOS]: `Process.threads()`_ incorrectly return microseconds instead of seconds. (patch by Nikhil Marathe) -- 1279_: [Linux, macOS, BSD] `net_if_stats()`_ may return ``ENODEV``. -- 1294_: [Windows] `Process.connections()`_ may sometime fail with +- 1279_, [Linux,: macOS, BSD] `net_if_stats()`_ may return ``ENODEV``. +- 1294_, [Windows]: `Process.connections()`_ may sometime fail with ``MemoryError``. (patch by sylvainduchesne) -- 1305_: [Linux] disk_io_stats() may report inflated r/w bytes values. -- 1309_: [Linux] `Process.status()`_ is unable to recognize ``"idle"`` and +- 1305_, [Linux]: disk_io_stats() may report inflated r/w bytes values. +- 1309_, [Linux]: `Process.status()`_ is unable to recognize ``"idle"`` and ``"parked"`` statuses (returns ``"?"``). -- 1313_: [Linux] `disk_io_counters()`_ can report inflated IO counters due to +- 1313_, [Linux]: `disk_io_counters()`_ can report inflated IO counters due to erroneously counting base disk device and its partition(s) twice. -- 1323_: [Linux] `sensors_temperatures()`_ may fail with ``ValueError``. +- 1323_, [Linux]: `sensors_temperatures()`_ may fail with ``ValueError``. 5.4.6 ===== @@ -521,11 +521,11 @@ XXXX-XX-XX **Bug fixes** -- 1258_: [Windows] `Process.username()`_ may cause a segfault (Python interpreter +- 1258_, [Windows]: `Process.username()`_ may cause a segfault (Python interpreter crash). (patch by Jean-Luc Migot) - 1273_: `net_if_addrs()`_ namedtuple's name has been renamed from ``snic`` to ``snicaddr`` -- 1274_: [Linux] there was a small chance `Process.children()`_ may swallow +- 1274_, [Linux]: there was a small chance `Process.children()`_ may swallow `AccessDenied`_ exceptions. 5.4.5 @@ -545,46 +545,46 @@ XXXX-XX-XX **Enhancements** -- 1239_: [Linux] expose kernel ``slab`` memory field for `virtual_memory()`_. +- 1239_, [Linux]: expose kernel ``slab`` memory field for `virtual_memory()`_. (patch by Maxime Mouial) **Bug fixes** -- 694_: [SunOS] `Process.cmdline()`_ could be truncated at the 15th character when +- 694_, [SunOS]: `Process.cmdline()`_ could be truncated at the 15th character when reading it from ``/proc``. An extra effort is made by reading it from process address space first. (patch by Georg Sauthoff) -- 771_: [Windows] `cpu_count()`_ (both logical and cores) return a wrong +- 771_, [Windows]: `cpu_count()`_ (both logical and cores) return a wrong (smaller) number on systems using process groups (> 64 cores). -- 771_: [Windows] `cpu_times()`_ with ``percpu=True`` return fewer CPUs on +- 771_, [Windows]: `cpu_times()`_ with ``percpu=True`` return fewer CPUs on systems using process groups (> 64 cores). -- 771_: [Windows] `cpu_stats()`_ and `cpu_freq()`_ may return incorrect results on +- 771_, [Windows]: `cpu_stats()`_ and `cpu_freq()`_ may return incorrect results on systems using process groups (> 64 cores). -- 1193_: [SunOS] Return uid/gid from ``/proc/pid/psinfo`` if there aren't +- 1193_, [SunOS]: Return uid/gid from ``/proc/pid/psinfo`` if there aren't enough permissions for ``/proc/pid/cred``. (patch by Georg Sauthoff) -- 1194_: [SunOS] Return nice value from psinfo as ``getpriority()`` doesn't +- 1194_, [SunOS]: Return nice value from psinfo as ``getpriority()`` doesn't support real-time processes. (patch by Georg Sauthoff) -- 1194_: [SunOS] Fix double ``free()`` in `Process.cpu_num()`_. (patch by Georg +- 1194_, [SunOS]: Fix double ``free()`` in `Process.cpu_num()`_. (patch by Georg Sauthoff) -- 1194_: [SunOS] Fix undefined behavior related to strict-aliasing rules +- 1194_, [SunOS]: Fix undefined behavior related to strict-aliasing rules and warnings. (patch by Georg Sauthoff) -- 1210_: [Linux] `cpu_percent()`_ steal time may remain stuck at 100% due to Linux +- 1210_, [Linux]: `cpu_percent()`_ steal time may remain stuck at 100% due to Linux erroneously reporting a decreased steal time between calls. (patch by Arnon Yaari) - 1216_: fix compatibility with python 2.6 on Windows (patch by Dan Vinakovsky) -- 1222_: [Linux] `Process.memory_full_info()`_ was erroneously summing "Swap:" and +- 1222_, [Linux]: `Process.memory_full_info()`_ was erroneously summing "Swap:" and "SwapPss:". Same for "Pss:" and "SwapPss". Not anymore. -- 1224_: [Windows] `Process.wait()`_ may erroneously raise TimeoutExpired. -- 1238_: [Linux] `sensors_battery()`_ may return ``None`` in case battery is not +- 1224_, [Windows]: `Process.wait()`_ may erroneously raise TimeoutExpired. +- 1238_, [Linux]: `sensors_battery()`_ may return ``None`` in case battery is not listed as "BAT0" under ``/sys/class/power_supply``. -- 1240_: [Windows] `cpu_times()`_ float loses accuracy in a long running system. +- 1240_, [Windows]: `cpu_times()`_ float loses accuracy in a long running system. (patch by stswandering) -- 1245_: [Linux] `sensors_temperatures()`_ may fail with ``IOError`` "no such file". -- 1255_: [FreeBSD] `swap_memory()`_ stats were erroneously represented in KB. +- 1245_, [Linux]: `sensors_temperatures()`_ may fail with ``IOError`` "no such file". +- 1255_, [FreeBSD]: `swap_memory()`_ stats were erroneously represented in KB. (patch by Denis Krienbühl) **Backward compatibility** -- 771_: [Windows] `cpu_count()`_ with ``logical=False`` on Windows XP and Vista +- 771_, [Windows]: `cpu_count()`_ with ``logical=False`` on Windows XP and Vista is no longer supported and returns ``None``. 5.4.3 @@ -616,15 +616,15 @@ XXXX-XX-XX **Bug fixes** -- 1152_: [Windows] `disk_io_counters()`_ may return an empty dict. -- 1169_: [Linux] `users()`_ ``hostname`` returns username instead. (patch by +- 1152_, [Windows]: `disk_io_counters()`_ may return an empty dict. +- 1169_, [Linux]: `users()`_ ``hostname`` returns username instead. (patch by janderbrain) -- 1172_: [Windows] ``make test`` does not work. -- 1179_: [Linux] `Process.cmdline()`_ is now able to split cmdline args for +- 1172_, [Windows]: ``make test`` does not work. +- 1179_, [Linux]: `Process.cmdline()`_ is now able to split cmdline args for misbehaving processes which overwrite ``/proc/pid/cmdline`` and use spaces instead of null bytes as args separator. -- 1181_: [macOS] `Process.memory_maps()`_ may raise ``ENOENT``. -- 1187_: [macOS] `pids()`_ does not return PID 0 on recent macOS versions. +- 1181_, [macOS]: `Process.memory_maps()`_ may raise ``ENOENT``. +- 1187_, [macOS]: `pids()`_ does not return PID 0 on recent macOS versions. 5.4.1 ===== @@ -633,18 +633,18 @@ XXXX-XX-XX **Enhancements** -- 1164_: [AIX] add support for `Process.num_ctx_switches()`_. (patch by Arnon +- 1164_, [AIX]: add support for `Process.num_ctx_switches()`_. (patch by Arnon Yaari) - 1053_: abandon Python 3.3 support (psutil still works but it's no longer tested). **Bug fixes** -- 1150_: [Windows] when a process is terminate()d now the exit code is set to +- 1150_, [Windows]: when a process is terminate()d now the exit code is set to ``SIGTERM`` instead of ``0``. (patch by Akos Kiss) - 1151_: ``python -m psutil.tests`` fail -- 1154_: [AIX] psutil won't compile on AIX 6.1.0. (patch by Arnon Yaari) -- 1167_: [Windows] `net_io_counters()`_ packets count now include also non-unicast +- 1154_, [AIX]: psutil won't compile on AIX 6.1.0. (patch by Arnon Yaari) +- 1167_, [Windows]: `net_io_counters()`_ packets count now include also non-unicast packets. (patch by Matthew Long) 5.4.0 @@ -654,21 +654,21 @@ XXXX-XX-XX **Enhancements** -- 1123_: [AIX] added support for AIX platform. (patch by Arnon Yaari) +- 1123_, [AIX]: added support for AIX platform. (patch by Arnon Yaari) **Bug fixes** -- 1009_: [Linux] `sensors_temperatures()`_ may crash with ``IOError``. -- 1012_: [Windows] `disk_io_counters()`_ ``read_time`` and ``write_time`` +- 1009_, [Linux]: `sensors_temperatures()`_ may crash with ``IOError``. +- 1012_, [Windows]: `disk_io_counters()`_ ``read_time`` and ``write_time`` were expressed in tens of micro seconds instead of milliseconds. -- 1127_: [macOS] invalid reference counting in `Process.open_files()`_ may lead +- 1127_, [macOS]: invalid reference counting in `Process.open_files()`_ may lead to segfault. (patch by Jakub Bacic) -- 1129_: [Linux] `sensors_fans()`_ may crash with ``IOError``. (patch by Sebastian +- 1129_, [Linux]: `sensors_fans()`_ may crash with ``IOError``. (patch by Sebastian Saip) -- 1131_: [SunOS] fix compilation warnings. (patch by Arnon Yaari) -- 1133_: [Windows] can't compile on newer versions of Visual Studio 2017 15.4. +- 1131_, [SunOS]: fix compilation warnings. (patch by Arnon Yaari) +- 1133_, [Windows]: can't compile on newer versions of Visual Studio 2017 15.4. (patch by Max Bélanger) -- 1138_: [Linux] can't compile on CentOS 5.0 and RedHat 5.0. +- 1138_, [Linux]: can't compile on CentOS 5.0 and RedHat 5.0. (patch by Prodesire) 5.3.1 @@ -682,8 +682,8 @@ XXXX-XX-XX **Bug fixes** -- 1105_: [FreeBSD] psutil does not compile on FreeBSD 12. -- 1125_: [BSD] `net_connections()`_ raises ``TypeError``. +- 1105_, [FreeBSD]: psutil does not compile on FreeBSD 12. +- 1125_, [BSD]: `net_connections()`_ raises ``TypeError``. **Compatibility notes** @@ -714,70 +714,70 @@ XXXX-XX-XX - 1058_: test suite now enables all warnings by default. - 1060_: source distribution is dynamically generated so that it only includes relevant files. -- 1079_: [FreeBSD] `net_connections()`_ ``fd`` number is now being set for real +- 1079_, [FreeBSD]: `net_connections()`_ ``fd`` number is now being set for real (instead of ``-1``). (patch by Gleb Smirnoff) -- 1091_: [SunOS] implemented `Process.environ()`_. (patch by Oleksii Shevchuk) +- 1091_, [SunOS]: implemented `Process.environ()`_. (patch by Oleksii Shevchuk) **Bug fixes** -- 989_: [Windows] `boot_time()`_ may return a negative value. -- 1007_: [Windows] `boot_time()`_ can have a 1 sec fluctuation between calls; the +- 989_, [Windows]: `boot_time()`_ may return a negative value. +- 1007_, [Windows]: `boot_time()`_ can have a 1 sec fluctuation between calls; the value of the first call is now cached so that `boot_time()`_ always returns the same value if fluctuation is <= 1 second. -- 1013_: [FreeBSD] `net_connections()`_ may return incorrect PID. (patch +- 1013_, [FreeBSD]: `net_connections()`_ may return incorrect PID. (patch by Gleb Smirnoff) -- 1014_: [Linux] Process class can mask legitimate ``ENOENT`` exceptions as +- 1014_, [Linux]: Process class can mask legitimate ``ENOENT`` exceptions as `NoSuchProcess`_. - 1016_: `disk_io_counters()`_ raises ``RuntimeError`` on a system with no disks. - 1017_: `net_io_counters()`_ raises ``RuntimeError`` on a system with no network cards installed. -- 1021_: [Linux] `Process.open_files()`_ may erroneously raise `NoSuchProcess`_ +- 1021_, [Linux]: `Process.open_files()`_ may erroneously raise `NoSuchProcess`_ instead of skipping a file which gets deleted while open files are retrieved. -- 1029_: [macOS, FreeBSD] `Process.connections()`_ with `family=unix` on Python +- 1029_, [macOS,: FreeBSD] `Process.connections()`_ with `family=unix` on Python 3 doesn't properly handle unicode paths and may raise ``UnicodeDecodeError``. -- 1033_: [macOS, FreeBSD] memory leak for `net_connections()`_ and +- 1033_, [macOS,: FreeBSD] memory leak for `net_connections()`_ and `Process.connections()`_ when retrieving UNIX sockets (``kind='unix'``). - 1040_: fixed many unicode related issues such as ``UnicodeDecodeError`` on Python 3 + UNIX and invalid encoded data on Windows. -- 1042_: [FreeBSD] psutil won't compile on FreeBSD 12. -- 1044_: [macOS] different Process methods incorrectly raise `AccessDenied`_ for +- 1042_, [FreeBSD]: psutil won't compile on FreeBSD 12. +- 1044_, [macOS]: different Process methods incorrectly raise `AccessDenied`_ for zombie processes. -- 1046_: [Windows] `disk_partitions()`_ on Windows overrides user's ``SetErrorMode``. -- 1047_: [Windows] `Process.username()`_: memory leak in case exception is thrown. -- 1048_: [Windows] `users()`_ ``host`` field report an invalid IP address. -- 1050_: [Windows] `Process.memory_maps()`_ leaks memory. +- 1046_, [Windows]: `disk_partitions()`_ on Windows overrides user's ``SetErrorMode``. +- 1047_, [Windows]: `Process.username()`_: memory leak in case exception is thrown. +- 1048_, [Windows]: `users()`_ ``host`` field report an invalid IP address. +- 1050_, [Windows]: `Process.memory_maps()`_ leaks memory. - 1055_: `cpu_count()`_ is no longer cached; this is useful on systems such as Linux where CPUs can be disabled at runtime. This also reflects on `Process.cpu_percent()`_ which no longer uses the cache. - 1058_: fixed Python warnings. - 1062_: `disk_io_counters()`_ and `net_io_counters()`_ raise ``TypeError`` if no disks or NICs are installed on the system. -- 1063_: [NetBSD] `net_connections()`_ may list incorrect sockets. -- 1064_: [NetBSD] `swap_memory()`_ may segfault in case of error. -- 1065_: [OpenBSD] `Process.cmdline()`_ may raise ``SystemError``. -- 1067_: [NetBSD] `Process.cmdline()`_ leaks memory if process has terminated. -- 1069_: [FreeBSD] `Process.cpu_num()`_ may return 255 for certain kernel +- 1063_, [NetBSD]: `net_connections()`_ may list incorrect sockets. +- 1064_, [NetBSD]: `swap_memory()`_ may segfault in case of error. +- 1065_, [OpenBSD]: `Process.cmdline()`_ may raise ``SystemError``. +- 1067_, [NetBSD]: `Process.cmdline()`_ leaks memory if process has terminated. +- 1069_, [FreeBSD]: `Process.cpu_num()`_ may return 255 for certain kernel processes. -- 1071_: [Linux] `cpu_freq()`_ may raise ``IOError`` on old RedHat distros. -- 1074_: [FreeBSD] `sensors_battery()`_ raises ``OSError`` in case of no battery. -- 1075_: [Windows] `net_if_addrs()`_: ``inet_ntop()`` return value is not checked. -- 1077_: [SunOS] `net_if_addrs()`_ shows garbage addresses on SunOS 5.10. +- 1071_, [Linux]: `cpu_freq()`_ may raise ``IOError`` on old RedHat distros. +- 1074_, [FreeBSD]: `sensors_battery()`_ raises ``OSError`` in case of no battery. +- 1075_, [Windows]: `net_if_addrs()`_: ``inet_ntop()`` return value is not checked. +- 1077_, [SunOS]: `net_if_addrs()`_ shows garbage addresses on SunOS 5.10. (patch by Oleksii Shevchuk) -- 1077_: [SunOS] `net_connections()`_ does not work on SunOS 5.10. (patch by +- 1077_, [SunOS]: `net_connections()`_ does not work on SunOS 5.10. (patch by Oleksii Shevchuk) -- 1079_: [FreeBSD] `net_connections()`_ didn't list locally connected sockets. +- 1079_, [FreeBSD]: `net_connections()`_ didn't list locally connected sockets. (patch by Gleb Smirnoff) - 1085_: `cpu_count()`_ return value is now checked and forced to ``None`` if <= 1. - 1087_: `Process.cpu_percent()`_ guard against `cpu_count()`_ returning ``None`` and assumes 1 instead. -- 1093_: [SunOS] `Process.memory_maps()`_ shows wrong 64 bit addresses. -- 1094_: [Windows] `pid_exists()`_ may lie. Also, all process APIs relying +- 1093_, [SunOS]: `Process.memory_maps()`_ shows wrong 64 bit addresses. +- 1094_, [Windows]: `pid_exists()`_ may lie. Also, all process APIs relying on ``OpenProcess`` Windows API now check whether the PID is actually running. -- 1098_: [Windows] `Process.wait()`_ may erroneously return sooner, when the PID +- 1098_, [Windows]: `Process.wait()`_ may erroneously return sooner, when the PID is still alive. -- 1099_: [Windows] `Process.terminate()`_ may raise `AccessDenied`_ even if the +- 1099_, [Windows]: `Process.terminate()`_ may raise `AccessDenied`_ even if the process already died. -- 1101_: [Linux] `sensors_temperatures()`_ may raise ``ENODEV``. +- 1101_, [Linux]: `sensors_temperatures()`_ may raise ``ENODEV``. **Porting notes** @@ -802,13 +802,13 @@ XXXX-XX-XX **Bug fixes** - 1000_: fixed some setup.py warnings. -- 1002_: [SunOS] remove C macro which will not be available on new Solaris +- 1002_, [SunOS]: remove C macro which will not be available on new Solaris versions. (patch by Danek Duvall) -- 1004_: [Linux] `Process.io_counters()`_ may raise ``ValueError``. -- 1006_: [Linux] `cpu_freq()`_ may return ``None`` on some Linux versions does not +- 1004_, [Linux]: `Process.io_counters()`_ may raise ``ValueError``. +- 1006_, [Linux]: `cpu_freq()`_ may return ``None`` on some Linux versions does not support the function; now the function is not declared instead. -- 1009_: [Linux] `sensors_temperatures()`_ may raise ``OSError``. -- 1010_: [Linux] `virtual_memory()`_ may raise ``ValueError`` on Ubuntu 14.04. +- 1009_, [Linux]: `sensors_temperatures()`_ may raise ``OSError``. +- 1010_, [Linux]: `virtual_memory()`_ may raise ``ValueError`` on Ubuntu 14.04. 5.2.1 ===== @@ -817,11 +817,11 @@ XXXX-XX-XX **Bug fixes** -- 981_: [Linux] `cpu_freq()`_ may return an empty list. -- 993_: [Windows] `Process.memory_maps()`_ on Python 3 may raise +- 981_, [Linux]: `cpu_freq()`_ may return an empty list. +- 993_, [Windows]: `Process.memory_maps()`_ on Python 3 may raise ``UnicodeDecodeError``. -- 996_: [Linux] `sensors_temperatures()`_ may not show all temperatures. -- 997_: [FreeBSD] `virtual_memory()`_ may fail due to missing sysctl parameter on +- 996_, [Linux]: `sensors_temperatures()`_ may not show all temperatures. +- 997_, [FreeBSD]: `virtual_memory()`_ may fail due to missing sysctl parameter on FreeBSD 12. 5.2.0 @@ -831,25 +831,25 @@ XXXX-XX-XX **Enhancements** -- 971_: [Linux] Add `sensors_fans()`_ function. (patch by Nicolas Hennion) -- 976_: [Windows] `Process.io_counters()`_ has 2 new fields: ``other_count`` and +- 971_, [Linux]: Add `sensors_fans()`_ function. (patch by Nicolas Hennion) +- 976_, [Windows]: `Process.io_counters()`_ has 2 new fields: ``other_count`` and ``other_bytes``. -- 976_: [Linux] `Process.io_counters()`_ has 2 new fields: ``read_chars`` and +- 976_, [Linux]: `Process.io_counters()`_ has 2 new fields: ``read_chars`` and ``write_chars``. **Bug fixes** -- 872_: [Linux] can now compile on Linux by using MUSL C library. -- 985_: [Windows] Fix a crash in `Process.open_files()`_ when the worker thread +- 872_, [Linux]: can now compile on Linux by using MUSL C library. +- 985_, [Windows]: Fix a crash in `Process.open_files()`_ when the worker thread for ``NtQueryObject`` times out. -- 986_: [Linux] `Process.cwd()`_ may raise `NoSuchProcess`_ instead of `ZombieProcess`_. +- 986_, [Linux]: `Process.cwd()`_ may raise `NoSuchProcess`_ instead of `ZombieProcess`_. 5.1.3 ===== **Bug fixes** -- 971_: [Linux] `sensors_temperatures()`_ didn't work on CentOS 7. +- 971_, [Linux]: `sensors_temperatures()`_ didn't work on CentOS 7. - 973_: `cpu_percent()`_ may raise ``ZeroDivisionError``. 5.1.2 @@ -859,10 +859,10 @@ XXXX-XX-XX **Bug fixes** -- 966_: [Linux] `sensors_battery()`_ ``power_plugged`` may erroneously return ``None`` on +- 966_, [Linux]: `sensors_battery()`_ ``power_plugged`` may erroneously return ``None`` on Python 3. -- 968_: [Linux] `disk_io_counters()`_ raises ``TypeError`` on python 3. -- 970_: [Linux] `sensors_battery()`_ ``name`` and ``label`` fields on Python 3 are bytes +- 968_, [Linux]: `disk_io_counters()`_ raises ``TypeError`` on python 3. +- 970_, [Linux]: `sensors_battery()`_ ``name`` and ``label`` fields on Python 3 are bytes instead of str. 5.1.1 @@ -872,16 +872,16 @@ XXXX-XX-XX **Enhancements** -- 966_: [Linux] `sensors_battery()`_ ``percent`` is a float and is more precise. +- 966_, [Linux]: `sensors_battery()`_ ``percent`` is a float and is more precise. **Bug fixes** -- 964_: [Windows] `Process.username()`_ and `users()`_ may return badly +- 964_, [Windows]: `Process.username()`_ and `users()`_ may return badly decoding character on Python 3. -- 965_: [Linux] `disk_io_counters()`_ may miscalculate sector size and report the +- 965_, [Linux]: `disk_io_counters()`_ may miscalculate sector size and report the wrong number of bytes read and written. -- 966_: [Linux] `sensors_battery()`_ may fail with "no such file error". -- 966_: [Linux] `sensors_battery()`_ ``power_plugged`` may lie. +- 966_, [Linux]: `sensors_battery()`_ may fail with "no such file error". +- 966_, [Linux]: `sensors_battery()`_ ``power_plugged`` may lie. 5.1.0 ===== @@ -899,16 +899,16 @@ XXXX-XX-XX **Bug fixes** -- 687_: [Linux] `pid_exists()`_ no longer returns True if passed a process thread +- 687_, [Linux]: `pid_exists()`_ no longer returns True if passed a process thread ID. - 948_: cannot install psutil with ``PYTHONOPTIMIZE=2``. -- 950_: [Windows] `Process.cpu_percent()`_ was calculated incorrectly and showed +- 950_, [Windows]: `Process.cpu_percent()`_ was calculated incorrectly and showed higher number than real usage. -- 951_: [Windows] the uploaded wheels for Python 3.6 64 bit didn't work. +- 951_, [Windows]: the uploaded wheels for Python 3.6 64 bit didn't work. - 959_: psutil exception objects could not be pickled. - 960_: `psutil.Popen`_ ``wait()`` did not return the correct negative exit status if process is ``kill()``ed by a signal. -- 961_: [Windows] ``WindowsService.description()`` method may fail with +- 961_, [Windows]: ``WindowsService.description()`` method may fail with ``ERROR_MUI_FILE_NOT_FOUND``. 5.0.1 @@ -919,17 +919,17 @@ XXXX-XX-XX **Enhancements** - 939_: tar.gz distribution went from 1.8M to 258K. -- 811_: [Windows] provide a more meaningful error message if trying to use +- 811_, [Windows]: provide a more meaningful error message if trying to use psutil on unsupported Windows XP. **Bug fixes** -- 609_: [SunOS] psutil does not compile on Solaris 10. -- 936_: [Windows] fix compilation error on VS 2013 (patch by Max Bélanger). -- 940_: [Linux] `cpu_percent()`_ and `cpu_times_percent()`_ was calculated +- 609_, [SunOS]: psutil does not compile on Solaris 10. +- 936_, [Windows]: fix compilation error on VS 2013 (patch by Max Bélanger). +- 940_, [Linux]: `cpu_percent()`_ and `cpu_times_percent()`_ was calculated incorrectly as ``iowait``, ``guest`` and ``guest_nice`` times were not properly taken into account. -- 944_: [OpenBSD] `pids()`_ was omitting PID 0. +- 944_, [OpenBSD]: `pids()`_ was omitting PID 0. 5.0.0 ===== @@ -944,9 +944,9 @@ XXXX-XX-XX **Bug fixes** -- 932_: [NetBSD] `net_connections()`_ and `Process.connections()`_ may fail without +- 932_, [NetBSD]: `net_connections()`_ and `Process.connections()`_ may fail without raising an exception. -- 933_: [Windows] memory leak in `cpu_stats()`_ and +- 933_, [Windows]: memory leak in `cpu_stats()`_ and ``WindowsService.description()`` method. 4.4.2 @@ -974,34 +974,34 @@ XXXX-XX-XX **Enhancements** -- 874_: [Windows] `net_if_addrs()`_ returns also the ``netmask``. -- 887_: [Linux] `virtual_memory()`_ ``available`` and ``used`` values are more +- 874_, [Windows]: `net_if_addrs()`_ returns also the ``netmask``. +- 887_, [Linux]: `virtual_memory()`_ ``available`` and ``used`` values are more precise and match "free" cmdline utility. ``available`` also takes into account LCX containers preventing ``available`` to overflow ``total``. - 891_: `procinfo.py`_ script has been updated and provides a lot more info. **Bug fixes** -- 514_: [macOS] possibly fix `Process.memory_maps()`_ segfault (critical!). -- 783_: [macOS] `Process.status()`_ may erroneously return "running" for zombie +- 514_, [macOS]: possibly fix `Process.memory_maps()`_ segfault (critical!). +- 783_, [macOS]: `Process.status()`_ may erroneously return "running" for zombie processes. -- 798_: [Windows] `Process.open_files()`_ returns and empty list on Windows 10. -- 825_: [Linux] `Process.cpu_affinity()`_: fix possible double close and use of +- 798_, [Windows]: `Process.open_files()`_ returns and empty list on Windows 10. +- 825_, [Linux]: `Process.cpu_affinity()`_: fix possible double close and use of unopened socket. -- 880_: [Windows] Handle race condition inside `net_connections()`_. +- 880_, [Windows]: Handle race condition inside `net_connections()`_. - 885_: ``ValueError`` is raised if a negative integer is passed to `cpu_percent()`_ functions. -- 892_: [Linux] `Process.cpu_affinity()`_ with ``[-1]`` as arg raises +- 892_, [Linux]: `Process.cpu_affinity()`_ with ``[-1]`` as arg raises ``SystemError`` with no error set; now ``ValueError`` is raised. -- 906_: [BSD] `disk_partitions()`_ with `all=False` returned an empty list. +- 906_, [BSD]: `disk_partitions()`_ with `all=False` returned an empty list. Now the argument is ignored and all partitions are always returned. -- 907_: [FreeBSD] `Process.exe()`_ may fail with ``OSError(ENOENT)``. -- 908_: [macOS, BSD] different process methods could errounesuly mask the real +- 907_, [FreeBSD]: `Process.exe()`_ may fail with ``OSError(ENOENT)``. +- 908_, [macOS,: BSD] different process methods could errounesuly mask the real error for high-privileged PIDs and raise `NoSuchProcess`_ and `AccessDenied`_ instead of ``OSError`` and ``RuntimeError``. -- 909_: [macOS] `Process.open_files()`_ and `Process.connections()`_ methods +- 909_, [macOS]: `Process.open_files()`_ and `Process.connections()`_ methods may raise ``OSError`` with no exception set if process is gone. -- 916_: [macOS] fix many compilation warnings. +- 916_, [macOS]: fix many compilation warnings. 4.3.1 ===== @@ -1015,18 +1015,18 @@ XXXX-XX-XX **Bug fixes** - 854_: `Process.as_dict()`_ raises ``ValueError`` if passed an erroneous attrs name. -- 857_: [SunOS] `Process.cpu_times()`_, `Process.cpu_percent()`_, +- 857_, [SunOS]: `Process.cpu_times()`_, `Process.cpu_percent()`_, `Process.threads()`_ and `Process.memory_maps()`_ may raise ``RuntimeError`` if attempting to query a 64bit process with a 32bit python. "Null" values are returned as a fallback. - 858_: `Process.as_dict()`_ should not call `Process.memory_info_ex()`_ because it's deprecated. -- 863_: [Windows] memory_map truncates addresses above 32 bits -- 866_: [Windows] `win_service_iter()`_ and services in general are not able to +- 863_, [Windows]: memory_map truncates addresses above 32 bits +- 866_, [Windows]: `win_service_iter()`_ and services in general are not able to handle unicode service names / descriptions. -- 869_: [Windows] `Process.wait()`_ may raise TimeoutExpired with wrong timeout +- 869_, [Windows]: `Process.wait()`_ may raise TimeoutExpired with wrong timeout unit (ms instead of sec). -- 870_: [Windows] Handle leak inside ``psutil_get_process_data``. +- 870_, [Windows]: Handle leak inside ``psutil_get_process_data``. 4.3.0 ===== @@ -1035,7 +1035,7 @@ XXXX-XX-XX **Enhancements** -- 819_: [Linux] different speedup improvements: +- 819_, [Linux]: different speedup improvements: - `Process.ppid()`_ is 20% faster - `Process.status()`_ is 28% faster - `Process.name()`_ is 25% faster @@ -1043,12 +1043,12 @@ XXXX-XX-XX **Bug fixes** -- 810_: [Windows] Windows wheels are incompatible with pip 7.1.2. -- 812_: [NetBSD] fix compilation on NetBSD-5.x. -- 823_: [NetBSD] `virtual_memory()`_ raises ``TypeError`` on Python 3. -- 829_: [UNIX] `disk_usage()`_ ``percent`` field takes root reserved space +- 810_, [Windows]: Windows wheels are incompatible with pip 7.1.2. +- 812_, [NetBSD]: fix compilation on NetBSD-5.x. +- 823_, [NetBSD]: `virtual_memory()`_ raises ``TypeError`` on Python 3. +- 829_, [UNIX]: `disk_usage()`_ ``percent`` field takes root reserved space into account. -- 816_: [Windows] fixed `net_io_counters()`_ values wrapping after 4.3GB in +- 816_, [Windows]: fixed `net_io_counters()`_ values wrapping after 4.3GB in Windows Vista (NT 6.0) and above using 64bit values from newer win APIs. 4.2.0 @@ -1058,10 +1058,10 @@ XXXX-XX-XX **Enhancements** -- 795_: [Windows] new APIs to deal with Windows services: `win_service_iter()`_ +- 795_, [Windows]: new APIs to deal with Windows services: `win_service_iter()`_ and `win_service_get()`_. -- 800_: [Linux] `virtual_memory()`_ returns a new ``shared`` memory field. -- 819_: [Linux] speedup ``/proc`` parsing: +- 800_, [Linux]: `virtual_memory()`_ returns a new ``shared`` memory field. +- 819_, [Linux]: speedup ``/proc`` parsing: - `Process.ppid()`_ is 20% faster - `Process.status()`_ is 28% faster - `Process.name()`_ is 25% faster @@ -1069,7 +1069,7 @@ XXXX-XX-XX **Bug fixes** -- 797_: [Linux] `net_if_stats()`_ may raise ``OSError`` for certain NIC cards. +- 797_, [Linux]: `net_if_stats()`_ may raise ``OSError`` for certain NIC cards. - 813_: `Process.as_dict()`_ should ignore extraneous attribute names which gets attached to the Process instance. @@ -1080,26 +1080,26 @@ XXXX-XX-XX **Enhancements** -- 777_: [Linux] `Process.open_files()`_ on Linux return 3 new fields: +- 777_, [Linux]: `Process.open_files()`_ on Linux return 3 new fields: ``position``, ``mode`` and ``flags``. - 779_: `Process.cpu_times()`_ returns two new fields, ``children_user`` and ``children_system`` (always set to 0 on macOS and Windows). -- 789_: [Windows] `cpu_times()`_ return two new fields: ``interrupt`` and +- 789_, [Windows]: `cpu_times()`_ return two new fields: ``interrupt`` and ``dpc``. Same for `cpu_times_percent()`_. - 792_: new `cpu_stats()`_ function returning number of CPU ``ctx_switches``, ``interrupts``, ``soft_interrupts`` and ``syscalls``. **Bug fixes** -- 774_: [FreeBSD] `net_io_counters()`_ dropout is no longer set to 0 if the kernel +- 774_, [FreeBSD]: `net_io_counters()`_ dropout is no longer set to 0 if the kernel provides it. -- 776_: [Linux] `Process.cpu_affinity()`_ may erroneously raise `NoSuchProcess`_. +- 776_, [Linux]: `Process.cpu_affinity()`_ may erroneously raise `NoSuchProcess`_. (patch by wxwright) -- 780_: [macOS] psutil does not compile with some GCC versions. +- 780_, [macOS]: psutil does not compile with some GCC versions. - 786_: `net_if_addrs()`_ may report incomplete MAC addresses. -- 788_: [NetBSD] `virtual_memory()`_ ``buffers`` and ``shared`` values were +- 788_, [NetBSD]: `virtual_memory()`_ ``buffers`` and ``shared`` values were set to 0. -- 790_: [macOS] psutil won't compile on macOS 10.4. +- 790_, [macOS]: psutil won't compile on macOS 10.4. 4.0.0 ===== @@ -1108,43 +1108,43 @@ XXXX-XX-XX **Enhancements** -- 523_: [Linux, FreeBSD] `disk_io_counters()`_ return a new ``busy_time`` field. -- 660_: [Windows] make.bat is smarter in finding alternative VS install +- 523_, [Linux,: FreeBSD] `disk_io_counters()`_ return a new ``busy_time`` field. +- 660_, [Windows]: make.bat is smarter in finding alternative VS install locations. (patch by mpderbec) - 732_: `Process.environ()`_. (patch by Frank Benkstein) -- 753_: [Linux, macOS, Windows] Process USS and PSS (Linux) "real" memory stats. +- 753_, [Linux,: macOS, Windows] Process USS and PSS (Linux) "real" memory stats. (patch by Eric Rahm) - 755_: `Process.memory_percent()`_ ``memtype`` parameter. - 758_: tests now live in psutil namespace. - 760_: expose OS constants (``psutil.LINUX``, ``psutil.OSX``, etc.) -- 756_: [Linux] `disk_io_counters()`_ return 2 new fields: ``read_merged_count`` +- 756_, [Linux]: `disk_io_counters()`_ return 2 new fields: ``read_merged_count`` and ``write_merged_count``. - 762_: new `procsmem.py`_ script. **Bug fixes** -- 685_: [Linux] `virtual_memory()`_ provides wrong results on systems with a lot +- 685_, [Linux]: `virtual_memory()`_ provides wrong results on systems with a lot of physical memory. -- 704_: [Solaris] psutil does not compile on Solaris sparc. +- 704_, [Solaris]: psutil does not compile on Solaris sparc. - 734_: on Python 3 invalid UTF-8 data is not correctly handled for `Process.name()`_, `Process.cwd()`_, `Process.exe()`_, `Process.cmdline()`_ and `Process.open_files()`_ methods resulting in ``UnicodeDecodeError`` exceptions. 'surrogateescape' error handler is now used as a workaround for replacing the corrupted data. -- 737_: [Windows] when the bitness of psutil and the target process was +- 737_, [Windows]: when the bitness of psutil and the target process was different, `Process.cmdline()`_ and `Process.cwd()`_ could return a wrong result or incorrectly report an `AccessDenied`_ error. -- 741_: [OpenBSD] psutil does not compile on mips64. -- 751_: [Linux] fixed call to ``Py_DECREF`` on possible ``NULL`` object. -- 754_: [Linux] `Process.cmdline()`_ can be wrong in case of zombie process. -- 759_: [Linux] `Process.memory_maps()`_ may return paths ending with ``" (deleted)"``. -- 761_: [Windows] `boot_time()`_ wraps to 0 after 49 days. -- 764_: [NetBSD] fix compilation on NetBSD-6.x. -- 766_: [Linux] `net_connections()`_ can't handle malformed ``/proc/net/unix`` +- 741_, [OpenBSD]: psutil does not compile on mips64. +- 751_, [Linux]: fixed call to ``Py_DECREF`` on possible ``NULL`` object. +- 754_, [Linux]: `Process.cmdline()`_ can be wrong in case of zombie process. +- 759_, [Linux]: `Process.memory_maps()`_ may return paths ending with ``" (deleted)"``. +- 761_, [Windows]: `boot_time()`_ wraps to 0 after 49 days. +- 764_, [NetBSD]: fix compilation on NetBSD-6.x. +- 766_, [Linux]: `net_connections()`_ can't handle malformed ``/proc/net/unix`` file. -- 767_: [Linux] `disk_io_counters()`_ may raise ``ValueError`` on 2.6 kernels and it's +- 767_, [Linux]: `disk_io_counters()`_ may raise ``ValueError`` on 2.6 kernels and it's broken on 2.4 kernels. -- 770_: [NetBSD] `disk_io_counters()`_ metrics didn't update. +- 770_, [NetBSD]: `disk_io_counters()`_ metrics didn't update. 3.4.2 ===== @@ -1153,13 +1153,13 @@ XXXX-XX-XX **Enhancements** -- 728_: [Solaris] exposed `PROCFS_PATH`_ constant to change the default +- 728_, [Solaris]: exposed `PROCFS_PATH`_ constant to change the default location of ``/proc`` filesystem. **Bug fixes** -- 724_: [FreeBSD] `virtual_memory()`_ ``total`` is incorrect. -- 730_: [FreeBSD] `virtual_memory()`_ crashes. +- 724_, [FreeBSD]: `virtual_memory()`_ ``total`` is incorrect. +- 730_, [FreeBSD]: `virtual_memory()`_ crashes. 3.4.1 ===== @@ -1168,21 +1168,21 @@ XXXX-XX-XX **Enhancements** -- 557_: [NetBSD] added NetBSD support. (contributed by Ryo Onodera and +- 557_, [NetBSD]: added NetBSD support. (contributed by Ryo Onodera and Thomas Klausner) -- 708_: [Linux] `net_connections()`_ and `Process.connections()`_ on Python 2 +- 708_, [Linux]: `net_connections()`_ and `Process.connections()`_ on Python 2 can be up to 3x faster in case of many connections. Also `Process.memory_maps()`_ is slightly faster. - 718_: `process_iter()`_ is now thread safe. **Bug fixes** -- 714_: [OpenBSD] `virtual_memory()`_ ``cached`` value was always set to 0. +- 714_, [OpenBSD]: `virtual_memory()`_ ``cached`` value was always set to 0. - 715_: don't crash at import time if `cpu_times()`_ fail for some reason. -- 717_: [Linux] `Process.open_files()`_ fails if deleted files still visible. -- 722_: [Linux] `swap_memory()`_ no longer crashes if ``sin`` / ``sout`` can't +- 717_, [Linux]: `Process.open_files()`_ fails if deleted files still visible. +- 722_, [Linux]: `swap_memory()`_ no longer crashes if ``sin`` / ``sout`` can't be determined due to missing ``/proc/vmstat``. -- 724_: [FreeBSD] `virtual_memory()`_ ``total`` is slightly incorrect. +- 724_, [FreeBSD]: `virtual_memory()`_ ``total`` is slightly incorrect. 3.3.0 ===== @@ -1191,13 +1191,13 @@ XXXX-XX-XX **Enhancements** -- 558_: [Linux] exposed `PROCFS_PATH`_ constant to change the default +- 558_, [Linux]: exposed `PROCFS_PATH`_ constant to change the default location of ``/proc`` filesystem. -- 615_: [OpenBSD] added OpenBSD support. (contributed by Landry Breuil) +- 615_, [OpenBSD]: added OpenBSD support. (contributed by Landry Breuil) **Bug fixes** -- 692_: [UNIX] `Process.name()`_ is no longer cached as it may change. +- 692_, [UNIX]: `Process.name()`_ is no longer cached as it may change. 3.2.2 ===== @@ -1206,15 +1206,15 @@ XXXX-XX-XX **Bug fixes** -- 517_: [SunOS] `net_io_counters()`_ failed to detect network interfaces +- 517_, [SunOS]: `net_io_counters()`_ failed to detect network interfaces correctly on Solaris 10 -- 541_: [FreeBSD] `disk_io_counters()`_ r/w times were expressed in seconds instead +- 541_, [FreeBSD]: `disk_io_counters()`_ r/w times were expressed in seconds instead of milliseconds. (patch by dasumin) -- 610_: [SunOS] fix build and tests on Solaris 10 -- 623_: [Linux] process or system connections raises ``ValueError`` if IPv6 is not +- 610_, [SunOS]: fix build and tests on Solaris 10 +- 623_, [Linux]: process or system connections raises ``ValueError`` if IPv6 is not supported by the system. -- 678_: [Linux] can't install psutil due to bug in setup.py. -- 688_: [Windows] compilation fails with MSVC 2015, Python 3.5. (patch by +- 678_, [Linux]: can't install psutil due to bug in setup.py. +- 688_, [Windows]: compilation fails with MSVC 2015, Python 3.5. (patch by Mike Sarahan) 3.2.1 @@ -1224,7 +1224,7 @@ XXXX-XX-XX **Bug fixes** -- 677_: [Linux] can't install psutil due to bug in setup.py. +- 677_, [Linux]: can't install psutil due to bug in setup.py. 3.2.0 ===== @@ -1233,11 +1233,11 @@ XXXX-XX-XX **Enhancements** -- 644_: [Windows] added support for ``CTRL_C_EVENT`` and ``CTRL_BREAK_EVENT`` +- 644_, [Windows]: added support for ``CTRL_C_EVENT`` and ``CTRL_BREAK_EVENT`` signals to use with `Process.send_signal()`_. - 648_: CI test integration for macOS. (patch by Jeff Tang) -- 663_: [UNIX] `net_if_addrs()`_ now returns point-to-point (VPNs) addresses. -- 655_: [Windows] different issues regarding unicode handling were fixed. On +- 663_, [UNIX]: `net_if_addrs()`_ now returns point-to-point (VPNs) addresses. +- 655_, [Windows]: different issues regarding unicode handling were fixed. On Python 2 all APIs returning a string will now return an encoded version of it by using sys.getfilesystemencoding() codec. The APIs involved are: - `net_if_addrs()`_ @@ -1250,19 +1250,19 @@ XXXX-XX-XX **Bug fixes** -- 513_: [Linux] fixed integer overflow for ``RLIM_INFINITY``. -- 641_: [Windows] fixed many compilation warnings. (patch by Jeff Tang) -- 652_: [Windows] `net_if_addrs()`_ ``UnicodeDecodeError`` in case of non-ASCII NIC +- 513_, [Linux]: fixed integer overflow for ``RLIM_INFINITY``. +- 641_, [Windows]: fixed many compilation warnings. (patch by Jeff Tang) +- 652_, [Windows]: `net_if_addrs()`_ ``UnicodeDecodeError`` in case of non-ASCII NIC names. -- 655_: [Windows] `net_if_stats()`_ ``UnicodeDecodeError`` in case of non-ASCII NIC +- 655_, [Windows]: `net_if_stats()`_ ``UnicodeDecodeError`` in case of non-ASCII NIC names. -- 659_: [Linux] compilation error on Suse 10. (patch by maozguttman) -- 664_: [Linux] compilation error on Alpine Linux. (patch by Bart van Kleef) -- 670_: [Windows] segfgault of `net_if_addrs()`_ in case of non-ASCII NIC names. +- 659_, [Linux]: compilation error on Suse 10. (patch by maozguttman) +- 664_, [Linux]: compilation error on Alpine Linux. (patch by Bart van Kleef) +- 670_, [Windows]: segfgault of `net_if_addrs()`_ in case of non-ASCII NIC names. (patch by sk6249) -- 672_: [Windows] compilation fails if using Windows SDK v8.0. (patch by +- 672_, [Windows]: compilation fails if using Windows SDK v8.0. (patch by Steven Winfield) -- 675_: [Linux] `net_connections()`_: ``UnicodeDecodeError`` may occur when listing +- 675_, [Linux]: `net_connections()`_: ``UnicodeDecodeError`` may occur when listing UNIX sockets. 3.1.1 @@ -1272,9 +1272,9 @@ XXXX-XX-XX **Bug fixes** -- 603_: [Linux] `Process.ionice()`_ set value range is incorrect. +- 603_, [Linux]: `Process.ionice()`_ set value range is incorrect. (patch by spacewander) -- 645_: [Linux] `cpu_times_percent()`_ may produce negative results. +- 645_, [Linux]: `cpu_times_percent()`_ may produce negative results. - 656_: ``from psutil import *`` does not work. 3.1.0 @@ -1284,7 +1284,7 @@ XXXX-XX-XX **Enhancements** -- 534_: [Linux] `disk_partitions()`_ added support for ZFS filesystems. +- 534_, [Linux]: `disk_partitions()`_ added support for ZFS filesystems. - 646_: continuous tests integration for Windows with https://ci.appveyor.com/project/giampaolo/psutil. - 647_: new dev guide: @@ -1293,20 +1293,20 @@ XXXX-XX-XX **Bug fixes** -- 340_: [Windows] `Process.open_files()`_ no longer hangs. Instead it uses a +- 340_, [Windows]: `Process.open_files()`_ no longer hangs. Instead it uses a thred which times out and skips the file handle in case it's taking too long to be retrieved. (patch by Jeff Tang, PR #597) -- 627_: [Windows] `Process.name()`_ no longer raises `AccessDenied`_ for pids owned +- 627_, [Windows]: `Process.name()`_ no longer raises `AccessDenied`_ for pids owned by another user. -- 636_: [Windows] `Process.memory_info()`_ raise `AccessDenied`_. -- 637_: [UNIX] raise exception if trying to send signal to Process PID 0 as it +- 636_, [Windows]: `Process.memory_info()`_ raise `AccessDenied`_. +- 637_, [UNIX]: raise exception if trying to send signal to Process PID 0 as it will affect os.getpid()'s process group instead of PID 0. -- 639_: [Linux] `Process.cmdline()`_ can be truncated. -- 640_: [Linux] ``*connections`` functions may swallow errors and return an +- 639_, [Linux]: `Process.cmdline()`_ can be truncated. +- 640_, [Linux]: ``*connections`` functions may swallow errors and return an incomplete list of connnections. - 642_: ``repr()`` of exceptions is incorrect. -- 653_: [Windows] Add ``inet_ntop()`` function for Windows XP to support IPv6. -- 641_: [Windows] Replace deprecated string functions with safe equivalents. +- 653_, [Windows]: Add ``inet_ntop()`` function for Windows XP to support IPv6. +- 641_, [Windows]: Replace deprecated string functions with safe equivalents. 3.0.1 ===== @@ -1315,9 +1315,9 @@ XXXX-XX-XX **Bug fixes** -- 632_: [Linux] better error message if cannot parse process UNIX connections. -- 634_: [Linux] `Process.cmdline()`_ does not include empty string arguments. -- 635_: [UNIX] crash on module import if 'enum' package is installed on python +- 632_, [Linux]: better error message if cannot parse process UNIX connections. +- 634_, [Linux]: `Process.cmdline()`_ does not include empty string arguments. +- 635_, [UNIX]: crash on module import if 'enum' package is installed on python < 3.4. 3.0.0 @@ -1340,31 +1340,31 @@ XXXX-XX-XX - 589_: `Process.cpu_affinity()`_ accepts any kind of iterable (set, tuple, ...), not only lists. - 594_: all deprecated APIs were removed. -- 599_: [Windows] `Process.name()`_ can now be determined for all processes even +- 599_, [Windows]: `Process.name()`_ can now be determined for all processes even when running as a limited user. - 602_: pre-commit GIT hook. - 629_: enhanced support for py.test and nose test discovery and tests run. -- 616_: [Windows] Add ``inet_ntop()`` function for Windows XP. +- 616_, [Windows]: Add ``inet_ntop()`` function for Windows XP. **Bug fixes** -- 428_: [all UNIXes except Linux] correct handling of zombie processes; +- 428_, [all :UNIXes except Linux] correct handling of zombie processes; introduced new `ZombieProcess`_ exception class. -- 512_: [BSD] fix segfault in `net_connections()`_. -- 555_: [Linux] `users()`_ correctly handles ":0" as an alias for +- 512_, [BSD]: fix segfault in `net_connections()`_. +- 555_, [Linux]: `users()`_ correctly handles ":0" as an alias for "localhost" -- 579_: [Windows] Fixed `Process.open_files()`_ for PID > 64K. -- 579_: [Windows] fixed many compiler warnings. -- 585_: [FreeBSD] `net_connections()`_ may raise ``KeyError``. -- 586_: [FreeBSD] `Process.cpu_affinity()`_ segfaults on set in case an invalid CPU +- 579_, [Windows]: Fixed `Process.open_files()`_ for PID > 64K. +- 579_, [Windows]: fixed many compiler warnings. +- 585_, [FreeBSD]: `net_connections()`_ may raise ``KeyError``. +- 586_, [FreeBSD]: `Process.cpu_affinity()`_ segfaults on set in case an invalid CPU number is provided. -- 593_: [FreeBSD] `Process.memory_maps()`_ segfaults. +- 593_, [FreeBSD]: `Process.memory_maps()`_ segfaults. - 606_: `Process.parent()`_ may swallow `NoSuchProcess`_ exceptions. -- 611_: [SunOS] `net_io_counters()`_ has send and received swapped -- 614_: [Linux]: `cpu_count()`_ with ``logical=False`` return the number of +- 611_, [SunOS]: `net_io_counters()`_ has send and received swapped +- 614_, [Linux]:: `cpu_count()`_ with ``logical=False`` return the number of sockets instead of cores. -- 618_: [SunOS] swap tests fail on Solaris when run as normal user -- 628_: [Linux] `Process.name()`_ truncates string in case it contains spaces +- 618_, [SunOS]: swap tests fail on Solaris when run as normal user +- 628_, [Linux]: `Process.name()`_ truncates string in case it contains spaces or parentheses. 2.2.1 @@ -1374,7 +1374,7 @@ XXXX-XX-XX **Bug fixes** -- 496_: [Linux] fix "``ValueError``: ambiguos inode with multiple PIDs references" +- 496_, [Linux]: fix "``ValueError``: ambiguos inode with multiple PIDs references" (patch by Bruno Binet) 2.2.0 @@ -1389,22 +1389,22 @@ XXXX-XX-XX - 564_: C extension version mismatch in case the user messed up with psutil installation or with sys.path is now detected at import time. - 568_: New `pidof.py`_ script. -- 569_: [FreeBSD] add support for process CPU affinity. +- 569_, [FreeBSD]: add support for process CPU affinity. **Bug fixes** -- 496_: [Solaris] can't import psutil. -- 547_: [UNIX] `Process.username()`_ may raise ``KeyError`` if UID can't be resolved. -- 551_: [Windows] get rid of the unicode hack for `net_io_counters()`_ NIC names. -- 556_: [Linux] lots of file handles were left open. -- 561_: [Linux] `net_connections()`_ might skip some legitimate UNIX sockets. +- 496_, [Solaris]: can't import psutil. +- 547_, [UNIX]: `Process.username()`_ may raise ``KeyError`` if UID can't be resolved. +- 551_, [Windows]: get rid of the unicode hack for `net_io_counters()`_ NIC names. +- 556_, [Linux]: lots of file handles were left open. +- 561_, [Linux]: `net_connections()`_ might skip some legitimate UNIX sockets. (patch by spacewander) -- 565_: [Windows] use proper encoding for `Process.username()`_ and `users()`_. +- 565_, [Windows]: use proper encoding for `Process.username()`_ and `users()`_. (patch by Sylvain Mouquet) -- 567_: [Linux] in the alternative implementation of CPU affinity ``PyList_Append`` +- 567_, [Linux]: in the alternative implementation of CPU affinity ``PyList_Append`` and ``Py_BuildValue`` return values are not checked. -- 569_: [FreeBSD] fix memory leak in `cpu_count()`_ with ``logical=False``. -- 571_: [Linux] `Process.open_files()`_ might swallow `AccessDenied`_ exceptions and +- 569_, [FreeBSD]: fix memory leak in `cpu_count()`_ with ``logical=False``. +- 571_, [Linux]: `Process.open_files()`_ might swallow `AccessDenied`_ exceptions and return an incomplete list of open files. 2.1.3 @@ -1412,7 +1412,7 @@ XXXX-XX-XX *2014-09-26* -- 536_: [Linux]: fix "undefined symbol: CPU_ALLOC" compilation error. +- 536_, [Linux]:: fix "undefined symbol: CPU_ALLOC" compilation error. 2.1.2 ===== @@ -1424,25 +1424,25 @@ XXXX-XX-XX - 407_: project moved from Google Code to Github; code moved from Mercurial to Git. - 492_: use tox to run tests on multiple python versions. (patch by msabramo) -- 505_: [Windows] distribution as wheel packages. +- 505_, [Windows]: distribution as wheel packages. - 511_: new `ps.py`_ sample code. **Bug fixes** -- 340_: [Windows] `Process.open_files()`_ no longer hangs. (patch by +- 340_, [Windows]: `Process.open_files()`_ no longer hangs. (patch by Jeff Tang) -- 501_: [Windows] `disk_io_counters()`_ may return negative values. -- 503_: [Linux] in rare conditions `Process.exe()`_, `Process.open_files()`_ and +- 501_, [Windows]: `disk_io_counters()`_ may return negative values. +- 503_, [Linux]: in rare conditions `Process.exe()`_, `Process.open_files()`_ and `Process.connections()`_ can raise ``OSError(ESRCH)`` instead of `NoSuchProcess`_. -- 504_: [Linux] can't build RPM packages via setup.py -- 506_: [Linux] python 2.4 support was broken. -- 522_: [Linux] `Process.cpu_affinity()`_ might return ``EINVAL``. (patch by David +- 504_, [Linux]: can't build RPM packages via setup.py +- 506_, [Linux]: python 2.4 support was broken. +- 522_, [Linux]: `Process.cpu_affinity()`_ might return ``EINVAL``. (patch by David Daeschler) -- 529_: [Windows] `Process.exe()`_ may raise unhandled ``WindowsError`` exception +- 529_, [Windows]: `Process.exe()`_ may raise unhandled ``WindowsError`` exception for PIDs 0 and 4. (patch by Jeff Tang) -- 530_: [Linux] `disk_io_counters()`_ may crash on old Linux distros +- 530_, [Linux]: `disk_io_counters()`_ may crash on old Linux distros (< 2.6.5) (patch by Yaolong Huang) -- 533_: [Linux] `Process.memory_maps()`_ may raise ``TypeError`` on old Linux distros. +- 533_, [Linux]: `Process.memory_maps()`_ may raise ``TypeError`` on old Linux distros. 2.1.1 ===== @@ -1451,10 +1451,10 @@ XXXX-XX-XX **Bug fixes** -- 446_: [Windows] fix encoding error when using `net_io_counters()`_ on Python 3. +- 446_, [Windows]: fix encoding error when using `net_io_counters()`_ on Python 3. (patch by Szigeti Gabor Niif) -- 460_: [Windows] `net_io_counters()`_ wraps after 4G. -- 491_: [Linux] `net_connections()`_ exceptions. (patch by Alexander Grothe) +- 460_, [Windows]: `net_io_counters()`_ wraps after 4G. +- 491_, [Linux]: `net_connections()`_ exceptions. (patch by Alexander Grothe) 2.1.0 ===== @@ -1467,9 +1467,9 @@ XXXX-XX-XX **Bug fixes** -- 421_: [Solaris] psutil does not compile on SunOS 5.10 (patch by Naveed +- 421_, [Solaris]: psutil does not compile on SunOS 5.10 (patch by Naveed Roudsari) -- 489_: [Linux] `disk_partitions()`_ return an empty list. +- 489_, [Linux]: `disk_partitions()`_ return an empty list. 2.0.0 ===== @@ -1478,7 +1478,7 @@ XXXX-XX-XX **Enhancements** -- 424_: [Windows] installer for Python 3.X 64 bit. +- 424_, [Windows]: installer for Python 3.X 64 bit. - 427_: number of logical CPUs and physical cores (`cpu_count()`_). - 447_: `wait_procs()`_ ``timeout`` parameter is now optional. - 452_: make Process instances hashable and usable with set()s. @@ -1489,7 +1489,7 @@ XXXX-XX-XX it's a common trap to introduce slowdowns. - 468_: move documentation to readthedocs.com. - 477_: `Process.cpu_percent()`_ is about 30% faster. (suggested by crusaderky) -- 478_: [Linux] almost all APIs are about 30% faster on Python 3.X. +- 478_, [Linux]: almost all APIs are about 30% faster on Python 3.X. - 479_: long deprecated ``psutil.error`` module is gone; exception classes now live in "psutil" namespace only. @@ -1497,22 +1497,22 @@ XXXX-XX-XX - 193_: `psutil.Popen`_ constructor can throw an exception if the spawned process terminates quickly. -- 340_: [Windows] `Process.open_files()`_ no longer hangs. (patch by +- 340_, [Windows]: `Process.open_files()`_ no longer hangs. (patch by jtang@vahna.net) -- 443_: [Linux] fix a potential overflow issue for `Process.cpu_affinity()`_ +- 443_, [Linux]: fix a potential overflow issue for `Process.cpu_affinity()`_ (set) on systems with more than 64 CPUs. -- 448_: [Windows] `Process.children()`_ and `Process.ppid()`_ memory leak (patch +- 448_, [Windows]: `Process.children()`_ and `Process.ppid()`_ memory leak (patch by Ulrich Klank). -- 457_: [POSIX] `pid_exists()`_ always returns True for PID 0. +- 457_, [POSIX]: `pid_exists()`_ always returns True for PID 0. - 461_: namedtuples are not pickle-able. -- 466_: [Linux] `Process.exe()`_ improper null bytes handling. (patch by +- 466_, [Linux]: `Process.exe()`_ improper null bytes handling. (patch by Gautam Singh) - 470_: `wait_procs()`_ might not wait. (patch by crusaderky) -- 471_: [Windows] `Process.exe()`_ improper unicode handling. (patch by +- 471_, [Windows]: `Process.exe()`_ improper unicode handling. (patch by alex@mroja.net) - 473_: `psutil.Popen`_ ``wait()`` method does not set returncode attribute. -- 474_: [Windows] `Process.cpu_percent()`_ is no longer capped at 100%. -- 476_: [Linux] encoding error for `Process.name()`_ and `Process.cmdline()`_. +- 474_, [Windows]: `Process.cpu_percent()`_ is no longer capped at 100%. +- 476_, [Linux]: encoding error for `Process.name()`_ and `Process.cmdline()`_. **API changes** @@ -1646,10 +1646,10 @@ DeprecationWarning. **Bug fixes** -- 348_: [Windows XP] fixed "ImportError: DLL load failed" occurring on module +- 348_, [Windows :XP] fixed "ImportError: DLL load failed" occurring on module import. -- 425_: [Solaris] crash on import due to failure at determining BOOT_TIME. -- 443_: [Linux] can't set CPU affinity on systems with more than 64 cores. +- 425_, [Solaris]: crash on import due to failure at determining BOOT_TIME. +- 443_, [Linux]: can't set CPU affinity on systems with more than 64 cores. 1.2.0 ===== @@ -1665,7 +1665,7 @@ DeprecationWarning. **Bug fixes** -- 348_: [Windows XP/Vista] fix "ImportError: DLL load failed" occurring on +- 348_, [Windows :XP/Vista] fix "ImportError: DLL load failed" occurring on module import. 1.1.3 @@ -1675,7 +1675,7 @@ DeprecationWarning. **Bug fixes** -- 442_: [Linux] psutil won't compile on certain version of Linux because of +- 442_, [Linux]: psutil won't compile on certain version of Linux because of missing ``prlimit(2)`` syscall. 1.1.2 @@ -1685,7 +1685,7 @@ DeprecationWarning. **Bug fixes** -- 442_: [Linux] psutil won't compile on Debian 6.0 because of missing +- 442_, [Linux]: psutil won't compile on Debian 6.0 because of missing ``prlimit(2)`` syscall. 1.1.1 @@ -1695,7 +1695,7 @@ DeprecationWarning. **Bug fixes** -- 442_: [Linux] psutil won't compile on kernels < 2.6.36 due to missing +- 442_, [Linux]: psutil won't compile on kernels < 2.6.36 due to missing ``prlimit(2)`` syscall. 1.1.0 @@ -1706,23 +1706,23 @@ DeprecationWarning. **Enhancements** - 410_: host tar.gz and windows binary files are on PyPI. -- 412_: [Linux] get/set process resource limits. -- 415_: [Windows] `Process.children()`_ is an order of magnitude faster. -- 426_: [Windows] `Process.name()`_ is an order of magnitude faster. -- 431_: [UNIX] `Process.name()`_ is slightly faster because it unnecessarily +- 412_, [Linux]: get/set process resource limits. +- 415_, [Windows]: `Process.children()`_ is an order of magnitude faster. +- 426_, [Windows]: `Process.name()`_ is an order of magnitude faster. +- 431_, [UNIX]: `Process.name()`_ is slightly faster because it unnecessarily retrieved also `Process.cmdline()`_. **Bug fixes** -- 391_: [Windows] `cpu_times_percent()`_ returns negative percentages. +- 391_, [Windows]: `cpu_times_percent()`_ returns negative percentages. - 408_: ``STATUS_*`` and ``CONN_*`` constants don't properly serialize on JSON. -- 411_: [Windows] `disk_usage.py`_ may pop-up a GUI error. -- 413_: [Windows] `Process.memory_info()`_ leaks memory. -- 414_: [Windows] `Process.exe()`_ on Windows XP may raise ``ERROR_INVALID_PARAMETER``. +- 411_, [Windows]: `disk_usage.py`_ may pop-up a GUI error. +- 413_, [Windows]: `Process.memory_info()`_ leaks memory. +- 414_, [Windows]: `Process.exe()`_ on Windows XP may raise ``ERROR_INVALID_PARAMETER``. - 416_: `disk_usage()`_ doesn't work well with unicode path names. -- 430_: [Linux] process IO counters report wrong number of r/w syscalls. -- 435_: [Linux] `net_io_counters()`_ might report erreneous NIC names. -- 436_: [Linux] `net_io_counters()`_ reports a wrong ``dropin`` value. +- 430_, [Linux]: process IO counters report wrong number of r/w syscalls. +- 435_, [Linux]: `net_io_counters()`_ might report erreneous NIC names. +- 436_, [Linux]: `net_io_counters()`_ reports a wrong ``dropin`` value. **API changes** @@ -1752,11 +1752,11 @@ DeprecationWarning. **Bug fixes** -- 374_: [Windows] negative memory usage reported if process uses a lot of +- 374_, [Windows]: negative memory usage reported if process uses a lot of memory. -- 379_: [Linux] `Process.memory_maps()`_ may raise ``ValueError``. -- 394_: [macOS] Mapped memory regions report incorrect file name. -- 404_: [Linux] ``sched_*affinity()`` are implicitly declared. (patch by Arfrever) +- 379_, [Linux]: `Process.memory_maps()`_ may raise ``ValueError``. +- 394_, [macOS]: Mapped memory regions report incorrect file name. +- 404_, [Linux]: ``sched_*affinity()`` are implicitly declared. (patch by Arfrever) **API changes** @@ -1773,10 +1773,10 @@ DeprecationWarning. **Bug fixes** -- 325_: [BSD] `virtual_memory()`_ can raise ``SystemError``. +- 325_, [BSD]: `virtual_memory()`_ can raise ``SystemError``. (patch by Jan Beich) -- 370_: [BSD] `Process.connections()`_ requires root. (patch by John Baldwin) -- 372_: [BSD] different process methods raise `NoSuchProcess`_ instead of +- 370_, [BSD]: `Process.connections()`_ requires root. (patch by John Baldwin) +- 372_, [BSD]: different process methods raise `NoSuchProcess`_ instead of `AccessDenied`_. 0.7.0 @@ -1788,51 +1788,51 @@ DeprecationWarning. - 233_: code migrated to Mercurial (yay!) - 246_: psutil.error module is deprecated and scheduled for removal. -- 328_: [Windows] `Process.ionice()`_ support. +- 328_, [Windows]: `Process.ionice()`_ support. - 359_: psutil.get_boot_time() -- 361_: [Linux] `cpu_times()`_ now includes new ``steal``, ``guest`` and +- 361_, [Linux]: `cpu_times()`_ now includes new ``steal``, ``guest`` and ``guest_nice`` fields available on recent Linux kernels. Also, `cpu_percent()`_ is more accurate. - 362_: `cpu_times_percent()`_ (per-CPU-time utilization as a percentage) **Bug fixes** -- 234_: [Windows] `disk_io_counters()`_ fails to list certain disks. -- 264_: [Windows] use of `disk_partitions()`_ may cause a message box to +- 234_, [Windows]: `disk_io_counters()`_ fails to list certain disks. +- 264_, [Windows]: use of `disk_partitions()`_ may cause a message box to appear. -- 313_: [Linux] `virtual_memory()`_ and `swap_memory()`_ can crash on +- 313_, [Linux]: `virtual_memory()`_ and `swap_memory()`_ can crash on certain exotic Linux flavors having an incomplete ``/proc`` interface. If that's the case we now set the unretrievable stats to 0 and raise a RuntimeWarning. -- 315_: [macOS] fix some compilation warnings. -- 317_: [Windows] cannot set process CPU affinity above 31 cores. -- 319_: [Linux] `Process.memory_maps()`_ raises ``KeyError`` 'Anonymous' on Debian +- 315_, [macOS]: fix some compilation warnings. +- 317_, [Windows]: cannot set process CPU affinity above 31 cores. +- 319_, [Linux]: `Process.memory_maps()`_ raises ``KeyError`` 'Anonymous' on Debian squeeze. -- 321_: [UNIX] `Process.ppid()`_ property is no longer cached as the kernel may set +- 321_, [UNIX]: `Process.ppid()`_ property is no longer cached as the kernel may set the ppid to 1 in case of a zombie process. -- 323_: [macOS] `disk_io_counters()`_ ``read_time`` and ``write_time`` +- 323_, [macOS]: `disk_io_counters()`_ ``read_time`` and ``write_time`` parameters were reporting microseconds not milliseconds. (patch by Gregory Szorc) - 331_: `Process.cmdline()`_ is no longer cached after first acces as it may change. -- 333_: [macOS] Leak of Mach ports on macOS (patch by rsesek@google.com) -- 337_: [Linux] process methods not working because of a poor ``/proc`` +- 333_, [macOS]: Leak of Mach ports on macOS (patch by rsesek@google.com) +- 337_, [Linux]: process methods not working because of a poor ``/proc`` implementation will raise ``NotImplementedError`` rather than ``RuntimeError`` and `Process.as_dict()`_ will not blow up. (patch by Curtin1060) -- 338_: [Linux] `disk_io_counters()`_ fails to find some disks. -- 339_: [FreeBSD] get_pid_list() can allocate all the memory on system. -- 341_: [Linux] psutil might crash on import due to error in retrieving system +- 338_, [Linux]: `disk_io_counters()`_ fails to find some disks. +- 339_, [FreeBSD]: get_pid_list() can allocate all the memory on system. +- 341_, [Linux]: psutil might crash on import due to error in retrieving system terminals map. -- 344_: [FreeBSD] `swap_memory()`_ might return incorrect results due to +- 344_, [FreeBSD]: `swap_memory()`_ might return incorrect results due to kvm_open(3) not being called. (patch by Jean Sebastien) -- 338_: [Linux] `disk_io_counters()`_ fails to find some disks. -- 351_: [Windows] if psutil is compiled with mingw32 (provided installers for +- 338_, [Linux]: `disk_io_counters()`_ fails to find some disks. +- 351_, [Windows]: if psutil is compiled with mingw32 (provided installers for py2.4 and py2.5 are) `disk_io_counters()`_ will fail. (Patch by m.malycha) -- 353_: [macOS] get_users() returns an empty list on macOS 10.8. +- 353_, [macOS]: get_users() returns an empty list on macOS 10.8. - 356_: `Process.parent()`_ now checks whether parent PID has been reused in which case returns ``None``. - 365_: `Process.nice()`_ (set) should check PID has not been reused by another process. -- 366_: [FreeBSD] `Process.memory_maps()`_, `Process.num_fds()`_, +- 366_, [FreeBSD]: `Process.memory_maps()`_, `Process.num_fds()`_, `Process.open_files()`_ and `Process.cwd()`_ methods raise ``RuntimeError`` instead of `AccessDenied`_. @@ -1871,14 +1871,14 @@ DeprecationWarning. **Enhancements** -- 216_: [POSIX] get_connections() UNIX sockets support. -- 220_: [FreeBSD] get_connections() has been rewritten in C and no longer +- 216_, [POSIX]: get_connections() UNIX sockets support. +- 220_, [FreeBSD]: get_connections() has been rewritten in C and no longer requires lsof. -- 222_: [macOS] add support for `Process.cwd()`_. +- 222_, [macOS]: add support for `Process.cwd()`_. - 261_: process extended memory info. -- 295_: [macOS] `Process.exe()`_ path is now determined by asking the OS +- 295_, [macOS]: `Process.exe()`_ path is now determined by asking the OS instead of being guessed from `Process.cmdline()`_. -- 297_: [macOS] the Process methods below were always raising `AccessDenied`_ for +- 297_, [macOS]: the Process methods below were always raising `AccessDenied`_ for any process except the current one. Now this is no longer true. Also they are 2.5x faster. - name @@ -1890,7 +1890,7 @@ DeprecationWarning. - 300_: `pmap.py`_ script. - 301_: `process_iter()`_ now yields processes sorted by their PIDs. - 302_: process number of voluntary and involuntary context switches. -- 303_: [Windows] the Process methods below were always raising `AccessDenied`_ +- 303_, [Windows]: the Process methods below were always raising `AccessDenied`_ for any process not owned by current user. Now this is no longer true: - create_time - get_cpu_times() @@ -1929,16 +1929,16 @@ DeprecationWarning. **Bug fixes** -- 298_: [macOS and BSD] memory leak in `Process.num_fds()`_. +- 298_, [macOS :and BSD] memory leak in `Process.num_fds()`_. - 299_: potential memory leak every time PyList_New(0) is used. -- 303_: [Windows] potential heap corruption in `Process.num_threads()`_ and +- 303_, [Windows]: potential heap corruption in `Process.num_threads()`_ and `Process.status()`_ methods. -- 305_: [FreeBSD] psutil can't compile on FreeBSD 9 due to removal of utmp.h. +- 305_, [FreeBSD]: psutil can't compile on FreeBSD 9 due to removal of utmp.h. - 306_: at C level, errors are not checked when invoking ``Py*`` functions which create or manipulate Python objects leading to potential memory related errors and/or segmentation faults. -- 307_: [FreeBSD] values returned by `net_io_counters()`_ are wrong. -- 308_: [BSD / Windows] psutil.virtmem_usage() wasn't actually returning +- 307_, [FreeBSD]: values returned by `net_io_counters()`_ are wrong. +- 308_, [BSD :/ Windows] psutil.virtmem_usage() wasn't actually returning information about swap memory usage as it was supposed to do. It does now. - 309_: `Process.open_files()`_ might not return files which can not be accessed @@ -1960,13 +1960,13 @@ DeprecationWarning. **Enhancements** -- 293_: [Windows] `Process.exe()`_ path is now determined by asking the OS +- 293_, [Windows]: `Process.exe()`_ path is now determined by asking the OS instead of being guessed from `Process.cmdline()`_. **Bug fixes** -- 292_: [Linux] race condition in process files/threads/connections. -- 294_: [Windows] Process CPU affinity is only able to set CPU #0. +- 292_, [Linux]: race condition in process files/threads/connections. +- 294_, [Windows]: Process CPU affinity is only able to set CPU #0. 0.5.0 ===== @@ -1975,18 +1975,18 @@ DeprecationWarning. **Enhancements** -- 195_: [Windows] number of handles opened by process. +- 195_, [Windows]: number of handles opened by process. - 209_: `disk_partitions()`_ now provides also mount options. - 229_: list users currently connected on the system (`users()`_). -- 238_: [Linux, Windows] process CPU affinity (get and set). +- 238_, [Linux,: Windows] process CPU affinity (get and set). - 242_: add ``recursive=True`` to `Process.children()`_: return all process descendants. -- 245_: [POSIX] `Process.wait()`_ incrementally consumes less CPU cycles. -- 257_: [Windows] removed Windows 2000 support. -- 258_: [Linux] `Process.memory_info()`_ is now 0.5x faster. +- 245_, [POSIX]: `Process.wait()`_ incrementally consumes less CPU cycles. +- 257_, [Windows]: removed Windows 2000 support. +- 258_, [Linux]: `Process.memory_info()`_ is now 0.5x faster. - 260_: process's mapped memory regions. (Windows patch by wj32.64, macOS patch by Jeremy Whitlock) -- 262_: [Windows] `disk_partitions()`_ was slow due to inspecting the +- 262_, [Windows]: `disk_partitions()`_ was slow due to inspecting the floppy disk drive also when "all" argument was False. - 273_: psutil.get_process_list() is deprecated. - 274_: psutil no longer requires 2to3 at installation time in order to work @@ -1999,7 +1999,7 @@ DeprecationWarning. representation. - 283_: speedup `Process.is_running()`_ by caching its return value in case the process is terminated. -- 284_: [POSIX] per-process number of opened file descriptors. +- 284_, [POSIX]: per-process number of opened file descriptors. - 287_: `process_iter()`_ now caches Process instances between calls. - 290_: Process.nice property is deprecated in favor of new get_nice() and set_nice() methods. @@ -2008,20 +2008,20 @@ DeprecationWarning. - 193_: `psutil.Popen`_ constructor can throw an exception if the spawned process terminates quickly. -- 240_: [macOS] incorrect use of ``free()`` for `Process.connections()`_. -- 244_: [POSIX] `Process.wait()`_ can hog CPU resources if called against a +- 240_, [macOS]: incorrect use of ``free()`` for `Process.connections()`_. +- 244_, [POSIX]: `Process.wait()`_ can hog CPU resources if called against a process which is not our children. -- 248_: [Linux] `net_io_counters()`_ might return erroneous NIC names. -- 252_: [Windows] `Process.cwd()`_ erroneously raise `NoSuchProcess`_ for +- 248_, [Linux]: `net_io_counters()`_ might return erroneous NIC names. +- 252_, [Windows]: `Process.cwd()`_ erroneously raise `NoSuchProcess`_ for processes owned by another user. It now raises `AccessDenied`_ instead. -- 266_: [Windows] psutil.get_pid_list() only shows 1024 processes. +- 266_, [Windows]: psutil.get_pid_list() only shows 1024 processes. (patch by Amoser) -- 267_: [macOS] `Process.connections()`_ - an erroneous remote address was +- 267_, [macOS]: `Process.connections()`_ - an erroneous remote address was returned. (Patch by Amoser) -- 272_: [Linux] `Process.open_files()`_ - potential race condition can lead to +- 272_, [Linux]: `Process.open_files()`_ - potential race condition can lead to unexpected `NoSuchProcess`_ exception. Also, we can get incorrect reports of not absolutized path names. -- 275_: [Linux] ``Process.io_counters()`` erroneously raise `NoSuchProcess`_ on +- 275_, [Linux]: ``Process.io_counters()`` erroneously raise `NoSuchProcess`_ on old Linux versions. Where not available it now raises ``NotImplementedError``. - 286_: `Process.is_running()`_ doesn't actually check whether PID has been @@ -2048,10 +2048,10 @@ DeprecationWarning. **Bug fixes** - 228_: some example scripts were not working with python 3. -- 230_: [Windows / macOS] memory leak in `Process.connections()`_. -- 232_: [Linux] psutil.phymem_usage() can report erroneous values which are +- 230_, [Windows :/ macOS] memory leak in `Process.connections()`_. +- 232_, [Linux]: psutil.phymem_usage() can report erroneous values which are different than "free" command. -- 236_: [Windows] memory/handle leak in `Process.memory_info()`_, +- 236_, [Windows]: memory/handle leak in `Process.memory_info()`_, `Process.suspend()`_ and `Process.resume()`_ methods. 0.4.0 @@ -2062,37 +2062,37 @@ DeprecationWarning. **Enhancements** - 150_: network I/O counters. (macOS and Windows patch by Jeremy Whitlock) -- 154_: [FreeBSD] add support for `Process.cwd()`_. -- 157_: [Windows] provide installer for Python 3.2 64-bit. +- 154_, [FreeBSD]: add support for `Process.cwd()`_. +- 157_, [Windows]: provide installer for Python 3.2 64-bit. - 198_: `Process.wait()`_ with ``timeout=0`` can now be used to make wait() return immediately. - 206_: disk I/O counters. (macOS and Windows patch by Jeremy Whitlock) - 213_: add `iotop.py`_ script. - 217_: `Process.connections()`_ now has a "kind" argument to filter for connections with different criteria. -- 221_: [FreeBSD] `Process.open_files()`_ has been rewritten in C and no longer +- 221_, [FreeBSD]: `Process.open_files()`_ has been rewritten in C and no longer relies on lsof. - 223_: add `top.py`_ script. - 227_: add `nettop.py`_ script. **Bug fixes** -- 135_: [macOS] psutil cannot create Process object. -- 144_: [Linux] no longer support 0 special PID. -- 188_: [Linux] psutil import error on Linux ARM architectures. -- 194_: [POSIX] `Process.cpu_percent()`_ now reports a percentage over +- 135_, [macOS]: psutil cannot create Process object. +- 144_, [Linux]: no longer support 0 special PID. +- 188_, [Linux]: psutil import error on Linux ARM architectures. +- 194_, [POSIX]: `Process.cpu_percent()`_ now reports a percentage over 100 on multicore processors. -- 197_: [Linux] `Process.connections()`_ is broken on platforms not +- 197_, [Linux]: `Process.connections()`_ is broken on platforms not supporting IPv6. -- 200_: [Linux] ``psutil.NUM_CPUS`` not working on armel and sparc architectures +- 200_, [Linux]: ``psutil.NUM_CPUS`` not working on armel and sparc architectures and causing crash on module import. -- 201_: [Linux] `Process.connections()`_ is broken on big-endian +- 201_, [Linux]: `Process.connections()`_ is broken on big-endian architectures. - 211_: Process instance can unexpectedly raise `NoSuchProcess`_ if tested for equality with another object. -- 218_: [Linux] crash at import time on Debian 64-bit because of a missing +- 218_, [Linux]: crash at import time on Debian 64-bit because of a missing line in ``/proc/meminfo``. -- 226_: [FreeBSD] crash at import time on FreeBSD 7 and minor. +- 226_, [FreeBSD]: crash at import time on FreeBSD 7 and minor. 0.3.0 ===== @@ -2113,14 +2113,14 @@ DeprecationWarning. **Bug fixes** - 159_: SetSeDebug() does not close handles or unset impersonation on return. -- 164_: [Windows] wait function raises a TimeoutException when a process +- 164_, [Windows]: wait function raises a TimeoutException when a process returns -1 . - 165_: `Process.status()`_ raises an unhandled exception. - 166_: `Process.memory_info()`_ leaks handles hogging system resources. - 168_: `cpu_percent()`_ returns erroneous results when used in non-blocking mode. (patch by Philip Roberts) - 178_: macOS - Process.get_threads() leaks memory -- 180_: [Windows] Process's get_num_threads() and get_threads() methods can +- 180_, [Windows]: Process's get_num_threads() and get_threads() methods can raise `NoSuchProcess`_ exception while process still exists. 0.2.1 @@ -2144,9 +2144,9 @@ DeprecationWarning. - 147_: per-process I/O nice (priority) - Linux only. - 148_: `psutil.Popen`_ class which tidies up subprocess.Popen and psutil.Process in a unique interface. -- 152_: [macOS] `Process.open_files()`_ implementation has been rewritten +- 152_, [macOS]: `Process.open_files()`_ implementation has been rewritten in C and no longer relies on lsof resulting in a 3x speedup. -- 153_: [macOS] `Process.connections()`_ implementation has been rewritten +- 153_, [macOS]: `Process.connections()`_ implementation has been rewritten in C and no longer relies on lsof resulting in a 3x speedup. **Bug fixes** @@ -2279,9 +2279,9 @@ DeprecationWarning. **Bug fixes** -- 36_: [Windows] `NoSuchProcess`_ not raised when accessing timing methods. +- 36_, [Windows]: `NoSuchProcess`_ not raised when accessing timing methods. - 40_: test_get_cpu_times() failing on FreeBSD and macOS. -- 42_: [Windows] `Process.memory_percent()`_ raises `AccessDenied`_. +- 42_, [Windows]: `Process.memory_percent()`_ raises `AccessDenied`_. 0.1.1 ===== @@ -2308,13 +2308,13 @@ DeprecationWarning. **Bug fixes** -- 16_: [Windows] Special case for "System Idle Process" (PID 0) which +- 16_, [Windows]: Special case for "System Idle Process" (PID 0) which otherwise would return an "invalid parameter" exception. - 17_: get_process_list() ignores `NoSuchProcess`_ and `AccessDenied`_ exceptions during building of the list. -- 22_: [Windows] `Process.kill()`_ for PID 0 was failing with an unset exception. +- 22_, [Windows]: `Process.kill()`_ for PID 0 was failing with an unset exception. - 23_: Special case for `pid_exists()`_ with PID 0. -- 24_: [Windows] `Process.kill()`_ for PID 0 now raises `AccessDenied`_ exception +- 24_, [Windows]: `Process.kill()`_ for PID 0 now raises `AccessDenied`_ exception instead of ``WindowsError``. - 30_: psutil.get_pid_list() was returning two ins |