XENON1T / pax

The XENON1T raw data processor [deprecated]
BSD 3-Clause "New" or "Revised" License
16 stars 15 forks source link

Pin psutil to latest version 5.4.3 #695

Closed pyup-bot closed 6 years ago

pyup-bot commented 6 years ago

This PR pins psutil to the latest release 5.4.3.

Changelog ### 5.4.3 ``` ===== *2018-01-01* **Enhancements** - 775_: disk_partitions() on Windows return mount points. **Bug fixes** - 1193_: pids() may return False on OSX. ``` ### 5.4.2 ``` ===== *2017-12-07* **Enhancements** - 1173_: introduced PSUTIL_DEBUG environment variable which can be set in order to print useful debug messages on stderr (useful in case of nasty errors). - 1177_: added support for sensors_battery() on OSX. (patch by Arnon Yaari) - 1183_: Process.children() is 2x faster on UNIX and 2.4x faster on Linux. - 1188_: deprecated method Process.memory_info_ex() now warns by using FutureWarning instead of DeprecationWarning. **Bug fixes** - 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 splits cmdline args for misbehaving processes which overwrite /proc/pid/cmdline and use spaces instead of null bytes as args separator. - 1181_: [OSX] Process.memory_maps() may raise ENOENT. - 1187_: [OSX] pids() does not return PID 0 on recent OSX versions. ``` ### 5.4.1 ``` ===== *2017-11-08* **Enhancements** - 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 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_counter() packets count now include also non-unicast packets. (patch by Matthew Long) ``` ### 5.4.0 ``` ===== *2017-10-12* **Enhancements** - 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()'s read_time and write_time were expressed in tens of micro seconds instead of milliseconds. - 1127_: [OSX] 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 Saip) - 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. (patch by Prodesire) ``` ### 5.3.1 ``` ===== *2017-09-10* **Enhancements** - 1124_: documentation moved to http://psutil.readthedocs.io **Bug fixes** - 1105_: [FreeBSD] psutil does not compile on FreeBSD 12. - 1125_: [BSD] net_connections() raises TypeError. **Compatibility notes** - 1120_: .exe files for Windows are no longer uploaded on PYPI as per PEP-527; only wheels are provided. ``` ### 5.3.0 ``` ===== *2017-09-01* **Enhancements** - 802_: disk_io_counters() and net_io_counters() numbers no longer wrap (restart from 0). Introduced a new "nowrap" argument. - 928_: psutil.net_connections() and psutil.Process.connections() "laddr" and "raddr" are now named tuples. - 1015_: swap_memory() now relies on /proc/meminfo instead of sysinfo() syscall so that it can be used in conjunction with PROCFS_PATH in order to retrieve memory info about Linux containers such as Docker and Heroku. - 1022_: psutil.users() provides a new "pid" field. - 1025_: process_iter() accepts two new parameters in order to invoke Process.as_dict(): "attrs" and "ad_value". With this you can iterate over all processes in one shot without needing to catch NoSuchProcess and do list/dict comprehensions. - 1040_: implemented full unicode support. - 1051_: disk_usage() on Python 3 is now able to accept bytes. - 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()'s fd number is now being set for real (instead of -1). (patch by Gleb Smirnoff) - 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 value of the first call is now cached so that boot_time() always returns the same value if fluctuation is <= 1 second. - 1013_: [FreeBSD] psutil.net_connections() may return incorrect PID. (patch by Gleb Smirnoff) - 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] open_files() may erroneously raise NoSuchProcess instead of skipping a file which gets deleted while open files are retrieved. - 1029_: [OSX, FreeBSD] Process.connections('unix') on Python 3 doesn't properly handle unicode paths and may raise UnicodeDecodeError. - 1033_: [OSX, 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_: [OSX] 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()'s host field report an invalid IP address. - 1050_: [Windows] Process.memory_maps memory() 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 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. (patch by Oleksii Shevchuk) - 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. (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] memory_maps() shows wrong 64 bit addresses. - 1094_: [Windows] psutil.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 is still alive. - 1099_: [Windows] Process.terminate() may raise AccessDenied even if the process already died. - 1101_: [Linux] sensors_temperatures() may raise ENODEV. **Porting notes** - 1039_: returned types consolidation: - Windows / Process.cpu_times(): fields 3 and 4 were int instead of float - Linux / FreeBSD: connections('unix'): raddr is now set to "" instead of None - OpenBSD: connections('unix'): laddr and raddr are now set to "" instead of None - 1040_: all strings are encoded by using OS fs encoding. - 1040_: the following Windows APIs on Python 2 now return a string instead of unicode: - Process.memory_maps().path - WindowsService.bin_path() - WindowsService.description() - WindowsService.display_name() - WindowsService.username() ``` ### 5.2.2 ``` ===== *2017-04-10* **Bug fixes** - 1000_: fixed some setup.py warnings. - 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 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. ``` ### 5.2.1 ``` ===== *2017-03-24* **Bug fixes** - 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 FreeBSD 12. ``` ### 5.2.0 ``` ===== *2017-03-05* **Enhancements** - 971_: [Linux] Add psutil.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 *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 for `NtQueryObject` times out. - 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. - 973_: cpu_percent() may raise ZeroDivisionError. ``` ### 5.1.2 ``` ===== *2017-02-03* **Bug fixes** - 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()'s name and label fields on Python 3 are bytes instead of str. ``` ### 5.1.1 ``` ===== *2017-02-03* **Enhancements** - 966_: [Linux] sensors_battery().percent is a float and is more precise. **Bug fixes** - 964_: [Windows] Process.username() and psutil.users() may return badly decoding character on Python 3. - 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. ``` ### 5.1.0 ``` ===== *2017-02-01* **Enhancements** - 357_: added psutil.Process.cpu_num() (what CPU a process is on). - 371_: added psutil.sensors_temperatures() (Linux only). - 941_: added psutil.cpu_freq() (CPU frequency). - 955_: added psutil.sensors_battery() (Linux, Windows, only). - 956_: cpu_affinity([]) can now be used as an alias to set affinity against all eligible CPUs. **Bug fixes** - 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 higher number than real usage. - 951_: [Windows] the uploaded wheels for Python 3.6 64 bit didn't work. - 959_: psutil exception objects could not be pickled. - 960_: Popen.wait() did not return the correct negative exit status if process is ``kill()``ed by a signal. - 961_: [Windows] WindowsService.description() may fail with ERROR_MUI_FILE_NOT_FOUND. ``` ### 5.0.1 ``` ===== *2016-12-21* **Enhancements** - 939_: tar.gz distribution went from 1.8M to 258K. - 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 incorrectly as "iowait", "guest" and "guest_nice" times were not properly taken into account. - 944_: [OpenBSD] psutil.pids() was omitting PID 0. ``` ### 5.0.0 ``` ===== *2016-11-06* **Enhncements** - 799_: new Process.oneshot() context manager making Process methods around +2x faster in general and from +2x to +6x faster on Windows. - 943_: better error message in case of version conflict on import. **Bug fixes** - 932_: [NetBSD] net_connections() and Process.connections() may fail without raising an exception. - 933_: [Windows] memory leak in cpu_stats() and WindowsService.description(). ``` ### 4.4.2 ``` ===== *2016-10-26* **Bug fixes** - 931_: psutil no longer compiles on Solaris. ``` ### 4.4.1 ``` ===== *2016-10-25* **Bug fixes** - 927_: ``Popen.__del__`` may cause maximum recursion depth error. ``` ### 4.4.0 ``` ===== *2016-10-23* **Enhancements** - 874_: [Windows] net_if_addrs() returns also the netmask. - 887_: [Linux] virtual_memory()'s '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_: [OSX] possibly fix Process.memory_maps() segfault (critical!). - 783_: [OSX] Process.status() may erroneously return "running" for zombie processes. - 798_: [Windows] Process.open_files() returns and empty list on Windows 10. - 825_: [Linux] cpu_affinity; fix possible double close and use of unopened socket. - 880_: [Windows] Handle race condition inside psutil_net_connections. - 885_: ValueError is raised if a negative integer is passed to cpu_percent() functions. - 892_: [Linux] Process.cpu_affinity([-1]) raise SystemError with no error set; now ValueError is raised. - 906_: [BSD] disk_partitions(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_: [OSX, 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_: [OSX] Process open_files() and connections() methods may raise OSError with no exception set if process is gone. - 916_: [OSX] fix many compilation warnings. ``` ### 4.3.1 ``` ===== *2016-09-01* **Enhancements** - 881_: "make install" now works also when using a virtual env. **Bug fixes** - 854_: Process.as_dict() raises ValueError if passed an erroneous attrs name. - 857_: [SunOS] Process cpu_times(), cpu_percent(), threads() amd 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 return 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 handle unicode service names / descriptions. - 869_: [Windows] Process.wait() may raise TimeoutExpired with wrong timeout unit (ms instead of sec). - 870_: [Windows] Handle leak inside psutil_get_process_data. ``` ### 4.3.0 ``` ===== *2016-06-18* **Enhancements** - 819_: [Linux] different speedup improvements: Process.ppid() is 20% faster Process.status() is 28% faster Process.name() is 25% faster Process.num_threads is 20% faster on Python 3 **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] psutil.disk_usage() percent field takes root reserved space into account. - 816_: [Windows] fixed net_io_counter() values wrapping after 4.3GB in Windows Vista (NT 6.0) and above using 64bit values from newer win APIs. ``` ### 4.2.0 ``` ===== *2016-05-14* **Enhancements** - 795_: [Windows] new APIs to deal with Windows services: win_service_iter() and win_service_get(). - 800_: [Linux] psutil.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 - Process.num_threads is 20% faster on Python 3 **Bug fixes** - 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. ``` ### 4.1.0 ``` ===== *2016-03-12* **Enhancements** - 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 OSX and Windows). - 789_: [Windows] psutil.cpu_times() return two new fields: "interrupt" and "dpc". Same for psutil.cpu_times_percent(). - 792_: new psutil.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 provides it. - 776_: [Linux] Process.cpu_affinity() may erroneously raise NoSuchProcess. (patch by wxwright) - 780_: [OSX] psutil does not compile with some gcc versions. - 786_: net_if_addrs() may report incomplete MAC addresses. - 788_: [NetBSD] virtual_memory()'s buffers and shared values were set to 0. - 790_: [OSX] psutil won't compile on OSX 10.4. ``` ### 4.0.0 ``` ===== *2016-02-17* **Enhancements** - 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, OSX, 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 and write_merged_count. - 762_: new scripts/procsmem.py script. **Bug fixes** - 685_: [Linux] virtual_memory() provides wrong results on systems with a lot of physical memory. - 704_: [Solaris] psutil does not compile on Solaris sparc. - 734_: on Python 3 invalid UTF-8 data is not correctly handled for process name(), cwd(), exe(), cmdline() and 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 different cmdline() and 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] cmdline() can be wrong in case of zombie process. - 759_: [Linux] Process.memory_maps() may return paths ending with " (deleted)" - 761_: [Windows] psutil.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 broken on 2.4 kernels. - 770_: [NetBSD] disk_io_counters() metrics didn't update. ``` ### 3.4.2 ``` ===== *2016-01-20* **Enhancements** - 728_: [Solaris] exposed psutil.PROCFS_PATH constant to change the default location of /proc filesystem. **Bug fixes** - 724_: [FreeBSD] psutil.virtual_memory().total is incorrect. - 730_: [FreeBSD] psutil.virtual_memory() crashes. ``` ### 3.4.1 ``` ===== *2016-01-15* **Enhancements** - 557_: [NetBSD] added NetBSD support. (contributed by Ryo Onodera and Thomas Klausner) - 708_: [Linux] psutil.net_connections() and Process.connections() on Python 2 can be up to 3x faster in case of many connections. Also psutil.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. - 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 be determined due to missing /proc/vmstat. - 724_: [FreeBSD] virtual_memory().total is slightly incorrect. ``` ### 3.3.0 ``` ===== *2015-11-25* **Enhancements** - 558_: [Linux] exposed psutil.PROCFS_PATH constant to change the default location of /proc filesystem. - 615_: [OpenBSD] added OpenBSD support. (contributed by Landry Breuil) **Bug fixes** - 692_: [UNIX] Process.name() is no longer cached as it may change. ``` ### 3.2.2 ``` ===== *2015-10-04* **Bug fixes** - 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 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 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 Mike Sarahan) ``` ### 3.2.1 ``` ===== *2015-09-03* **Bug fixes** - 677_: [Linux] can't install psutil due to bug in setup.py. ``` ### 3.2.0 ``` ===== *2015-09-02* **Enhancements** - 644_: [Windows] added support for CTRL_C_EVENT and CTRL_BREAK_EVENT signals to use with Process.send_signal(). - 648_: CI test integration for OSX. (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 Python 2 all APIs returning a string will now return an encoded version of it by using sys.getfilesystemencoding() codec. The APIs involved are: - psutil.net_if_addrs() - psutil.net_if_stats() - psutil.net_io_counters() - psutil.Process.cmdline() - psutil.Process.name() - psutil.Process.username() - psutil.users() **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 names. - 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. (patch by sk6249) - 672_: [Windows] compilation fails if using Windows SDK v8.0. (patch by Steven Winfield) - 675_: [Linux] net_connections(); UnicodeDecodeError may occur when listing UNIX sockets. ``` ### 3.1.1 ``` ===== *2015-07-15* **Bug fixes** - 603_: [Linux] ionice_set value range is incorrect. (patch by spacewander) - 645_: [Linux] psutil.cpu_times_percent() may produce negative results. - 656_: 'from psutil import *' does not work. ``` ### 3.1.0 ``` ===== *2015-07-15* **Enhancements** - 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: https://github.com/giampaolo/psutil/blob/master/DEVGUIDE.rst - 651_: continuous code quality test integration with scrutinizer-ci.com **Bug fixes** - 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 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 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 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. ``` ### 3.0.1 ``` ===== *2015-06-18* **Bug fixes** - 632_: [Linux] better error message if cannot parse process UNIX connections. - 634_: [Linux] Proces.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 ``` ===== *2015-06-13* **Enhancements** - 250_: new psutil.net_if_stats() returning NIC statistics (isup, duplex, speed, MTU). - 376_: new psutil.net_if_addrs() returning all NIC addresses a-la ifconfig. - 469_: on Python >= 3.4 ``IOPRIO_CLASS_*`` and ``*_PRIORITY_CLASS`` constants returned by psutil.Process' ionice() and nice() methods are enums instead of plain integers. - 581_: add .gitignore. (patch by Gabi Davar) - 582_: connection constants returned by psutil.net_connections() and psutil.Process.connections() were turned from int to enums on Python > 3.4. - 587_: Move native extension into the package. - 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 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. **Bug fixes** - 428_: [all UNIXes except Linux] correct handling of zombie processes; introduced new ZombieProcess exception class. - 512_: [BSD] fix segfault in net_connections(). - 555_: [Linux] psutil.users() correctly handles ":0" as an alias for "localhost" - 579_: [Windows] Fixed open_files() for PID>64K. - 579_: [Windows] fixed many compiler warnings. - 585_: [FreeBSD] net_connections() may raise KeyError. - 586_: [FreeBSD] cpu_affinity() segfaults on set in case an invalid CPU number is provided. - 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(logical=False) return the number of physical CPUs instead of physical cores. - 618_: [SunOS] swap tests fail on Solaris when run as normal user - 628_: [Linux] Process.name() truncates process name in case it contains spaces or parentheses. ``` ### 2.2.1 ``` ===== *2015-02-02* **Bug fixes** - 496_: [Linux] fix "ValueError: ambiguos inode with multiple PIDs references" (patch by Bruno Binet) ``` ### 2.2.0 ``` ===== *2015-01-06* **Enhancements** - 521_: drop support for Python 2.4 and 2.5. - 553_: new examples/pstree.py script. - 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 examples/pidof.py script. - 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. (patch by spacewander) - 565_: [Windows] use proper encoding for psutil.Process.username() and psutil.users(). (patch by Sylvain Mouquet) - 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 psutil.cpu_count(logical=False). - 571_: [Linux] Process.open_files() might swallow AccessDenied exceptions and return an incomplete list of open files. ``` ### 2.1.3 ``` ===== *2014-09-26* - 536_: [Linux]: fix "undefined symbol: CPU_ALLOC" compilation error. ``` ### 2.1.2 ``` ===== *2014-09-21* **Enhancements** - 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. - 511_: new examples/ps.py sample code. **Bug fixes** - 340_: [Windows] Process.get_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(), open_files() and connections() methods 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 Daeschler) - 529_: [Windows] Process.exe() may raise unhandled WindowsError exception for PIDs 0 and 4. (patch by Jeff Tang) - 530_: [Linux] psutil.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. ``` ### 2.1.1 ``` ===== *2014-04-30* **Bug fixes** - 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] psutil.net_connections() exceptions. (patch by Alexander Grothe) ``` ### 2.1.0 ``` ===== *2014-04-08* **Enhancements** - 387_: system-wide open connections a-la netstat. **Bug fixes** - 421_: [Solaris] psutil does not compile on SunOS 5.10 (patch by Naveed Roudsari) - 489_: [Linux] psutil.disk_partitions() return an empty list. ``` ### 2.0.0 ``` ===== *2014-03-10* **Enhancements** - 424_: [Windows] installer for Python 3.X 64 bit. - 427_: number of logical and physical CPUs (psutil.cpu_count()). - 447_: psutil.wait_procs() timeout parameter is now optional. - 452_: make Process instances hashable and usable with set()s. - 453_: tests on Python < 2.7 require unittest2 module. - 459_: add a make file for running tests and other repetitive tasks (also on Windows). - 463_: make timeout parameter of cpu_percent* functions default to 0.0 'cause 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. - 479_: long deprecated psutil.error module is gone; exception classes now live in "psutil" namespace only. **Bug fixes** - 193_: psutil.Popen constructor can throw an exception if the spawned process terminates quickly. - 340_: [Windows] process get_open_files() no longer hangs. (patch by jtangvahna.net) - 443_: [Linux] fix a potential overflow issue for Process.set_cpu_affinity() on systems with more than 64 CPUs. - 448_: [Windows] get_children() and ppid() memory leak (patch by Ulrich Klank). - 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 Gautam Singh) - 470_: wait_procs() might not wait. (patch by crusaderky) - 471_: [Windows] process exe improper unicode handling. (patch by alexmroja.net) - 473_: psutil.Popen.wait() does not set returncode attribute. - 474_: [Windows] Process.cpu_percent() is no longer capped at 100%. - 476_: [Linux] encoding error for process name and cmdline. **API changes** For the sake of consistency a lot of psutil APIs have been renamed. In most cases accessing the old names will work but it will cause a DeprecationWarning. - psutil.* module level constants have being replaced by functions: +-----------------------+-------------------------------+ | Old name | Replacement | +=======================+===============================+ | psutil.NUM_CPUS | psutil.cpu_cpunt() | +-----------------------+-------------------------------+ | psutil.BOOT_TIME | psutil.boot_time() | +-----------------------+-------------------------------+ | psutil.TOTAL_PHYMEM | psutil.virtual_memory().total | +-----------------------+-------------------------------+ - Renamed psutil.* functions: +--------------------------+-------------------------------+ | Old name | Replacement | +==========================+===============================+ | - psutil.get_pid_list() | psutil.pids() | +--------------------------+-------------------------------+ | - psutil.get_users() | psutil.users() | +--------------------------+-------------------------------+ | - psutil.get_boot_time() | psutil.boot_time() | +--------------------------+-------------------------------+ - All psutil.Process ``get_*`` methods lost the ``get_`` prefix. get_ext_memory_info() renamed to memory_info_ex(). Assuming "p = psutil.Process()": +--------------------------+----------------------+ | Old name | Replacement | +==========================+======================+ | p.get_children() | p.children() | +--------------------------+----------------------+ | p.get_connections() | p.connections() | +--------------------------+----------------------+ | p.get_cpu_affinity() | p.cpu_affinity() | +--------------------------+----------------------+ | p.get_cpu_percent() | p.cpu_percent() | +--------------------------+----------------------+ | p.get_cpu_times() | p.cpu_times() | +--------------------------+----------------------+ | p.get_ext_memory_info() | p.memory_info_ex() | +--------------------------+----------------------+ | p.get_io_counters() | p.io_counters() | +--------------------------+----------------------+ | p.get_ionice() | p.ionice() | +--------------------------+----------------------+ | p.get_memory_info() | p.memory_info() | +--------------------------+----------------------+ | p.get_memory_maps() | p.memory_maps() | +--------------------------+----------------------+ | p.get_memory_percent() | p.memory_percent() | +--------------------------+----------------------+ | p.get_nice() | p.nice() | +--------------------------+----------------------+ | p.get_num_ctx_switches() | p.num_ctx_switches() | +--------------------------+----------------------+ | p.get_num_fds() | p.num_fds() | +--------------------------+----------------------+ | p.get_num_threads() | p.num_threads() | +--------------------------+----------------------+ | p.get_open_files() | p.open_files() | +--------------------------+----------------------+ | p.get_rlimit() | p.rlimit() | +--------------------------+----------------------+ | p.get_threads() | p.threads() | +--------------------------+----------------------+ | p.getcwd() | p.cwd() | +--------------------------+----------------------+ - All psutil.Process ``set_*`` methods lost the ``set_`` prefix. Assuming "p = psutil.Process()": +----------------------+---------------------------------+ | Old name | Replacement | +======================+=================================+ | p.set_nice() | p.nice(value) | +----------------------+---------------------------------+ | p.set_ionice() | p.ionice(ioclass, value=None) | +----------------------+---------------------------------+ | p.set_cpu_affinity() | p.cpu_affinity(cpus) | +----------------------+---------------------------------+ | p.set_rlimit() | p.rlimit(resource, limits=None) | +----------------------+---------------------------------+ - Except for 'pid' all psutil.Process class properties have been turned into methods. This is the only case which there are no aliases. Assuming "p = psutil.Process()": +---------------+-----------------+ | Old name | Replacement | +===============+=================+ | p.name | p.name() | +---------------+-----------------+ | p.parent | p.parent() | +---------------+-----------------+ | p.ppid | p.ppid() | +---------------+-----------------+ | p.exe | p.exe() | +---------------+-----------------+ | p.cmdline | p.cmdline() | +---------------+-----------------+ | p.status | p.status() | +---------------+-----------------+ | p.uids | p.uids() | +---------------+-----------------+ | p.gids | p.gids() | +---------------+-----------------+ | p.username | p.username() | +---------------+-----------------+ | p.create_time | p.create_time() | +---------------+-----------------+ - timeout parameter of cpu_percent* functions defaults to 0.0 instead of 0.1. - long deprecated psutil.error module is gone; exception classes now live in "psutil" namespace only. - Process instances' "retcode" attribute returned by psutil.wait_procs() has been renamed to "returncode" for consistency with subprocess.Popen. ``` ### 1.2.1 ``` ===== *2013-11-25* **Bug fixes** - 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. ``` ### 1.2.0 ``` ===== *2013-11-20* **Enhancements** - 439_: assume os.getpid() if no argument is passed to psutil.Process constructor. - 440_: new psutil.wait_procs() utility function which waits for multiple processes to terminate. **Bug fixes** - 348_: [Windows XP/Vista] fix "ImportError: DLL load failed" occurring on module import. ``` ### 1.1.3 ``` ===== *2013-11-07* **Bug fixes** - 442_: [Linux] psutil won't compile on certain version of Linux because of missing prlimit(2) syscall. ``` ### 1.1.2 ``` ===== *2013-10-22* **Bug fixes** - 442_: [Linux] psutil won't compile on Debian 6.0 because of missing prlimit(2) syscall. ``` ### 1.1.1 ``` ===== *2013-10-08* **Bug fixes** - 442_: [Linux] psutil won't compile on kernels < 2.6.36 due to missing prlimit(2) syscall. ``` ### 1.1.0 ``` ===== *2013-09-28* **Enhancements** - 410_: host tar.gz and windows binary files are on PYPI. - 412_: [Linux] get/set process resource limits. - 415_: [Windows] Process.get_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] psutil.cpu_times_percent() returns negative percentages. - 408_: STATUS_* and CONN_* constants don't properly serialize on JSON. - 411_: [Windows] examples/disk_usage.py may pop-up a GUI error. - 413_: [Windows] Process.get_memory_info() leaks memory. - 414_: [Windows] Process.exe on Windows XP may raise ERROR_INVALID_PARAMETER. - 416_: psutil.disk_usage() doesn't work well with unicode path names. - 430_: [Linux] process IO counters report wrong number of r/w syscalls. - 435_: [Linux] psutil.net_io_counters() might report erreneous NIC names. - 436_: [Linux] psutil.net_io_counters() reports a wrong 'dropin' value. **API changes** - 408_: turn STATUS_* and CONN_* constants into plain Python strings. ``` ### 1.0.1 ``` ===== *2013-07-12* **Bug fixes** - 405_: network_io_counters(pernic=True) no longer works as intended in 1.0.0. ``` ### 1.0.0 ``` ===== *2013-07-10* **Enhancements** - 18_: Solaris support (yay!) (thanks Justin Venus) - 367_: Process.get_connections() 'status' strings are now constants. - 380_: test suite exits with non-zero on failure. (patch by floppymaster) - 391_: introduce unittest2 facilities and provide workarounds if unittest2 is not installed (python < 2.7). **Bug fixes** - 374_: [Windows] negative memory usage reported if process uses a lot of memory. - 379_: [Linux] Process.get_memory_maps() may raise ValueError. - 394_: [OSX] Mapped memory regions report incorrect file name. - 404_: [Linux] sched_*affinity() are implicitly declared. (patch by Arfrever) **API changes** - Process.get_connections() 'status' field is no longer a string but a constant object (psutil.CONN_*). - Process.get_connections() 'local_address' and 'remote_address' fields renamed to 'laddr' and 'raddr'. - psutil.network_io_counters() renamed to psutil.net_io_counters(). ``` ### 0.7.1 ``` ===== *2013-05-03* **Bug fixes** - 325_: [BSD] psutil.virtual_memory() can raise SystemError. (patch by Jan Beich) - 370_: [BSD] Process.get_connections() requires root. (patch by John Baldwin) - 372_: [BSD] different process methods raise NoSuchProcess instead of AccessDenied. ``` ### 0.7.0 ``` ===== *2013-04-12* **Enhancements** - 233_: code migrated to Mercurial (yay!) - 246_: psutil.error module is deprecated and scheduled for removal. - 328_: [Windows] process IO nice/priority support. - 359_: psutil.get_boot_time() - 361_: [Linux] psutil.cpu_times() now includes new 'steal', 'guest' and 'guest_nice' fields available on recent Linux kernels. Also, psutil.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 psutil.disk_partitions() may cause a message box to appear. - 313_: [Linux] psutil.virtual_memory() and psutil.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_: [OSX] fix some compilation warnings. - 317_: [Windows] cannot set process CPU affinity above 31 cores. - 319_: [Linux] process get_memory_maps() raises KeyError 'Anonymous' on Debian squeeze. - 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_: [OSX] disk_io_counters()'s 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_: [OSX] Leak of Mach ports on OS X (patch by rsesekgoogle.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 terminals map. - 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 py2.4 and py2.5 are) disk_io_counters() will fail. (Patch by m.malycha) - 353_: [OSX] get_users() returns an empty list on OSX 10.8. - 356_: Process.parent now checks whether parent PID has been reused in which case returns None. - 365_: Process.set_nice() should check PID has not been reused by another process. - 366_: [FreeBSD] get_memory_maps(), get_num_fds(), get_open_files() and getcwd() Process methods raise RuntimeError instead of AccessDenied. **API changes** - Process.cmdline property is no longer cached after first access. - Process.ppid property is no longer cached after first access. - [Linux] Process methods not working because of a poor /proc implementation will raise NotImplementedError instead of RuntimeError. - psutil.error module is deprecated and scheduled for removal. ``` ### 0.6.1 ``` ===== *2012-08-16* **Enhancements** - 316_: process cmdline property now makes a better job at guessing the process executable from the cmdline. **Bug fixes** - 316_: process exe was resolved in case it was a symlink. - 318_: python 2.4 compatibility was broken. **API changes** - process exe can now return an empty string instead of raising AccessDenied. - process exe is no longer resolved in case it's a symlink. ``` ### 0.6.0 ``` ===== *2012-08-13* **Enhancements** - 216_: [POSIX] get_connections() UNIX sockets support. - 220_: [FreeBSD] get_connections() has been rewritten in C and no longer requires lsof. - 222_: [OSX] add support for process cwd. - 261_: process extended memory info. - 295_: [OSX] process executable path is now determined by asking the OS instead of being guessed from process cmdline. - 297_: [OSX] 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 - get_memory_info() - get_memory_percent() - get_cpu_times() - get_cpu_percent() - get_num_threads() - 300_: examples/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 for any process not owned by current user. Now this is no longer true: - create_time - get_cpu_times() - get_cpu_percent() - get_memory_info() - get_memory_percent() - get_num_handles() - get_io_counters() - 305_: add examples/netstat.py script. - 311_: system memory functions has been refactorized and rewritten and now provide a more detailed and consistent representation of the system memory. New psutil.virtual_memory() function provides the following memory amounts: - total - available - percent - used - active [POSIX] - inactive [POSIX] - buffers (BSD, Linux) - cached (BSD, OSX) - wired (OSX, BSD) - shared [FreeBSD] New psutil.swap_memory() provides: - total - used - free - percent - sin (no. of bytes the system has swapped in from disk (cumulative)) - sout (no. of bytes the system has swapped out from disk (cumulative)) All old memory-related functions are deprecated. Also two new example scripts were added: free.py and meminfo.py. - 312_: psutil.network_io_counters() namedtuple includes 4 new fields: errin, errout dropin and dropout, reflecting the number of packets dropped and with errors. **Bug fixes** - 298_: [OSX and BSD] memory leak in get_num_fds(). - 299_: potential memory leak every time PyList_New(0) is used. - 303_: [Windows] potential heap corruption in get_num_threads() and get_status() Process methods. - 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 psutil.network_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_: get_open_files() might not return files which can not be accessed due to limited permissions. AccessDenied is now raised instead. **API changes** - psutil.phymem_usage() is deprecated (use psutil.virtual_memory()) - psutil.virtmem_usage() is deprecated (use psutil.swap_memory()) - psutil.phymem_buffers() on Linux is deprecated (use psutil.virtual_memory()) - psutil.cached_phymem() on Linux is deprecated (use psutil.virtual_memory()) - [Windows and BSD] psutil.virtmem_usage() now returns information about swap memory instead of virtual memory. ``` ### 0.5.1 ``` ===== *2012-06-29* **Enhancements** - 293_: [Windows] process executable 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. ``` ### 0.5.0 ``` ===== *2012-06-27* **Enhancements** - 195_: [Windows] number of handles opened by process. - 209_: psutil.disk_partitions() now provides also mount options. - 229_: list users currently connected on the system (psutil.get_users()). - 238_: [Linux, Windows] process CPU affinity (get and set). - 242_: Process.get_children(recursive=True): return all process descendants. - 245_: [POSIX] Process.wait() incrementally consumes less CPU cycles. - 257_: [Windows] removed Windows 2000 support. - 258_: [Linux] Process.get_memory_info() is now 0.5x faster. - 260_: process's mapped memory regions. (Windows patch by wj32.64, OSX patch by Jeremy Whitlock) - 262_: [Windows] psutil.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 with Python 3. - 278_: new Process.as_dict() method. - 281_: ppid, name, exe, cmdline and create_time properties of Process class are now cached after being accessed. - 282_: psutil.STATUS_* constants can now be compared by using their string 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. - 287_: psutil.process_iter() now caches Process instances between calls. - 290_: Process.nice property is deprecated in favor of new get_nice() and set_nice() methods. **Bug fixes** - 193_: psutil.Popen constructor can throw an exception if the spawned process terminates quickly. - 240_: [OSX] incorrect use of free() for Process.get_connections(). - 244_: [POSIX] Process.wait() can hog CPU resources if called against a process which is not our children. - 248_: [Linux] psutil.network_io_counters() might return erroneous NIC names. - 252_: [Windows] process getcwd() erroneously raise NoSuchProcess for processes owned by another user. It now raises AccessDenied instead. - 266_: [Windows] psutil.get_pid_list() only shows 1024 processes. (patch by Amoser) - 267_: [OSX] Process.get_connections() - an erroneous remote address was returned. (Patch by Amoser) - 272_: [Linux] Porcess.get_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.get_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 reused. - 314_: Process.get_children() can sometimes return non-children. **API changes** - Process.nice property is deprecated in favor of new get_nice() and set_nice() methods. - psutil.get_process_list() is deprecated. - ppid, name, exe, cmdline and create_time properties of Process class are now cached after being accessed, meaning NoSuchProcess will no longer be raised in case the process is gone in the meantime. - psutil.STATUS_* constants can now be compared by using their string representation. ``` ### 0.4.1 ``` ===== *2011-12-14* **Bug fixes** - 228_: some example scripts were not working with python 3. - 230_: [Windows / OSX] memory leak in Process.get_connections(). - 232_: [Linux] psutil.phymem_usage() can report erroneous values which are different than "free" command. - 236_: [Windows] memory/handle leak in Process's get_memory_info(), suspend() and resume() methods. ``` ### 0.4.0 ``` ===== *2011-10-29* **Enhancements** - 150_: network I/O counters. (OSX and Windows patch by Jeremy Whitlock) - 154_: [FreeBSD] add support for process getcwd() - 157_: [Windows] provide installer for Python 3.2 64-bit. - 198_: Process.wait(timeout=0) can now be used to make wait() return immediately. - 206_: disk I/O counters. (OSX and Windows patch by Jeremy Whitlock) - 213_: examples/iotop.py script. - 217_: Process.get_connections() now has a "kind" argument to filter for connections with different criteria. - 221_: [FreeBSD] Process.get_open_files has been rewritten in C and no longer relies on lsof. - 223_: examples/top.py script. - 227_: examples/nettop.py script. **Bug fixes** - 135_: [OSX] psutil cannot create Process object. - 144_: [Linux] no longer support 0 special PID. - 188_: [Linux] psutil import error on Linux ARM architectures. - 194_: [POSIX] psutil.Process.get_cpu_percent() now reports a percentage over 100 on multicore processors. - 197_: [Linux] Process.get_connections() is broken on platforms not supporting IPv6. - 200_: [Linux] psutil.NUM_CPUS not working on armel and sparc architectures and causing crash on module import. - 201_: [Linux] Process.get_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 line in /proc/meminfo. - 226_: [FreeBSD] crash at import time on FreeBSD 7 and minor. ``` ### 0.3.0 ``` ===== *2011-07-08* **Enhancements** - 125_: system per-cpu percentage utilization and times. - 163_: per-process associated terminal (TTY). - 171_: added get_phymem() and get_virtmem() functions returning system memory information (total, used, free) and memory percent usage. total_* avail_* and used_* memory functions are deprecated. - 172_: disk usage statistics. - 174_: mounted disk partitions. - 179_: setuptools is now used in setup.py **Bug fixes** - 159_: SetSeDebug() does not close handles or unset impersonation on return. - 164_: [Windows] wait function raises a TimeoutException when a process returns -1 . - 165_: process.status raises an unhandled exception. - 166_: get_memory_info() leaks handles hogging system resources. - 168_: psutil.cpu_percent() returns erroneous results when used in non-blocking mode. (patch by Philip Roberts) - 178_: OSX - Process.get_threads() leaks memory - 180_: [Windows] Process's get_num_threads() and get_threads() methods can raise NoSuchProcess exception while process still exists. ``` ### 0.2.1 ``` ===== *2011-03-20* **Enhancements** - 64_: per-process I/O counters. - 116_: per-process wait() (wait for process to terminate and return its exit code). - 134_: per-process get_threads() returning information (id, user and kernel times) about threads opened by process. - 136_: process executable path on FreeBSD is now determined by asking the kernel instead of guessing it from cmdline[0]. - 137_: per-process real, effective and saved user and group ids. - 140_: system boot time. - 142_: per-process get and set niceness (priority). - 143_: per-process status. - 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_: [OSX] get_process_open_files() implementation has been rewritten in C and no longer relies on lsof resulting in a 3x speedup. - 153_: [OSX] get_process_connection() implementation has been rewritten in C and no longer relies on lsof resulting in a 3x speedup. **Bug fixes** - 83_: process cmdline is empty on OSX 64-bit. - 130_: a race condition can cause IOError exception be raised on Linux if process disappears between open() and subsequent read() calls. - 145_: WindowsError was raised instead of psutil.AccessDenied when using process resume() or suspend() on Windows. - 146_: 'exe' property on Linux can raise TypeError if path contains NULL bytes. - 151_: exe and getcwd() for PID 0 on Linux return inconsistent data. **API changes** - Process "uid" and "gid" properties are deprecated in favor of "uids" and "gids" properties. ``` ### 0.2.0 ``` ===== *2010-11-13* **Enhancements** - 79_: per-process open files. - 88_: total system physical cached memory. - 88_: total system physical memory buffers used by the kernel. - 91_: per-process send_signal() and terminate() methods. - 95_: NoSuchProcess and AccessDenied exception classes now provide "pid", "name" and "msg" attributes. - 97_: per-process children. - 98_: Process.get_cpu_times() and Process.get_memory_info now return a namedtuple instead of a tuple. - 103_: per-process opened TCP and UDP connections. - 107_: add support for Windows 64 bit. (patch by cjgohlke) - 111_: per-process executable name. - 113_: exception messages now include process name and pid. - 114_: process username Windows implementation has been rewritten in pure C and no longer uses WMI resulting in a big speedup. Also, pywin32 is no longer required as a third-party dependancy. (patch by wj32) - 117_: added support for Windows 2000. - 123_: psutil.cpu_percent() and psutil.Process.cpu_percent() accept a new 'interval' parameter. - 129_: per-process number of threads. **Bug fixes** - 80_: fixed warnings when installing psutil with easy_install. - 81_: psutil fails to compile with Visual Studio. - 94_: suspend() raises OSError instead of AccessDenied. - 86_: psutil didn't compile against FreeBSD 6.x. - 102_: orphaned process handles obtained by using OpenProcess in C were left behind every time Process class was instantiated. - 111_: path and name Process properties report truncated or erroneous values on UNIX. - 120_: cpu_percent() always returning 100% on OS X. - 112_: uid and gid properties don't change if process changes effective user/group id at some point. - 126_: ppid, uid, gid, name, exe, cmdline and create_time properties are no longer cached and correctly raise NoSuchProcess exception if the process disappears. **API changes** - psutil.Process.path property is deprecated and works as an alias for "exe" property. - psutil.Process.kill(): signal argument was removed - to send a signal to the process use send_signal(signal) method instead. - psutil.Process.get_memory_info() returns a nametuple instead of a tuple. - psutil.cpu_times() returns a nametuple instead of a tuple. - New psutil.Process methods: get_open_files(), get_connections(), send_signal() and terminate(). - ppid, uid, gid, name, exe, cmdline and create_time properties are no longer cached and raise NoSuchProcess exception if process disappears. - psutil.cpu_percent() no longer returns immediately (see issue 123). - psutil.Process.get_cpu_percent() and psutil.cpu_percent() no longer returns immediately by default (see issue 123). ``` ### 0.1.3 ``` ===== *2010-03-02* **Enhancements** - 14_: per-process username - 51_: per-process current working directory (Windows and Linux only) - 59_: Process.is_running() is now 10 times faster - 61_: added supoprt for FreeBSD 64 bit - 71_: implemented suspend/resume process - 75_: python 3 support **Bug fixes** - 36_: process cpu_times() and memory_info() functions succeeded also for dead processes while a NoSuchProcess exception is supposed to be raised. - 48_: incorrect size for mib array defined in getcmdargs for BSD - 49_: possible memory leak due to missing free() on error condition on - 50_: fixed getcmdargs() memory fragmentation on BSD - 55_: test_pid_4 was failing on Windows Vista - 57_: some unit tests were failing on systems where no swap memory is available - 58_: is_running() is now called before kill() to make sure we are going to kill the correct process. - 73_: virtual memory size reported on OS X includes shared library size - 77_: NoSuchProcess wasn't raised on Process.create_time if kill() was used first. ``` ### 0.1.2 ``` ===== *2009-05-06* **Enhancements** - 32_: Per-process CPU user/kernel times - 33_: Process create time - 34_: Per-process CPU utilization percentage - 38_: Per-process memory usage (bytes) - 41_: Per-process memory utilization (percent) - 39_: System uptime - 43_: Total system virtual memory - 46_: Total system physical memory - 44_: Total system used/free virtual and physical memory **Bug fixes** - 36_: [Windows] NoSuchProcess not raised when accessing timing methods. - 40_: test_get_cpu_times() failing on FreeBSD and OS X. - 42_: [Windows] get_memory_percent() raises AccessDenied. ``` ### 0.1.1 ``` ===== *2009-03-06* **Enhancements** - 4_: FreeBSD support for all functions of psutil - 9_: Process.uid and Process.gid now retrieve process UID and GID. - 11_: Support for parent/ppid - Process.parent property returns a Process object representing the parent process, and Process.ppid returns the parent PID. - 12_ & 15: NoSuchProcess exception now raised when creating an object for a nonexistent process, or when retrieving information about a process that has gone away. - 21_: AccessDenied exception created for raising access denied errors from OSError or WindowsError on individual platforms. - 26_: psutil.process_iter() function to iterate over processes as Process objects with a generator. - Process objects can now also be compared with == operator for equality (PID, name, command line are compared). **Bug fixes** - 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(0).kill() was failing with an unset exception. - 23_: Special case for pid_exists(0) - 24_: [Windows] Process(0).kill() now raises AccessDenied exception instead of WindowsError. - 30_: psutil.get_pid_list() was returning two ins .. _1: https://github.com/giampaolo/psutil/issues/1 .. _2: https://github.com/giampaolo/psutil/issues/2 .. _3: https://github.com/giampaolo/psutil/issues/3 .. _4: https://github.com/giampaolo/psutil/issues/4 .. _5: https://github.com/giampaolo/psutil/issues/5 .. _6: https://github.com/giampaolo/psutil/issues/6 .. _7: https://github.com/giampaolo/psutil/issues/7 .. _8: https://github.com/giampaolo/psutil/issues/8 .. _9: https://github.com/giampaolo/psutil/issues/9 .. _10: https://github.com/giampaolo/psutil/issues/10 .. _11: https://github.com/giampaolo/psutil/issues/11 .. _12: https://github.com/giampaolo/psutil/issues/12 .. _13: https://github.com/giampaolo/psutil/issues/13 .. _14: https://github.com/giampaolo/psutil/issues/14 .. _15: http