pyhw 0.4.0__py3-none-any.whl → 0.4.1__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
pyhw/__main__.py CHANGED
@@ -10,6 +10,7 @@ from .backend.cpu import CPUDetect
10
10
  from .backend.gpu import GPUDetect
11
11
  from .backend.memory import MemoryDetect
12
12
  from .backend.nic import NICDetect
13
+ from .backend.npu import NPUDetect
13
14
  from .pyhwUtil import createDataString
14
15
  from .pyhwUtil import getOS, selectOSLogo
15
16
 
@@ -34,6 +35,9 @@ def main():
34
35
  nic_info = NICDetect(os=current_os).getNICInfo()
35
36
  if nic_info.number > 0:
36
37
  data.NIC = nic_info.nics
38
+ npu_info = NPUDetect(os=current_os).getNPUInfo()
39
+ if npu_info.number > 0:
40
+ data.NPU = npu_info.npus
37
41
 
38
42
  Printer(logo_os=selectOSLogo(OSDetect(os=current_os).getOSInfo().id), data=createDataString(data)).cPrint()
39
43
 
@@ -20,3 +20,4 @@ class Data:
20
20
  GPU = ["Default Value"]
21
21
  Memory = "Default Value"
22
22
  NIC = ["Default Value"]
23
+ NPU = ["Default Value"]
@@ -0,0 +1,5 @@
1
+ from .npuBase import NPUDetect
2
+
3
+ __all__ = ['NPUDetect']
4
+
5
+
@@ -0,0 +1,42 @@
1
+ import subprocess
2
+ from .npuInfo import NPUInfo
3
+ from ..cpu import CPUDetect
4
+ from ...pyhwUtil import getArch
5
+ import pypci
6
+
7
+
8
+ class NPUDetectLinux:
9
+ def __init__(self):
10
+ self.__npuInfo = NPUInfo()
11
+
12
+ def getNPUInfo(self):
13
+ self.__getNPUInfo()
14
+ self.__sortNPUList()
15
+ return self.__npuInfo
16
+
17
+ def __getNPUInfo(self):
18
+ npu_devices = pypci.PCI().FindAllNPU()
19
+ if len(npu_devices) == 0:
20
+ self.__handleNonePciDevices()
21
+ else:
22
+ for device in npu_devices:
23
+ if device.subsystem_device_name != "":
24
+ device_name = f"{device.vendor_name} {device.device_name} ({device.subsystem_device_name})"
25
+ else:
26
+ device_name = f"{device.vendor_name} {device.device_name}"
27
+ self.__npuInfo.npus.append(self.__npuNameClean(device_name))
28
+ self.__npuInfo.number += 1
29
+
30
+ def __handleNonePciDevices(self):
31
+ # Place Holder for unknown NPU
32
+ self.__npuInfo.number = 1
33
+ self.__npuInfo.npus.append("Not found")
34
+
35
+ @staticmethod
36
+ def __npuNameClean(npu_name: str):
37
+ npu_name_clean = npu_name.replace("Corporation ", "")
38
+ return npu_name_clean
39
+
40
+ def __sortNPUList(self):
41
+ self.__npuInfo.npus.sort()
42
+
@@ -0,0 +1,39 @@
1
+ from .npuInfo import NPUInfo
2
+ from ...pyhwUtil import getArch
3
+ import json
4
+ import subprocess
5
+
6
+
7
+ class NPUDetectMacOS:
8
+ def __init__(self):
9
+ self.__npuInfo = NPUInfo()
10
+ self.__arch = getArch()
11
+
12
+ def getNPUInfo(self):
13
+ if self.__arch == "aarch64":
14
+ self.__getNPUAppleSilicon()
15
+ else: # Does not consider powerPC based Macs.
16
+ self.__getNPUIntel()
17
+ return self.__npuInfo
18
+
19
+ def __getNPUAppleSilicon(self):
20
+ # Place holder
21
+ self.__npuInfo.npus.append("Neural Engine [SOC Integrated]")
22
+ self.__npuInfo.number += 1
23
+
24
+ def __getNPUIntel(self):
25
+ # Place holder
26
+ self.__npuInfo.npus.append("Not Found")
27
+ self.__npuInfo.number += 1
28
+
29
+ @staticmethod
30
+ def __handleVendor(vendor):
31
+ if vendor == "sppci_vendor_Apple":
32
+ return "Apple"
33
+ elif vendor == "sppci_vendor_intel":
34
+ return "Intel"
35
+ elif vendor == "sppci_vendor_amd":
36
+ return "AMD"
37
+ else:
38
+ return vendor
39
+
@@ -0,0 +1,17 @@
1
+ from .linux import NPUDetectLinux
2
+ from .macos import NPUDetectMacOS
3
+
4
+
5
+ class NPUDetect:
6
+ def __init__(self, os):
7
+ self.OS = os
8
+
9
+ def getNPUInfo(self):
10
+ if self.OS == "linux":
11
+ return NPUDetectLinux().getNPUInfo()
12
+ elif self.OS == "macos":
13
+ return NPUDetectMacOS().getNPUInfo()
14
+ else:
15
+ raise NotImplementedError("Unsupported operating system")
16
+
17
+
@@ -0,0 +1,10 @@
1
+ from dataclasses import dataclass
2
+
3
+
4
+ @dataclass
5
+ class NPUInfo:
6
+ def __init__(self):
7
+ self.number = 0
8
+ self.npus = []
9
+
10
+
pyhw/pyhwUtil/pyhwUtil.py CHANGED
@@ -53,6 +53,8 @@ def createDataString(data: Data):
53
53
  data_string += f" Memory: {data.Memory}\n"
