nOi)4dZddlmZddlZddZddZd dZy) zJUtilities to assess basic hardware health metrics for the diagnostic tool.) annotationsNct tj|jS#t$rYyt$rYywxYw)zDReturn disk usage percent for path or None when path is unavailable.N)psutil disk_usagepercentFileNotFoundErrorPermissionError)paths 5/mnt/ssd/adrian/flotta-diagnostics/hardware_health.py_safe_disk_usage_percentr s;  &...  s! 777cBtj}|sydD]B}|j|}|s|D]'}|jt |jccSD|j D].}|D]'}|jt |jccS0y)z;Return the current CPU temperature in Celsius if available.N)coretempz cpu-thermalz cpu-thermk10tempacpitz)rsensors_temperaturesgetcurrentfloatvalues)tempslabelentriesentrys r _cpu_temperature_celsiusrs  ' ' )E O0))E"   0==, // 00<<>, ,E}}(U]]++ ,, ctjdtjjt dt dt dS)a Gather key hardware health metrics via psutil. Returns: A dictionary containing: - cpu_usage_percent: overall CPU utilization - ram_usage_percent: RAM utilization - disk_usage_percent_ssd: disk usage on /mnt/ssd or None if unavailable - disk_usage_percent_backup: disk usage on /mnt/backup-hdd or None if unavailable - cpu_temperature_celsius: current CPU temp or None if sensors unavailable g?)intervalz/mnt/ssdz/mnt/backup-hdd)cpu_usage_percentram_usage_percentdisk_usage_percent_ssddisk_usage_percent_backupcpu_temperature_celsius)r cpu_percentvirtual_memoryrr rrr check_hardwarer&)sE$//=#224<<"::"F%=>O%P#;#=  r)r strreturn float | None)r(r))r(zdict[str, float | None])__doc__ __future__rrr rr&r%rr r,sP" .r