From 23d867efb2df6de5600f64656f1aa8a83e06109e Mon Sep 17 00:00:00 2001 From: Alan Du Date: Sat, 31 Aug 2024 06:03:42 -0400 Subject: [PATCH] Fix types for psutil.cpu_* functions (#12602) --- stubs/psutil/psutil/__init__.pyi | 25 +++++++++++++++++++------ stubs/psutil/psutil/_psaix.pyi | 8 ++++---- stubs/psutil/psutil/_psbsd.pyi | 10 +++++----- stubs/psutil/psutil/_pslinux.pyi | 25 +++++++++++++++++++------ stubs/psutil/psutil/_psosx.pyi | 8 ++++---- stubs/psutil/psutil/_pswindows.pyi | 10 +++++----- 6 files changed, 56 insertions(+), 30 deletions(-) diff --git a/stubs/psutil/psutil/__init__.pyi b/stubs/psutil/psutil/__init__.pyi index b01ee3549..58d48e3aa 100644 --- a/stubs/psutil/psutil/__init__.pyi +++ b/stubs/psutil/psutil/__init__.pyi @@ -121,12 +121,14 @@ if sys.platform == "win32": ) if sys.platform == "linux": - from ._pslinux import pfullmem, pmem, sensors_battery as sensors_battery, svmem + from ._pslinux import pfullmem, pmem, scputimes, sensors_battery as sensors_battery, svmem elif sys.platform == "darwin": - from ._psosx import pfullmem, pmem, sensors_battery as sensors_battery, svmem + from ._psosx import pfullmem, pmem, scputimes, sensors_battery as sensors_battery, svmem elif sys.platform == "win32": - from ._pswindows import pfullmem, pmem, sensors_battery as sensors_battery, svmem + from ._pswindows import pfullmem, pmem, scputimes, sensors_battery as sensors_battery, svmem else: + scputimes = Incomplete + class pmem(Any): ... class pfullmem(Any): ... class svmem(Any): ... @@ -241,16 +243,27 @@ def wait_procs( procs: Iterable[Process], timeout: float | None = None, callback: Callable[[Process], object] | None = None ) -> tuple[list[Process], list[Process]]: ... def cpu_count(logical: bool = True) -> int: ... -def cpu_times(percpu: bool = False): ... +@overload +def cpu_freq(percpu: Literal[False] = ...) -> scpufreq: ... +@overload +def cpu_freq(percpu: Literal[True]) -> list[scpufreq]: ... +@overload +def cpu_times(percpu: Literal[False] = ...) -> scputimes: ... +@overload +def cpu_times(percpu: Literal[True]) -> list[scputimes]: ... @overload def cpu_percent(interval: float | None = None, percpu: Literal[False] = False) -> float: ... @overload def cpu_percent(interval: float | None, percpu: Literal[True]) -> list[float]: ... @overload def cpu_percent(*, percpu: Literal[True]) -> list[float]: ... -def cpu_times_percent(interval: float | None = None, percpu: bool = False): ... +@overload +def cpu_times_percent(interval: float | None = None, percpu: Literal[False] = False) -> scputimes: ... +@overload +def cpu_times_percent(interval: float | None, percpu: Literal[True]) -> list[scputimes]: ... +@overload +def cpu_times_percent(*, percpu: Literal[True]) -> list[scputimes]: ... def cpu_stats() -> scpustats: ... -def cpu_freq(percpu: bool = False) -> scpufreq: ... def getloadavg() -> tuple[float, float, float]: ... def virtual_memory() -> svmem: ... def swap_memory() -> sswap: ... diff --git a/stubs/psutil/psutil/_psaix.pyi b/stubs/psutil/psutil/_psaix.pyi index c74f03021..2bc31a2e2 100644 --- a/stubs/psutil/psutil/_psaix.pyi +++ b/stubs/psutil/psutil/_psaix.pyi @@ -37,10 +37,10 @@ class pmem(NamedTuple): pfullmem = pmem class scputimes(NamedTuple): - user: Incomplete - system: Incomplete - idle: Incomplete - iowait: Incomplete + user: float + system: float + idle: float + iowait: float class svmem(NamedTuple): total: Incomplete diff --git a/stubs/psutil/psutil/_psbsd.pyi b/stubs/psutil/psutil/_psbsd.pyi index 9e85dd9de..4d17285a0 100644 --- a/stubs/psutil/psutil/_psbsd.pyi +++ b/stubs/psutil/psutil/_psbsd.pyi @@ -41,11 +41,11 @@ class svmem(NamedTuple): wired: int class scputimes(NamedTuple): - user: Any - nice: Any - system: Any - idle: Any - irq: Any + user: float + nice: float + system: float + idle: float + irq: float class pmem(NamedTuple): rss: Any diff --git a/stubs/psutil/psutil/_pslinux.pyi b/stubs/psutil/psutil/_pslinux.pyi index 70b78688a..f2c16b617 100644 --- a/stubs/psutil/psutil/_pslinux.pyi +++ b/stubs/psutil/psutil/_pslinux.pyi @@ -120,18 +120,31 @@ class pio(NamedTuple): write_chars: Any class pcputimes(NamedTuple): - user: Any - system: Any - children_user: Any - children_system: Any - iowait: Any + user: float + system: float + children_user: float + children_system: float + iowait: float def readlink(path): ... def file_flags_to_mode(flags): ... def is_storage_device(name): ... def set_scputimes_ntuple(procfs_path) -> None: ... -scputimes: Any +class scputimes(NamedTuple): + # Note: scputimes has different fields depending on exactly how Linux + # is setup, but we'll include the "complete" set of fields + user: float + nice: float + system: float + idle: float + iowait: float + irq: float + softirq: float + steal: float + guest: float + guest_nice: float + prlimit: Any def calculate_avail_vmem(mems): ... diff --git a/stubs/psutil/psutil/_psosx.pyi b/stubs/psutil/psutil/_psosx.pyi index 85bb909e5..075aba89a 100644 --- a/stubs/psutil/psutil/_psosx.pyi +++ b/stubs/psutil/psutil/_psosx.pyi @@ -21,10 +21,10 @@ kinfo_proc_map: Any pidtaskinfo_map: Any class scputimes(NamedTuple): - user: Any - nice: Any - system: Any - idle: Any + user: float + nice: float + system: float + idle: float class svmem(NamedTuple): total: int diff --git a/stubs/psutil/psutil/_pswindows.pyi b/stubs/psutil/psutil/_pswindows.pyi index 606383aef..e4729492e 100644 --- a/stubs/psutil/psutil/_pswindows.pyi +++ b/stubs/psutil/psutil/_pswindows.pyi @@ -59,11 +59,11 @@ class IOPriority(enum.IntEnum): pinfo_map: Any class scputimes(NamedTuple): - user: Any - system: Any - idle: Any - interrupt: Any - dpc: Any + user: float + system: float + idle: float + interrupt: float + dpc: float class svmem(NamedTuple): total: int