From f718163d9d99d8390aa2759aa4aa26a236bc75dd Mon Sep 17 00:00:00 2001 From: scivision Date: Tue, 11 Jun 2024 18:14:20 -0400 Subject: [PATCH] simplify, type anno, lint --- src/mozloc/airport.py | 10 +++++----- src/mozloc/base.py | 1 - src/mozloc/{cmd.py => exe.py} | 10 ---------- src/mozloc/netman.py | 18 ++++++++++-------- src/mozloc/netsh.py | 17 ++++++++++------- src/mozloc/web.py | 18 ++++++------------ 6 files changed, 31 insertions(+), 43 deletions(-) rename src/mozloc/{cmd.py => exe.py} (81%) diff --git a/src/mozloc/airport.py b/src/mozloc/airport.py index a471311..2577849 100644 --- a/src/mozloc/airport.py +++ b/src/mozloc/airport.py @@ -3,13 +3,13 @@ Airport was removed from macOS 14.4+, so these functions no longer are relevant. """ -from __future__ import annotations -import typing as T import logging import subprocess import re -from .cmd import get_airport, running_as_root +import pandas + +from .exe import get_airport, running_as_root def cli_config_check() -> bool: @@ -41,7 +41,7 @@ def get_signal() -> str: return ret -def parse_signal(raw: str) -> list[dict[str, T.Any]]: +def parse_signal(raw: str) -> pandas.DataFrame: isroot = running_as_root() psudo = r"\s*([0-9a-zA-Z\s\-\.]+)\s+([0-9a-f]{2}(?::[0-9a-f]{2}){5})\s+(-\d{2,3})" @@ -68,4 +68,4 @@ def parse_signal(raw: str) -> list[dict[str, T.Any]]: d["macAddress"] = mat.group(ibssid) dat.append(d) - return dat + return pandas.DataFrame(dat) diff --git a/src/mozloc/base.py b/src/mozloc/base.py index 8c48f04..64809c1 100644 --- a/src/mozloc/base.py +++ b/src/mozloc/base.py @@ -1,4 +1,3 @@ -from __future__ import annotations from time import sleep from pathlib import Path import logging diff --git a/src/mozloc/cmd.py b/src/mozloc/exe.py similarity index 81% rename from src/mozloc/cmd.py rename to src/mozloc/exe.py index 3db9698..9b5072d 100644 --- a/src/mozloc/cmd.py +++ b/src/mozloc/exe.py @@ -1,5 +1,3 @@ -from __future__ import annotations - import os import functools import shutil @@ -28,11 +26,3 @@ def get_airport() -> str: raise EnvironmentError(msg) return exe - - -def get_nmcli() -> str: - return get_exe("nmcli") - - -def get_netsh() -> str: - return get_exe("netsh") diff --git a/src/mozloc/netman.py b/src/mozloc/netman.py index 4106b52..d33baad 100644 --- a/src/mozloc/netman.py +++ b/src/mozloc/netman.py @@ -1,21 +1,21 @@ """ Network Manager CLI (nmcli) functions """ -from __future__ import annotations -import typing as T import subprocess import logging -import pandas import io from time import sleep -from .cmd import get_nmcli +import pandas + +from .exe import get_exe def cli_config_check() -> bool: # %% check that NetworkManager CLI is available and WiFi is active + exe = get_exe("nmcli") try: - ret = subprocess.check_output([get_nmcli(), "-t", "radio", "wifi"], text=True, timeout=2) + ret = subprocess.check_output([exe, "-t", "radio", "wifi"], text=True, timeout=2) except subprocess.CalledProcessError as err: logging.error(err) return False @@ -36,7 +36,9 @@ def cli_config_check() -> bool: def get_signal() -> str: - cmd = [get_nmcli(), "-g", "SSID,BSSID,FREQ,SIGNAL", "device", "wifi"] + exe = get_exe("nmcli") + + cmd = [exe, "-g", "SSID,BSSID,FREQ,SIGNAL", "device", "wifi"] # Debian stretch, Ubuntu 18.04 # cmd = [EXE, "-t", "-f", "SSID,BSSID,FREQ,SIGNAL", "device", "wifi"] # ubuntu 16.04 @@ -49,7 +51,7 @@ def get_signal() -> str: sleep(0.5) # nmcli errored for less than about 0.2 sec. # takes several seconds to update, so do it now. - scan = [get_nmcli(), "device", "wifi", "rescan"] + scan = [exe, "device", "wifi", "rescan"] try: ret = subprocess.check_output(scan, timeout=1.0, text=True) @@ -59,7 +61,7 @@ def get_signal() -> str: return ret -def parse_signal(raw: str) -> list[dict[str, T.Any]]: +def parse_signal(raw: str) -> pandas.DataFrame: dat = pandas.read_csv( io.StringIO(raw), sep=r"(? bool: # %% check that NetSH EXE is available and WiFi is active - cmd = [get_netsh(), "wlan", "show", "networks", "mode=bssid"] + exe = get_exe("netsh") + + cmd = [exe, "wlan", "show", "networks", "mode=bssid"] try: ret = subprocess.check_output(cmd, text=True, timeout=2) @@ -39,8 +41,9 @@ def get_signal() -> str: returns dict of data parsed from EXE """ + exe = get_exe("netsh") - cmd = [get_netsh(), "wlan", "show", "networks", "mode=bssid"] + cmd = [exe, "wlan", "show", "networks", "mode=bssid"] try: ret = subprocess.check_output(cmd, timeout=1.0, text=True) except subprocess.CalledProcessError as err: @@ -49,7 +52,7 @@ def get_signal() -> str: return ret -def parse_signal(raw: str) -> list[dict[str, T.Any]]: +def parse_signal(raw: str) -> pandas.DataFrame: dat: list[dict[str, str]] = [] out = io.StringIO(raw) @@ -83,7 +86,7 @@ def parse_signal(raw: str) -> list[dict[str, T.Any]]: break break - return dat + return pandas.DataFrame(dat) def signal_percent_to_dbm(percent: int) -> int: diff --git a/src/mozloc/web.py b/src/mozloc/web.py index 7dc8dea..7a9054b 100644 --- a/src/mozloc/web.py +++ b/src/mozloc/web.py @@ -1,19 +1,13 @@ -import requests import logging -import pandas -import json -import typing as T from datetime import datetime +import requests +import pandas + + +def get_loc_mozilla(dat: pandas.DataFrame, url: str): -def get_loc_mozilla(dat: T.Sequence[T.Any], url: str): - match dat: - case pandas.DataFrame(): - json_to = dat.to_json(orient="records") - case list(): - json_to = json.dumps(dat) - case _: - raise TypeError("Unknown data format") + json_to = dat.to_json(orient="records") json_to = '{ "wifiAccessPoints":' + json_to + "}" try: