Skip to content

Commit

Permalink
cache parse_dmi()
Browse files Browse the repository at this point in the history
  • Loading branch information
yocalebo committed Oct 11, 2024
1 parent 09791b8 commit 23bffeb
Showing 1 changed file with 15 additions and 6 deletions.
21 changes: 15 additions & 6 deletions ixhardware/dmi.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
from dataclasses import dataclass
from datetime import date, datetime
from functools import cache
import logging
import subprocess
from typing import Optional

logger = logging.getLogger(__name__)

Expand All @@ -11,7 +11,7 @@

@dataclass
class DMIInfo:
bios_release_date: Optional[date] = None
bios_release_date: date | None = None
ecc_memory: bool = False
baseboard_manufacturer: str = ""
baseboard_product_name: str = ""
Expand All @@ -28,7 +28,7 @@ class DMIParser:
def parse(self, output: str) -> DMIInfo:
return self._parse_dmi(output.splitlines())

def _parse_dmi(self, lines: [str]) -> DMIInfo:
def _parse_dmi(self, lines: list[str]) -> DMIInfo:
info = DMIInfo()

_type = None
Expand Down Expand Up @@ -89,11 +89,20 @@ def _parse_bios_release_date(self, string):
try:
return datetime.strptime(string, formatter).date()
except Exception as e:
logger.warning(f"Failed to format BIOS release date to datetime object: {e!r}")
logger.warning(
f"Failed to format BIOS release date to datetime object: {e!r}"
)


@cache
def parse_dmi() -> DMIInfo:
return DMIParser().parse(
subprocess.run(DMIParser.command, check=False, stdout=subprocess.PIPE, stderr=subprocess.DEVNULL,
encoding="utf-8", errors="ignore").stdout
subprocess.run(
DMIParser.command,
check=False,
stdout=subprocess.PIPE,
stderr=subprocess.DEVNULL,
encoding="utf-8",
errors="ignore",
).stdout
)

0 comments on commit 23bffeb

Please sign in to comment.