pyhw 0.3.5__py3-none-any.whl → 0.3.7__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"]
@@ -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,11 @@
1
+ from .nicInfo import NICInfo
2
+
3
+
4
+ class NICDetectMacOS:
5
+ def __init__(self):
6
+ self.__nicInfo = NICInfo()
7
+
8
+ def getNICInfo(self):
9
+ self.__nicInfo.nics.append("en0")
10
+ self.__nicInfo.number = 1
11
+ return self.__nicInfo
@@ -0,0 +1,20 @@
1
+ from .linux import NICDetectLinux
2
+ from .macos import NICDetectMacOS
3
+
4
+
5
+ class NICDetect:
6
+ """
7
+ Class for network interface (NIC) detection.
8
+ """
9
+ def __init__(self, os):
10
+ self.OS = os
11
+
12
+ def getNICInfo(self):
13
+ """
14
+ Detects the network interfaces (NICs) connected to the system.
15
+ :return: dataclass NICInfo, direct attr: nics
16
+ """
17
+ if self.OS == "linux":
18
+ return NICDetectLinux().getNICInfo()
19
+ elif self.OS == "macos":
20
+ return NICDetectMacOS().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.5
3
+ Version: 0.3.7
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
@@ -30,6 +30,11 @@ 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/macos.py,sha256=YY3BZpv_Kr4kqW6k9xFqFs_ne007czL5tZGs5v_0Z3k,245
36
+ pyhw/backend/nic/nicBase.py,sha256=hmVbiPOrDFClQrOBgAUgE8GVkC5nVH280jnlb65CDV4,539
37
+ pyhw/backend/nic/nicInfo.py,sha256=wuBuL-aIzD441IUDPGz5e0xctcZ-opdpgqkVxgbvZLg,133
33
38
  pyhw/backend/os/__init__.py,sha256=rPHQYdQK3qU6ZwwodqVoEWeqBnKffXlJyi4k3-8ViPY,53
34
39
  pyhw/backend/os/linux.py,sha256=UDUSbCMQQJZqfRFHS270u-ZrW4KfqZxcS_vQZl6VbPo,1977
35
40
  pyhw/backend/os/macos.py,sha256=DwgpwRD1a2oTANR_XL3kkMzNawqrt23F79dqBw3ULK8,1906
@@ -70,11 +75,11 @@ pyhw/frontend/logo/ascii/ubuntu_small.pyhw,sha256=Xf8LSZdZUu9aEG3efhb1FUlUEuJ-3U
70
75
  pyhw/pyhwException/__init__.py,sha256=8JsFvtF13g0Y5t4z9fRndDXtfCzuBM59jDf6PhWSFSk,220
71
76
  pyhw/pyhwException/pyhwException.py,sha256=wxuzFQa9g7XB1q9TUKO_55lw7wMEJMpzG8w1GVTFVa0,197
72
77
  pyhw/pyhwUtil/__init__.py,sha256=PzeP9fXsIhvr3sUpJ4DxW9_H25DEIasBFfXd_NztfR4,226
73
- pyhw/pyhwUtil/pyhwUtil.py,sha256=OIJJp5LnCuDDS7Tx2l7gV5i7VGe9W8qY9E5kROx_MR0,2348
78
+ pyhw/pyhwUtil/pyhwUtil.py,sha256=PXibpl4hfc-xFHV1HNWwkzttC0NQITHLEwojYKMmD-U,2413
74
79
  pyhw/pyhwUtil/sysctlUtil.py,sha256=S-rUvqi7ZrMyMouIhxlyHEQ4agM7sCT1Y7uzs3Hu5-o,841
75
- pyhw-0.3.5.dist-info/LICENSE,sha256=hJs6RBqSVCexbTsalkMLNFI5t06kekQEsSVaOt_-yLs,1497
76
- pyhw-0.3.5.dist-info/METADATA,sha256=0Ay2Kr1ajq10WvbyD1N-qwyGeiW68NwIyXocKX_72JI,4041
77
- pyhw-0.3.5.dist-info/WHEEL,sha256=UvcQYKBHoFqaQd6LKyqHw9fxEolWLQnlzP0h_LgJAfI,91
78
- pyhw-0.3.5.dist-info/entry_points.txt,sha256=q-AB8im_QahpmNrmy4aPTJRGi0LlbNlnI3kF7s6pKss,44
79
- pyhw-0.3.5.dist-info/top_level.txt,sha256=7Inxvxt1TngEricKZEex9_WJZS3DbKYFUXDz4v5WHYU,5
80
- pyhw-0.3.5.dist-info/RECORD,,
80
+ pyhw-0.3.7.dist-info/LICENSE,sha256=hJs6RBqSVCexbTsalkMLNFI5t06kekQEsSVaOt_-yLs,1497
81
+ pyhw-0.3.7.dist-info/METADATA,sha256=5JP-ZHYGRhokv-BldBT2M0gtUAmD5NrIh2Y-EQNLFYQ,4041
82
+ pyhw-0.3.7.dist-info/WHEEL,sha256=cVxcB9AmuTcXqmwrtPhNK88dr7IR_b6qagTj0UvIEbY,91
83
+ pyhw-0.3.7.dist-info/entry_points.txt,sha256=q-AB8im_QahpmNrmy4aPTJRGi0LlbNlnI3kF7s6pKss,44
84
+ pyhw-0.3.7.dist-info/top_level.txt,sha256=7Inxvxt1TngEricKZEex9_WJZS3DbKYFUXDz4v5WHYU,5
85
+ pyhw-0.3.7.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (74.0.0)
2
+ Generator: setuptools (74.1.2)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
File without changes