summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGiampaolo Rodola <g.rodola@gmail.com>2018-03-20 19:37:37 +0100
committerGiampaolo Rodola <g.rodola@gmail.com>2018-03-20 19:37:37 +0100
commit95b8e4ba7c2f90d6239266890212feb4031c6bed (patch)
tree23b17f6fe207249eed60190869e3491341718a2b
parent43b560b5c8bd1ba5f7e22a49d88ad1d7cd3c0130 (diff)
downloadpsutil-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.rst2
-rw-r--r--psutil/_pslinux.py8
-rw-r--r--psutil/tests/__init__.py2
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")