All Versions
Latest Version
Avg Release Cycle
46 days
Latest Release

Changelog History
Page 2

  • v5.6.5 Changes

    November 06, 2019


    πŸ› Bug fixes

    • 🚚 1615_: remove pyproject.toml as it was causing installation issues.
  • v5.6.4 Changes

    November 04, 2019


    ✨ Enhancements

    • 🐧 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(), environ() or cwd() may occasionally fail with ERROR_PARTIAL_COPY which now gets translated to AccessDenied.
    • 🐧 1126_: [Linux] cpu_affinity() segfaults on CentOS 5 / manylinux. cpu_affinity() support for CentOS 5 was removed.
    • 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 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 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 by Athos Ribeiro)
    • 1606_: [SunOS] compilation fails on SunOS 5.10. (patch by vser1)
  • v5.6.3 Changes

    June 11, 2019


    ✨ Enhancements

    • πŸ‘ 1494_: [AIX] added support for Process.environ(). (patch by Arnon Yaari)

    πŸ› Bug fixes

    • 1276_: [AIX] can't get whole cmdline(). (patch by Arnon Yaari)
    • 🏁 1501_: [Windows] Process cmdline() and 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 Kamil Rytarowski)
  • v5.6.2 Changes

    April 26, 2019


    ✨ Enhancements

    • 🏁 604_: [Windows, Windows] add new psutil.getloadavg(), returning system load average calculation, including on Windows (emulated). (patch by Ammar Askar)
    • 🐧 1404_: [Linux] cpu_count(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 physical CPUs 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 (ionice()).Also, I/O priority values are now exposed as 4 new constants: IOPRIO_VERYLOW, IOPRIO_LOW, IOPRIO_NORMAL, IOPRIO_HIGH.
    • βœ… 1478_: add make command to re-run tests failed on last run.

    πŸ› Bug fixes

    • 🏁 1223_: [Windows] boot_time() may return 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 Benjamin Drung)
    • 1463_: script was broken.
    • 🐧 1470_: [Linux] disk_partitions(): fix corner case when /etc/mtab doesn't exist. (patch by Cedric Lamoriniere)
    • 1471_: [SunOS] Process name() and cmdline() can return SystemError. (patch by Daniel Beer)
    • 🐧 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 in WindowsError being raised instead of AccessDenied.
    • 🏁 1477_: [Windows] wrong or absent error handling for private NTSTATUS Windows APIs. Different process methods were affected by this.
    • 🏁 1480_: [Windows] psutil.cpu_count(logical=False) could cause a crash due to fixed read violation. (patch by Samer Masterson)
    • 1486_: [AIX, SunOS] AttributeError when interacting with Process methods involved into oneshot() context.
    • 1491_: [SunOS] net_if_addrs(): free() ifap struct on error. (patch by Agnewee)
    • 🐧 1493_: [Linux] cpu_freq(): handle the case where /sys/devices/system/cpu/cpufreq/ exists but is empty.
  • v5.6.1 Changes

    March 11, 2019


    πŸ› 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 on Wine.
    • 🏁 1451_: [Windows] Process.memory_full_info() segfaults. NtQueryVirtualMemory is now used instead of QueryWorkingSet to calculate USS memory.
  • v5.6.0 Changes

    March 05, 2019


    ✨ Enhancements

    • 🏁 1379_: [Windows] Process suspend() and 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 name.
    • 🏁 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 startup.
    • 1428_: in case of error, the traceback message now shows the underlying C function called which failed.
    • 1433_: new Process.parents() method. (idea by Ghislain Le Meur)
    • 1437_: pids() are returned in sorted order.
    • 0️⃣ 1442_: python3 is now the default interpreter used by Makefile.

    πŸ› Bug fixes

    • 1353_: process_iter() is now thread safe (it rarely raised TypeError).
    • 🏁 1394_: [Windows] Process name() and 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 instantiation.
    • 🏁 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 environ() may erroneously raise OSError on failed malloc().
    • 🏁 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 because we're not using the actual system PAGESIZE.
    • 1439_: [NetBSD] Process.connections() may return incomplete results if using 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 (segfault) for years.
  • v5.5.1 Changes

    February 15, 2019


    ✨ Enhancements

    • 🏁 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 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 by Arnon Yaari)
  • v5.5.0 Changes

    January 23, 2019


    ✨ Enhancements

    • πŸ‘ 1350_: [FreeBSD] added support for sensors_temperatures(). (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 io_counters() method are no longer exposed if not supported by the kernel.
    • 🏁 1368_: [Windows] fix psutil.Process().ionice(...) mismatch. (patch by EccoTheFlintstone)
    • 🏁 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 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 EccoTheFlintstone)
  • v5.4.8 Changes

    October 30, 2018


    ✨ Enhancements

    • 🐧 1197_: [Linux] cpu_freq() is now implemented by parsing /proc/cpuinfo in case /sys/devices/system/cpu/* filesystem is not available.
    • 🐧 1310_: [Linux] psutil.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. (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 (psutil.virtual_memory()) metrics are not accurate.
    • 🏁 1294_: [Windows] psutil.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 (psutil.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. (patch by Ilya Yanok)
    • 1346_: [SunOS] net_connections() returns an empty list. (patch by Oleksii Shevchuk)
  • v5.4.7 Changes

    August 14, 2018


    ✨ Enhancements

    • 🍎 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 /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 task_for_pid() syscall. AccessDenied is now raised instead.
    • 🍎 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] psutil.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 "parked" statuses (returns '?').
    • 🐧 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.