pyhw 0.8.0__py3-none-any.whl → 0.9.0__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
pyhw/__init__.py CHANGED
@@ -1 +1 @@
1
- __version__ = '0.8.0'
1
+ __version__ = '0.9.0'
pyhw/backend/cpu/linux.py CHANGED
@@ -73,6 +73,9 @@ class CPUDetectLinux:
73
73
  model = compatible.split(",")[-1]
74
74
  if model.startswith("sun"):
75
75
  self.__cpuInfo.model = f"Allwinner {model.split('-')[-1].upper()} ({model})"
76
+ elif "cvitek" in compatible:
77
+ model = compatible.split(",")[-1]
78
+ self.__cpuInfo.model = f"Cvitek {model}"
76
79
  else:
77
80
  pass
78
81
 
pyhw/backend/gpu/linux.py CHANGED
@@ -29,7 +29,7 @@ class GPUDetectLinux:
29
29
 
30
30
  def __handleNonePciDevices(self):
31
31
  # if detector can't find any VGA/Display/3D GPUs, assume the host is a sbc device, this function is a placeholder for a more advanced method.
32
- if getArch() == "aarch64" or getArch() == "arm32":
32
+ if getArch() in ["aarch64", "arm32", "riscv64"]:
33
33
  self.__gpuInfo.number = 1
34
34
  self.__gpuInfo.gpus.append(f"{CPUDetect(os='linux').getCPUInfo().model} [SOC Integrated]")
35
35
  else:
@@ -39,7 +39,7 @@ class HostDetectLinux:
39
39
  self._hostInfo.model = self._hostInfo.name + " " + self._hostInfo.version
40
40
  except FileNotFoundError:
41
41
  pass
42
- elif self._arch in ["aarch64", "arm32"]:
42
+ elif self._arch in ["aarch64", "arm32", "riscv64"]:
43
43
  # try to find dmi folder since some arm based desktops and servers may have same structure as x86_64 machines.
44
44
  if os.path.exists("/sys/devices/virtual/dmi/id"):
45
45
  try:
@@ -15,7 +15,10 @@ class KernelDetectWindows:
15
15
  version = platform.version()
16
16
  machine = platform.machine()
17
17
  display = self.__get_windows_version()
18
- self.__kernelInfo.kernel = f"{version} ({display}) {machine}"
18
+ if display != "":
19
+ self.__kernelInfo.kernel = f"{version} ({display}) {machine}"
20
+ else:
21
+ self.__kernelInfo.kernel = f"{version} {machine}"
19
22
  return self.__kernelInfo
20
23
 
21
24
  @staticmethod
@@ -26,4 +29,10 @@ class KernelDetectWindows:
26
29
  winreg.CloseKey(key)
27
30
  return str(display_version)
28
31
  except:
29
- raise BackendException("Unable to determine Windows kernel version.")
32
+ try:
33
+ key = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, r"SOFTWARE\Microsoft\Windows NT\CurrentVersion")
34
+ release_id, _ = winreg.QueryValueEx(key, "ReleaseId")
35
+ winreg.CloseKey(key)
36
+ return str(release_id)
37
+ except:
38
+ return ""
pyhw/backend/nic/linux.py CHANGED
@@ -39,6 +39,8 @@ class NICDetectLinux:
39
39
  for interface in interfaces:
40
40
  try:
41
41
  if_ip = subprocess.run(["bash", "-c", f"ip -4 addr show {interface} | grep inet | awk '{{print $2}}'"], capture_output=True, text=True).stdout.strip().split("/")[0]
42
+ if if_ip == "":
43
+ continue
42
44
  self._nicInfo.nics.append(f"{interface} @ {if_ip}")
43
45
  self._nicInfo.number += 1
44
46
  except:
pyhw/backend/npu/linux.py CHANGED
@@ -1,5 +1,6 @@
1
1
  from .npuInfo import NPUInfo
2
2
  import pypci
3
+ import os
3
4
 
4
5
 
5
6
  class NPUDetectLinux:
@@ -25,9 +26,24 @@ class NPUDetectLinux:
25
26
  self._npuInfo.number += 1
26
27
 
27
28
  def _handleNonePciDevices(self):
29
+ if os.path.exists("/sys/firmware/devicetree/base/tpu/compatible"):
30
+ try:
31
+ with open("/sys/firmware/devicetree/base/tpu/compatible", "r") as f:
32
+ compatible = f.read().strip()
33
+ except FileNotFoundError:
34
+ compatible = ""
35
+ if "cvitek" in compatible:
36
+ model = compatible.split(",")[-1]
37
+ self._npuInfo.npus.append(f"Cvitek {model}")
38
+ self._npuInfo.number = 1
39
+ else:
40
+ pass
41
+ else:
42
+ pass
28
43
  # Place Holder for unknown NPU
