pyhw 0.3.4__py3-none-any.whl → 0.3.6__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
@@ -9,6 +9,7 @@ from .backend.os import OSDetect
9
9
  from .backend.cpu import CPUDetect
10
10
  from .backend.gpu import GPUDetect
11
11
  from .backend.memory import MemoryDetect
12
+ from .backend.nic import NICDetect
12
13
  from .pyhwUtil import createDataString
13
14
  from .pyhwUtil import getOS, selectOSLogo
14
15
 
@@ -30,6 +31,9 @@ def main():
30
31
  if gpu_info.number > 0:
31
32
  data.GPU = gpu_info.gpus
32
33
  data.Memory = MemoryDetect(os=current_os).getMemoryInfo().memory
34
+ nic_info = NICDetect(os=current_os).getNICInfo()
35
+ if nic_info.number > 0:
36
+ data.NIC = nic_info.nics
33
37
 
34
38
  Printer(logo_os=selectOSLogo(OSDetect(os=current_os).getOSInfo().id), data=createDataString(data)).cPrint()
35
39
 
@@ -19,3 +19,4 @@ class Data:
19
19
  CPU = "Default Value"
20
20
  GPU = ["Default Value"]
21
21
  Memory = "Default Value"
22
+ NIC = ["Default Value"]
pyhw/backend/gpu/macos.py CHANGED
@@ -47,7 +47,7 @@ class GPUDetectMacOS:
47
47
  if self.__handleVendor(gpu.get("spdisplays_vendor")) == "Intel": # Integrated GPU
48
48
  self.__gpuInfo.gpus.append(f'{gpu.get("sppci_model")} [CPU Integrated]')
49
49
  elif self.__handleVendor(gpu.get("spdisplays_vendor")) == "AMD": # dGPU
50
- self.__gpuInfo.gpus.append(f'{gpu.get("sppci_model")} [Discrete]')
50
+ self.__gpuInfo.gpus.append(f'{gpu.get("sppci_model")} {gpu.get("spdisplays_vram")} [Discrete]')
51
51
  elif self.__handleVendor(gpu.get("spdisplays_vendor")) == "Nvidia": # Since current macOS does not support NVIDIA GPUs, this condition is not applicable
52
52
  pass
53
53
 
@@ -0,0 +1,4 @@
1
+ from .nicBase import NICDetect
2
+
3
+
4
+ __all__ = ["NICDetect"]
@@ -0,0 +1,43 @@
1
+ import subprocess
2
+ from .nicInfo import NICInfo
3
+ from ...pyhwUtil import getArch
4
+ from ...pyhwException import BackendException
5
+
6
+
7
+ class NICDetectLinux:
8
+ def __init__(self):
9
+ self.__nicInfo = NICInfo()
10
+
11
+ def getNICInfo(self):
12
+ self.__getNICInfo()
13
+ self.__sortNICList()
14
+ return self.__nicInfo
15
+
16
+ def __getNICInfo(self):
17
+ try:
18
+ pci_info = subprocess.run(["bash", "-c", "lspci"], capture_output=True, text=True).stdout.strip()
19
+ except subprocess.SubprocessError:
20
+ return
21
+ if len(pci_info) == 0: # no pcie devices found
22
+ self.__handleNonePciDevices()
23
+ return
24
+ for line in pci_info.split("\n"):
25
+ if "Ethernet controller" in line or "Network controller" in line:
26
+ nic = line.split(": ")[1]
27
+ self.__nicInfo.nics.append(self.__nicNameClean(nic))
28
+ self.__nicInfo.number += 1
29
+ if self.__nicInfo.number == 0:
30
+ self.__handleNonePciDevices() # fallback to usb detection method
31
+
32
+ def __handleNonePciDevices(self):
33
+ # placeholder for a more advanced method.
34
+ self.__nicInfo.nics.append("Not found")
35
+ self.__nicInfo.number = 1
36
+
37
+ @staticmethod
38
+ def __nicNameClean(nic_name: str):
39
+ nic_name_clean = nic_name.replace("Corporation ", "")
40
+ return nic_name_clean
41
+
42
+ def __sortNICList(self):
43
+ return self.__nicInfo.nics.sort()
@@ -0,0 +1,17 @@
1
+ from .linux import NICDetectLinux
2
+
3
+
4
+ class NICDetect:
5
+ """
6
+ Class for network interface (NIC) detection.
7
+ """
8
+ def __init__(self, os):
9
+ self.OS = os
10
+
11
+ def getNICInfo(self):
12
+ """
13
+ Detects the network interfaces (NICs) connected to the system.
14
+ :return: dataclass NICInfo, direct attr: nics
15
+ """
16
+ if self.OS == "linux":
17
+ return NICDetectLinux().getNICInfo()
@@ -0,0 +1,8 @@
1
+ from dataclasses import dataclass
2
+
3
+
4
+ @dataclass
5
+ class NICInfo:
6
+ def __init__(self):
7
+ self.number = 0
8
+ self.nics = []
pyhw/pyhwUtil/pyhwUtil.py CHANGED
@@ -51,6 +51,8 @@ def createDataString(data: Data):
51
51
  for gpu in data.GPU:
52
52
  data_string += f" GPU: {gpu}\n"
53
53
  data_string += f" Memory: {data.Memory}\n"
54
+ for nic in data.NIC:
55
+ data_string += f" NIC: {nic}\n"
54
56
  return data_string
55
57
 
56
58
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pyhw
3
- Version: 0.3.4
3
+ Version: 0.3.6
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
@@ -1,8 +1,8 @@
1
1
  pyhw/__init__.py,sha256=IMjkMO3twhQzluVTo8Z6rE7Eg-9U79_LGKMcsWLKBkY,22
2
- pyhw/__main__.py,sha256=EZPquqahE-4VvSJK3kHbxBHNR_1_Yah9T640ZUtXKO8,1467
2
+ pyhw/__main__.py,sha256=mAlp-qNRg3H9jeftQeNBZPDPyhvSHJ8v0VL_85qPyg8,1616
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=t9FKQPdK7yFZF0vrsXpjIUJNKrB-cXYeL5MDohlgguA,450
5
+ pyhw/backend/backendBase.py,sha256=wLb03ZsDqWx36KaXnc0tMZfxOSM0_oBnnfv9khyRis4,478
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
@@ -12,7 +12,7 @@ pyhw/backend/gpu/__init__.py,sha256=EpMjPvUaXt0LTNMvGmB8WgXbUB9keCxuOhu8NT3Re6o,
12
12
  pyhw/backend/gpu/gpuBase.py,sha256=Ge0DX2P8_EB7ovM7glmPUnVsPJL3OUHV2t_1T5mimR0,409
13
13
  pyhw/backend/gpu/gpuInfo.py,sha256=d_z_z5DiZAg85wP0VOBQEU0QHdaK3qFqA2Tp9Eq8-Zs,133
14
14
  pyhw/backend/gpu/linux.py,sha256=Pc9Sajf0tgRyT9zP1lYysQciLmgtNZjsuJNH3xNvwAY,1715
15
- pyhw/backend/gpu/macos.py,sha256=sgrROfJC59KWjxfW2n90thVEjgDNYYLWo_pETDFPKQA,2308
15
+ pyhw/backend/gpu/macos.py,sha256=kkTq9_ZJwTQ0Jwep4oYq41STDTplFz83jKRYbvlbMhg,2337
16
16
  pyhw/backend/host/__init__.py,sha256=Efaj7-Oya7H8HdpZHQCLrwn-mcfPb-d6yfh4dzsE_7I,58
17
17
  pyhw/backend/host/hostBase.py,sha256=POyDW3f5JSWtEKyCfrVSBEddSwoywe_OBgUExCEuje8,563
18
18
  pyhw/backend/host/hostInfo.py,sha256=Xvz0LugPiCSWMkcDsp4p2rrojYFZauL6Q-gCZ6NLz5k,184
@@ -30,6 +30,10 @@ pyhw/backend/memory/macos.py,sha256=ur2HxmmmVkXmaxEcw_otphifVp_csfNMJdgt-idCq7M,
30
30
  pyhw/backend/memory/memoryBase.py,sha256=RFRWTByH25T3T77maxLyIRRoedIi5M8XLtVbvwBmjfY,433
31
31
  pyhw/backend/memory/memoryInfo.py,sha256=OQF165uEyuapAsi7cKacQYDRnKdrQHeldfyFwzS9N2g,186
32
32
  pyhw/backend/metal/t.py,sha256=52yv-JoXNfaIOfcxEEidIg0MoyFtzWvTRm550kQKPZA,391