54
54
  for nic in data.NIC:
55
55
  data_string += f" NIC: {nic}\n"
56
+ for npu in data.NPU:
57
+ data_string += f" NPU: {npu}\n"
56
58
  return data_string
57
59
 
58
60
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pyhw
3
- Version: 0.4.0
3
+ Version: 0.4.1
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
@@ -13,7 +13,7 @@ Classifier: Operating System :: OS Independent
13
13
  Requires-Python: >=3.9
14
14
  Description-Content-Type: text/markdown
15
15
  License-File: LICENSE
16
- Requires-Dist: pypci-ng>=0.0.1
16
+ Requires-Dist: pypci-ng>=0.0.3
17
17
 
18
18
  # PyHw
19
19
  [![Downloads](https://static.pepy.tech/badge/pyhw)](https://pepy.tech/project/pyhw)
@@ -1,8 +1,8 @@
1
1
  pyhw/__init__.py,sha256=IMjkMO3twhQzluVTo8Z6rE7Eg-9U79_LGKMcsWLKBkY,22
2
- pyhw/__main__.py,sha256=mAlp-qNRg3H9jeftQeNBZPDPyhvSHJ8v0VL_85qPyg8,1616
2
+ pyhw/__main__.py,sha256=3iVi-P0ciOYQPUrelB48gGOWlzFFkEw8n7MzX1K5Pck,1765
3
3
  pyhw/macos.py,sha256=kF973QvtEFky4m8RnYTJ-HWPuJi3625tvnWqJAT_DHM,4598
4
4
  pyhw/backend/__init__.py,sha256=knn_3Yroow1h0dqdrozk3zyy3vz-kQyNBRjR6OLmVoY,50
5
- pyhw/backend/backendBase.py,sha256=wLb03ZsDqWx36KaXnc0tMZfxOSM0_oBnnfv9khyRis4,478
5
+ pyhw/backend/backendBase.py,sha256=mloo8mPEbgbIdmyQ3I4vdEXMSSjxWi_wnwACmzvHbEo,506
6
6
  pyhw/backend/cpu/__init__.py,sha256=5YfANJVRwNwTRodG0ENOgusrdN592aaSnfq5ok4dKTo,56
7
7
  pyhw/backend/cpu/cpuBase.py,sha256=AGWqVjdvb82NiH4kxk3GERdBLwBNhkR23j2ei_l3S18,464
8
8
  pyhw/backend/cpu/cpuInfo.py,sha256=A_nNGElq9W7oZ5DFJowLdFBE0ZvXKr5h29E6TGAvbRc,251
@@ -35,6 +35,11 @@ pyhw/backend/nic/linux.py,sha256=2IDhesM77qLt7QK8HzYiMeLyuKWOVVrrDtkLHs7R6lU,132
35
35
  pyhw/backend/nic/macos.py,sha256=Gi-XAf2ZvJcWbwJvTlkpdyKaRDSXXiI2WhISeASxbvc,481
36
36
  pyhw/backend/nic/nicBase.py,sha256=hmVbiPOrDFClQrOBgAUgE8GVkC5nVH280jnlb65CDV4,539
37
37
  pyhw/backend/nic/nicInfo.py,sha256=wuBuL-aIzD441IUDPGz5e0xctcZ-opdpgqkVxgbvZLg,133
38
+ pyhw/backend/npu/__init__.py,sha256=PgLKbwpgT5vw9xpa294Zxb94McyxNXW46_vMbT2Iqyc,58
39
+ pyhw/backend/npu/linux.py,sha256=eQLozhGOh3iHoFXdRYp_Fn9OsrmJ7tsyxcOPUvopOSw,1286
40
+ pyhw/backend/npu/macos.py,sha256=-eoZXMcwiYUeO_ba9lLqWyhV8jmBYkgMi7iMlmVsbeY,1031
41
+ pyhw/backend/npu/npuBase.py,sha256=6lPYmsOGHO-lT-GqaJ2hNXRV_FLYqguuZ_7L6JJCG-g,411
42
+ pyhw/backend/npu/npuInfo.py,sha256=82dK6XvW_XKw4O5-RfR4-qQRR7Plh8qqJLj0YDzISmU,135
38
43
  pyhw/backend/os/__init__.py,sha256=rPHQYdQK3qU6ZwwodqVoEWeqBnKffXlJyi4k3-8ViPY,53
39
44
  pyhw/backend/os/linux.py,sha256=UDUSbCMQQJZqfRFHS270u-ZrW4KfqZxcS_vQZl6VbPo,1977
40
45
  pyhw/backend/os/macos.py,sha256=DwgpwRD1a2oTANR_XL3kkMzNawqrt23F79dqBw3ULK8,1906
@@ -75,11 +80,11 @@ pyhw/frontend/logo/ascii/ubuntu_small.pyhw,sha256=Xf8LSZdZUu9aEG3efhb1FUlUEuJ-3U
75
80
  pyhw/pyhwException/__init__.py,sha256=8JsFvtF13g0Y5t4z9fRndDXtfCzuBM59jDf6PhWSFSk,220
76
81
  pyhw/pyhwException/pyhwException.py,sha256=wxuzFQa9g7XB1q9TUKO_55lw7wMEJMpzG8w1GVTFVa0,197
77
82
  pyhw/pyhwUtil/__init__.py,sha256=PzeP9fXsIhvr3sUpJ4DxW9_H25DEIasBFfXd_NztfR4,226
78
- pyhw/pyhwUtil/pyhwUtil.py,sha256=PXibpl4hfc-xFHV1HNWwkzttC0NQITHLEwojYKMmD-U,2413
83
+ pyhw/pyhwUtil/pyhwUtil.py,sha256=CKXJrt6KGhZCV1J7MjsQ21c_jPmC1I3wZBPCKJfdqbM,2478
79
84
  pyhw/pyhwUtil/sysctlUtil.py,sha256=S-rUvqi7ZrMyMouIhxlyHEQ4agM7sCT1Y7uzs3Hu5-o,841
80
- pyhw-0.4.0.dist-info/LICENSE,sha256=hJs6RBqSVCexbTsalkMLNFI5t06kekQEsSVaOt_-yLs,1497
81
- pyhw-0.4.0.dist-info/METADATA,sha256=s9V56kt4Wf7VbhDWvGAfI0RPE0rLSzLAXpTp4H4lpqI,4136
82
- pyhw-0.4.0.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
83
- pyhw-0.4.0.dist-info/entry_points.txt,sha256=q-AB8im_QahpmNrmy4aPTJRGi0LlbNlnI3kF7s6pKss,44
84
- pyhw-0.4.0.dist-info/top_level.txt,sha256=7Inxvxt1TngEricKZEex9_WJZS3DbKYFUXDz4v5WHYU,5
85
- pyhw-0.4.0.dist-info/RECORD,,
85
+ pyhw-0.4.1.dist-info/LICENSE,sha256=hJs6RBqSVCexbTsalkMLNFI5t06kekQEsSVaOt_-yLs,1497
86
+ pyhw-0.4.1.dist-info/METADATA,sha256=unr5Vf2YvG3dQfGma2Ahm1BzNwC5lGyJdLNbvdNCFng,4136
87
+ pyhw-0.4.1.dist-info/WHEEL,sha256=OVMc5UfuAQiSplgO0_WdW7vXVGAt9Hdd6qtN4HotdyA,91
88
+ pyhw-0.4.1.dist-info/entry_points.txt,sha256=q-AB8im_QahpmNrmy4aPTJRGi0LlbNlnI3kF7s6pKss,44
89
+ pyhw-0.4.1.dist-info/top_level.txt,sha256=7Inxvxt1TngEricKZEex9_WJZS3DbKYFUXDz4v5WHYU,5
90
+ pyhw-0.4.1.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.1.0)
2
+ Generator: setuptools (75.2.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
File without changes