29
- self._npuInfo.number = 1
30
- self._npuInfo.npus.append("Not found")
44
+ if self._npuInfo.number == 0:
45
+ self._npuInfo.number = 1
46
+ self._npuInfo.npus.append("Not found")
31
47
 
32
48
  @staticmethod
33
49
  def _npuNameClean(npu_name: str):
@@ -14,7 +14,10 @@ class OSDetectWindows:
14
14
  edition = platform.win32_edition()
15
15
  machine = platform.machine()
16
16
  display = self.__get_windows_version()
17
- self._osInfo.prettyName = f"{system} {release} {display} ({edition}) {machine}"
17
+ if display != "":
18
+ self._osInfo.prettyName = f"{system} {release} {display} ({edition}) {machine}"
19
+ else:
20
+ self._osInfo.prettyName = f"{system} {release} ({edition}) {machine}"
18
21
  if release == "10":
19
22
  self._osInfo.id = "windows_10"
20
23
  elif release == "11":
@@ -31,5 +34,10 @@ class OSDetectWindows:
31
34
  winreg.CloseKey(key)
32
35
  return str(display_version)
33
36
  except:
34
- raise BackendException("Unable to determine Windows kernel version.")
35
-
37
+ try:
38
+ key = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, r"SOFTWARE\Microsoft\Windows NT\CurrentVersion")
39
+ release_id, _ = winreg.QueryValueEx(key, "ReleaseId")
40
+ winreg.CloseKey(key)
41
+ return str(release_id)
42
+ except:
43
+ return ""
pyhw/pyhwUtil/pyhwUtil.py CHANGED
@@ -25,7 +25,7 @@ def getOS():
25
25
  def getArch():
26
26
  """
27
27
  Get the machine architecture.
28
- :return: str, value in [x86_64, x86, aarch64, arm32].
28
+ :return: str, value in [x86_64, x86, aarch64, arm32, riscv64].
29
29
  """
30
30
  arch = platform.machine()
31
31
  if arch == "x86_64" or arch == "AMD64" or arch == "amd64":
@@ -36,6 +36,8 @@ def getArch():
36
36
  return "aarch64"
37
37
  elif arch.find("arm") != -1:
38
38
  return "arm32"
39
+ elif arch == "riscv64":
40
+ return "riscv64"
39
41
  else:
40
42
  return "unknown"
41
43
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: pyhw
3
- Version: 0.8.0
3
+ Version: 0.9.0
4
4
  Summary: PyHw, a neofetch-like command line tool for fetching system information but written mostly in python.
5
5
  Author-email: Xiao Ran <xiaoran.007@icloud.com>
6
6
  License: BSD-3-Clause
@@ -27,6 +27,7 @@ Requires-Dist: pypci-ng>=0.1.2
27
27
 
