diff options
author | Giampaolo Rodola <g.rodola@gmail.com> | 2018-03-20 19:37:37 +0100 |
---|---|---|
committer | Giampaolo Rodola <g.rodola@gmail.com> | 2018-03-20 19:37:37 +0100 |
commit | 95b8e4ba7c2f90d6239266890212feb4031c6bed (patch) | |
tree | 23b17f6fe207249eed60190869e3491341718a2b | |
parent | 43b560b5c8bd1ba5f7e22a49d88ad1d7cd3c0130 (diff) | |
download | psutil-95b8e4ba7c2f90d6239266890212feb4031c6bed.tar.gz |
fix #1238: sensors_battery() may return None in case battery is not listed as BAT0 under /sys/class/power_supply.
-rw-r--r-- | HISTORY.rst | 2 | ||||
-rw-r--r-- | psutil/_pslinux.py | 8 | ||||
-rw-r--r-- | psutil/tests/__init__.py | 2 |
3 files changed, 9 insertions, 3 deletions
diff --git a/HISTORY.rst b/HISTORY.rst index 06cb3eee..5279f203 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -29,6 +29,8 @@ XXXX-XX-XX - 1216_: fix compatibility with python 2.6 on Windows (patch by Dan Vinakovsky) - 1222_: [Linux] Process.memory_full_info() was erroneously summing "Swap:" and "SwapPss:". Same for "Pss:" and "SwapPss". Not anymore. +- 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. (patch by stswandering) - 1245_: [Linux] sensors_temperatures() may fail with IOError "no such file". diff --git a/psutil/_pslinux.py b/psutil/_pslinux.py index 0518ba04..9f45410f 100644 --- a/psutil/_pslinux.py +++ b/psutil/_pslinux.py @@ -1225,9 +1225,13 @@ def sensors_battery(): return int(ret) if ret.isdigit() else ret return None - root = os.path.join(POWER_SUPPLY_PATH, "BAT0") - if not os.path.exists(root): + bats = [x for x in os.listdir(POWER_SUPPLY_PATH) if x.startswith('BAT')] + if not bats: return None + # Get the first available battery. Usually this is "BAT0", except + # some rare exceptions: + # https://github.com/giampaolo/psutil/issues/1238 + root = os.path.join(POWER_SUPPLY_PATH, sorted(bats)[0]) # Base metrics. energy_now = multi_cat( diff --git a/psutil/tests/__init__.py b/psutil/tests/__init__.py index 7be6fdc6..537f7817 100644 --- a/psutil/tests/__init__.py +++ b/psutil/tests/__init__.py @@ -162,7 +162,7 @@ HAS_PROC_CPU_NUM = hasattr(psutil.Process, "cpu_num") HAS_RLIMIT = hasattr(psutil.Process, "rlimit") HAS_THREADS = hasattr(psutil.Process, "threads") HAS_SENSORS_BATTERY = hasattr(psutil, "sensors_battery") -HAS_BATTERY = HAS_SENSORS_BATTERY and psutil.sensors_battery() +HAS_BATTERY = HAS_SENSORS_BATTERY and bool(psutil.sensors_battery()) HAS_SENSORS_FANS = hasattr(psutil, "sensors_fans") HAS_SENSORS_TEMPERATURES = hasattr(psutil, "sensors_temperatures") |