33
+ pyhw/backend/nic/__init__.py,sha256=eP4eOYIvMF3LcTf954hJa6TnB8R4Qahss2g-UcgypKY,57
34
+ pyhw/backend/nic/linux.py,sha256=xWZQlPfeQK9vbn3vQvm-liEJ1Zu1LGwkVhGrzJO1jjc,1436
35
+ pyhw/backend/nic/nicBase.py,sha256=g68oFWN1cjObAZQZXKtSyz9XVPpuWaTqLsQ8Q0wTO7c,422
36
+ pyhw/backend/nic/nicInfo.py,sha256=wuBuL-aIzD441IUDPGz5e0xctcZ-opdpgqkVxgbvZLg,133
33
37
  pyhw/backend/os/__init__.py,sha256=rPHQYdQK3qU6ZwwodqVoEWeqBnKffXlJyi4k3-8ViPY,53
34
38
  pyhw/backend/os/linux.py,sha256=UDUSbCMQQJZqfRFHS270u-ZrW4KfqZxcS_vQZl6VbPo,1977
35
39
  pyhw/backend/os/macos.py,sha256=DwgpwRD1a2oTANR_XL3kkMzNawqrt23F79dqBw3ULK8,1906
@@ -70,11 +74,11 @@ pyhw/frontend/logo/ascii/ubuntu_small.pyhw,sha256=Xf8LSZdZUu9aEG3efhb1FUlUEuJ-3U
70
74
  pyhw/pyhwException/__init__.py,sha256=8JsFvtF13g0Y5t4z9fRndDXtfCzuBM59jDf6PhWSFSk,220
71
75
  pyhw/pyhwException/pyhwException.py,sha256=wxuzFQa9g7XB1q9TUKO_55lw7wMEJMpzG8w1GVTFVa0,197
72
76
  pyhw/pyhwUtil/__init__.py,sha256=PzeP9fXsIhvr3sUpJ4DxW9_H25DEIasBFfXd_NztfR4,226
73
- pyhw/pyhwUtil/pyhwUtil.py,sha256=OIJJp5LnCuDDS7Tx2l7gV5i7VGe9W8qY9E5kROx_MR0,2348
77
+ pyhw/pyhwUtil/pyhwUtil.py,sha256=PXibpl4hfc-xFHV1HNWwkzttC0NQITHLEwojYKMmD-U,2413
74
78
  pyhw/pyhwUtil/sysctlUtil.py,sha256=S-rUvqi7ZrMyMouIhxlyHEQ4agM7sCT1Y7uzs3Hu5-o,841
75
- pyhw-0.3.4.dist-info/LICENSE,sha256=hJs6RBqSVCexbTsalkMLNFI5t06kekQEsSVaOt_-yLs,1497
76
- pyhw-0.3.4.dist-info/METADATA,sha256=Y83I6bgPmISwgTLZHRWLlNjnT7qXxpI0p2wJGGgJn5w,4041
77
- pyhw-0.3.4.dist-info/WHEEL,sha256=Mdi9PDNwEZptOjTlUcAth7XJDFtKrHYaQMPulZeBCiQ,91
78
- pyhw-0.3.4.dist-info/entry_points.txt,sha256=q-AB8im_QahpmNrmy4aPTJRGi0LlbNlnI3kF7s6pKss,44
79
- pyhw-0.3.4.dist-info/top_level.txt,sha256=7Inxvxt1TngEricKZEex9_WJZS3DbKYFUXDz4v5WHYU,5
80
- pyhw-0.3.4.dist-info/RECORD,,
79
+ pyhw-0.3.6.dist-info/LICENSE,sha256=hJs6RBqSVCexbTsalkMLNFI5t06kekQEsSVaOt_-yLs,1497
80
+ pyhw-0.3.6.dist-info/METADATA,sha256=Sf-ylDNdsZWPPoOvwyvlh97L4VmYx1ZADIdEi6__G9w,4041
81
+ pyhw-0.3.6.dist-info/WHEEL,sha256=cVxcB9AmuTcXqmwrtPhNK88dr7IR_b6qagTj0UvIEbY,91
82
+ pyhw-0.3.6.dist-info/entry_points.txt,sha256=q-AB8im_QahpmNrmy4aPTJRGi0LlbNlnI3kF7s6pKss,44
83
+ pyhw-0.3.6.dist-info/top_level.txt,sha256=7Inxvxt1TngEricKZEex9_WJZS3DbKYFUXDz4v5WHYU,5
84
+ pyhw-0.3.6.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (73.0.1)
2
+ Generator: setuptools (74.1.2)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
File without changes