28
28
  ![Static Badge](https://img.shields.io/badge/amd64-green)
29
29
  ![Static Badge](https://img.shields.io/badge/arm-blue)
30
+ ![Static Badge](https://img.shields.io/badge/riscv64-%238A2BE2)
30
31
 
31
32
 
32
33
  PyHw, a neofetch-like command line tool for fetching system information but written mostly in Python. **Currently, this project is still in the initial stage, only Linux, macOS, FreeBSD and Windows are supported.**
@@ -96,7 +97,7 @@ This is due to the fact that system python is not supposed to be managed by pip.
96
97
 
97
98
  ## Tested OS
98
99
  * macOS arm64, x86_64
99
- * Linux arm64, x86_64
100
+ * Linux arm64, x86_64, riscv64
100
101
  * FreeBSD arm64
101
102
  * Windows 10 X86_64
102
103
 
@@ -1,4 +1,4 @@
1
- pyhw/__init__.py,sha256=27YY3zFpeaDh6JoC40AqkjBrn68SqFlsWZzjZtw5jwU,22
1
+ pyhw/__init__.py,sha256=_DlwPNmTZTKflLiAF8YIqSr2ao66CTjj4bQtA6hz0jM,22
2
2
  pyhw/__main__.py,sha256=AYSSricHPScjYNF-LgFHfQUqKcxq8FruDW2a89FAXfA,1795
3
3
  pyhw/backend/__init__.py,sha256=knn_3Yroow1h0dqdrozk3zyy3vz-kQyNBRjR6OLmVoY,50
4
4
  pyhw/backend/backendBase.py,sha256=mloo8mPEbgbIdmyQ3I4vdEXMSSjxWi_wnwACmzvHbEo,506
@@ -6,28 +6,28 @@ pyhw/backend/cpu/__init__.py,sha256=5YfANJVRwNwTRodG0ENOgusrdN592aaSnfq5ok4dKTo,
6
6
  pyhw/backend/cpu/bsd.py,sha256=Ls97NAsvZGVJj3_fBUcYXjY2gsZvFKhXYtkTHxVVXSs,288
7
7
  pyhw/backend/cpu/cpuBase.py,sha256=2YAOz1K8VLKtLY7iYBxUV9Ikuf4I4d4YivocvZDrdUU,748
8
8
  pyhw/backend/cpu/cpuInfo.py,sha256=A_nNGElq9W7oZ5DFJowLdFBE0ZvXKr5h29E6TGAvbRc,251
9
- pyhw/backend/cpu/linux.py,sha256=zJ2cOwQHtolJrMMY1WXVbLLIRNPxeClUgzLAAkd7As4,3346
9
+ pyhw/backend/cpu/linux.py,sha256=TAHTi3hKt9uVyaVS1BP4BtpTHOcmH_6NslnbIAp3afo,3494
10
10
  pyhw/backend/cpu/macos.py,sha256=pacU-yT7q-HKerkh2Q0BSdzSY6dKzHfSnRZBmimqqXk,2953
11
11
  pyhw/backend/cpu/windows.py,sha256=A3oIvVUVMGPEqiM9QBiK0OwElcEf1LDhNi_23AimooQ,1723
12
12
  pyhw/backend/gpu/__init__.py,sha256=EpMjPvUaXt0LTNMvGmB8WgXbUB9keCxuOhu8NT3Re6o,56
13
13
  pyhw/backend/gpu/bsd.py,sha256=hNFiCek770CXOh3DK3I3-g272-a1S5D7LolGJBsLXaU,124
14
14
  pyhw/backend/gpu/gpuBase.py,sha256=ZPT9o7PhYpzlwign0GsCT519F9DGx-1UEMVVOM8MV_k,748
15
15
  pyhw/backend/gpu/gpuInfo.py,sha256=d_z_z5DiZAg85wP0VOBQEU0QHdaK3qFqA2Tp9Eq8-Zs,133
16
- pyhw/backend/gpu/linux.py,sha256=E-evoL-spQbHB8JvbZXSq5ypc2SeePVUPnhEQrSPQpg,1619
16
+ pyhw/backend/gpu/linux.py,sha256=M6pRlu3GREMw1Gm7MA-dY_yYI94MliHW3tyS8JjMw5Q,1617
17
17
  pyhw/backend/gpu/macos.py,sha256=SmTqqTrIMRW-GVPmDs8xAiOX7HsCjrGh9qkxLQCdvO8,3850
18
18
  pyhw/backend/gpu/windows.py,sha256=Hv-vtWQGKv6_Nxc8raEBq7NNm5TR6xg6x6BK3Aa2uP4,1249
19
19
  pyhw/backend/host/__init__.py,sha256=Efaj7-Oya7H8HdpZHQCLrwn-mcfPb-d6yfh4dzsE_7I,58
20
20
  pyhw/backend/host/bsd.py,sha256=9gKnM6yysHBKwS3EQvb0pCeylh3dzHvoEuPe14zo9wQ,382
21
21
  pyhw/backend/host/hostBase.py,sha256=gM49SY6rEaxec_0bUOMk7QlEfR7vjfWp3BXEUqgdncc,762
22
22
  pyhw/backend/host/hostInfo.py,sha256=grz15M2t3f_enqQvc7Qn6HlEfYwa66bu2NYvm8VpJ-g,452
23
- pyhw/backend/host/linux.py,sha256=vGIl1b61vB-uilPk6awPOIWRaxnIsR43L20sNHeM5bI,2824
23
+ pyhw/backend/host/linux.py,sha256=alqNkp-yn7xoVXcQXxvJFXVOv7azvu3_4QQi-3P7s8g,2835
24
24
  pyhw/backend/host/macos.py,sha256=KW-EJK9g1xHNrFsVxJv5GPLpc_ZevX0Zv1WjZUzRkzo,15369
25
25
  pyhw/backend/host/windows.py,sha256=qn2QiTK2wIijyyw_QKdiSizY3teyS-9RNBu5RxEPRSw,1185
26
26
  pyhw/backend/kernel/__init__.py,sha256=fGjwjpOhwA_PnsWbwoq102hwhTay2ufYKaTqxjSV2-I,65
27
27
  pyhw/backend/kernel/kernelBase.py,sha256=3ZmkRkvwoWk3R-by2cgBlZnMSQzVjTC8Owmv53Pm4II,539
28
28
  pyhw/backend/kernel/kernelInfo.py,sha256=Nkumd0McbimCjc7yJrvz6bcwpWu1Tdo_LKomjZr7Jgk,341
29
29
  pyhw/backend/kernel/unix.py,sha256=XDV2GIjamERcmlrQFaKFZY-OJO1xj76Im_7lmg2uFzo,1192
30
- pyhw/backend/kernel/windows.py,sha256=RY0Cwwn_eJP4iP43gHLjcQzhwwdU4yc2NGLDajbmtvI,900
30
+ pyhw/backend/kernel/windows.py,sha256=MpY6S54VYQ_5l4f93GLOaXd4l-uIjg_k6AEYftkgvcc,1246
31
31
  pyhw/backend/memory/__init__.py,sha256=zGBWxfPAAk8ivCBWPLJIpuD-lB7wUJT3x8u2jHiAoCY,65
32
32
  pyhw/backend/memory/bsd.py,sha256=GKTCs6RocdoWj-5ZZRMB4xAWGWljor6leuwX-L-7bW0,251
33
33
  pyhw/backend/memory/linux.py,sha256=kxP0LxXdTWYRtu9nDyKqZeIzZrQI84kVOPMeN1GwSOo,917
@@ -38,14 +38,14 @@ pyhw/backend/memory/windows.py,sha256=T_yWJCu-joWvXXuaIgnMRGaDtsp-frQD_cx8IFVgdp
38
38
  pyhw/backend/metal/t.py,sha256=52yv-JoXNfaIOfcxEEidIg0MoyFtzWvTRm550kQKPZA,391
39
39
  pyhw/backend/nic/__init__.py,sha256=eP4eOYIvMF3LcTf954hJa6TnB8R4Qahss2g-UcgypKY,57
40
40
  pyhw/backend/nic/bsd.py,sha256=lIXnPqzSA2qexUt0P9OHMmxoI5c5XBi2V80RY9S0wsM,135
41
- pyhw/backend/nic/linux.py,sha256=3H91Nw87frzZA4P6Q5GbjHSaI7q4Q5-v6R8BgdvplgQ,1976
41
+ pyhw/backend/nic/linux.py,sha256=oxWCcGIA8u_k_QhbKpxjoo2x5-NcwvfJ0UYem9MzN8s,2045
42
42
  pyhw/backend/nic/macos.py,sha256=63gZjSmUGwGqfs41IWrEXmSz9O8eQy4G5oql3JLZmoo,855
43
43
  pyhw/backend/nic/nicBase.py,sha256=Kng5qoe7FHcnQaf6S-LUe_HyOaBJe0L1SVstdIQ_WJY,962
44
44
  pyhw/backend/nic/nicInfo.py,sha256=wuBuL-aIzD441IUDPGz5e0xctcZ-opdpgqkVxgbvZLg,133
45
45
  pyhw/backend/nic/windows.py,sha256=c67JwHARtPxNsZ-0_MVKUfc7DwpsRVn7kiHdx_NyDn8,1297
46
46
  pyhw/backend/npu/__init__.py,sha256=PgLKbwpgT5vw9xpa294Zxb94McyxNXW46_vMbT2Iqyc,58
47
47
  pyhw/backend/npu/bsd.py,sha256=eKkOWZ4MBybR_KOGGcsWUpzCGgghhvuBy5VNsnEE8cI,134
48
- pyhw/backend/npu/linux.py,sha256=mXHSYRION3pghwk6_4vgHxjSkNxI68ksGLkFZstR0mc,1192
48
+ pyhw/backend/npu/linux.py,sha256=fPsaXClSC-Py2kHRi17y4eGWrjwRDmjsIX4lgMxRVPc,1806
49
49
  pyhw/backend/npu/macos.py,sha256=c-iSmGfBWYeoh7nXuCFmPlVH6bc6sil_yRsAlabl93k,2513
50
50
  pyhw/backend/npu/npuBase.py,sha256=1cVWRmr8g-mDXrJAx2cUO4qWZft2TtT7L2-HzRot2nI,748
51
51
  pyhw/backend/npu/npuInfo.py,sha256=82dK6XvW_XKw4O5-RfR4-qQRR7Plh8qqJLj0YDzISmU,135
@@ -56,7 +56,7 @@ pyhw/backend/os/linux.py,sha256=U7dIOKZaG5MSw0S65hAfDfFaBMvbwSCHFIHTwckU9iI,1957
56
56
  pyhw/backend/os/macos.py,sha256=DwgpwRD1a2oTANR_XL3kkMzNawqrt23F79dqBw3ULK8,1906
57
57
  pyhw/backend/os/osBase.py,sha256=2zaOGhaXLrNJS9-9qR4hH9_uFTgA2Sv4ab7YZvNVFaE,744
58
58
  pyhw/backend/os/osInfo.py,sha256=NEr76aicI9N3SFrwi1skcpUEjzsyCryTjdE9X1nBjBM,536
59
- pyhw/backend/os/windows.py,sha256=WyUhkO9loIqwiZ_ezI6J2JHL4A2xzQAuTzkO1ZOStr4,1149
59
+ pyhw/backend/os/windows.py,sha256=xjU8NaQwcLusuRw6J7RwwwJiGSv5H_LRBvg2LYEyvNg,1514
60
60
  pyhw/backend/shell/__init__.py,sha256=SeQ7OLNSl_V1JCCWnJGjLilAWiSe9e5kgsMEt63TMS0,62
61
61
  pyhw/backend/shell/shellBase.py,sha256=829rchiqXfyA-oKT81mkGGoKBjZflM5NHIRs0_ZSwaY,531
62
62
  pyhw/backend/shell/shellInfo.py,sha256=pU32_Akg0TDVFprTfPYaOKWcFkijJkm0FOowfILNRKk,184
@@ -103,11 +103,11 @@ pyhw/library/lib/iokitGPULib.dylib,sha256=DcJ0GZY79gTFckLFYtZgeKn1T0NFvdO_k_ccCa
103
103
  pyhw/pyhwException/__init__.py,sha256=8JsFvtF13g0Y5t4z9fRndDXtfCzuBM59jDf6PhWSFSk,220
104
104
  pyhw/pyhwException/pyhwException.py,sha256=wxuzFQa9g7XB1q9TUKO_55lw7wMEJMpzG8w1GVTFVa0,197
105
105
  pyhw/pyhwUtil/__init__.py,sha256=diIqlNUBfuHu-2VAOJk5nipGLafnWxR3chAAOmX8QRo,250
106
- pyhw/pyhwUtil/pyhwUtil.py,sha256=h3XsZFGwzkW75kj853IWVlxwDz8R8A3UR-bxju95aeY,6703
106
+ pyhw/pyhwUtil/pyhwUtil.py,sha256=h4Xz0heMrBoj2ViHyWmWUNcWmIZlxAmMhqZXskEHpTU,6765
107
107
  pyhw/pyhwUtil/sysctlUtil.py,sha256=S-rUvqi7ZrMyMouIhxlyHEQ4agM7sCT1Y7uzs3Hu5-o,841
108
- pyhw-0.8.0.dist-info/LICENSE,sha256=hJs6RBqSVCexbTsalkMLNFI5t06kekQEsSVaOt_-yLs,1497
109
- pyhw-0.8.0.dist-info/METADATA,sha256=2jICwuL3kDvCFc1aJN67Hk3YFGHqQSOjpZkyAAYk5c0,5945
110
- pyhw-0.8.0.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
111
- pyhw-0.8.0.dist-info/entry_points.txt,sha256=q-AB8im_QahpmNrmy4aPTJRGi0LlbNlnI3kF7s6pKss,44
112
- pyhw-0.8.0.dist-info/top_level.txt,sha256=7Inxvxt1TngEricKZEex9_WJZS3DbKYFUXDz4v5WHYU,5
113
- pyhw-0.8.0.dist-info/RECORD,,
108
+ pyhw-0.9.0.dist-info/LICENSE,sha256=hJs6RBqSVCexbTsalkMLNFI5t06kekQEsSVaOt_-yLs,1497
109
+ pyhw-0.9.0.dist-info/METADATA,sha256=oC2iJ9uHoQJAB03GK4V6JelRcshwC5zjZPIGC2K7wdU,6018
110
+ pyhw-0.9.0.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
111
+ pyhw-0.9.0.dist-info/entry_points.txt,sha256=q-AB8im_QahpmNrmy4aPTJRGi0LlbNlnI3kF7s6pKss,44
112
+ pyhw-0.9.0.dist-info/top_level.txt,sha256=7Inxvxt1TngEricKZEex9_WJZS3DbKYFUXDz4v5WHYU,5
113
+ pyhw-0.9.0.dist-info/RECORD,,
File without changes
File without changes